JAVA算法面试经典100题,java面试题

1,java面试题select Fclass,Max(Fscore) from table1 group by Fclassselsect Fclass,Fscore from table1 where FId=max(Fscore)select Fclass,max(Fscore)from table1group by Fclass
2 , JAVA经典面试题有哪些Forward和Redirect代表了两种请求转发方式:直接转发和间接转发 。直接转发方式(Forward),客户端和浏览器只发出一次请求,Servlet、HTML、JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于一个每个信息资源是共享的 。间接转发方式(Redirect)实际是两次HTTP请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的 。举个通俗的例子:直接转发就相当于:“A找B借钱,B说没有,B去找C借,借到借不到都会把消息传递给A”;间接转发就相当于:"A找B借钱,B说没有,让A去找C借" 。
3,JAVA常见面试题之Forward和Redirect的区别直接转发方式(Forward),客户端和浏览器只发出一次请求,Servlet、HTML、JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于每个信息资源是共享的 。间接转发方式(Redirect)实际是两次HTTP请求 , 服务器端在响应第一次请求的时候 , 让浏览器再向另外一个URL发出请求,从而达到转发的目的 。Forward是请求转发 ,一次请求 。是request对象的方法request.requestDispather.forward(服务器端的绝对路径);转发之后地址栏不会发生变化 。内部转发,不能转发到外部链接,比如百度 。redirect是重定向,两次请求 。是resoponse对象的方法 , respons.sendRedirect(客户端的绝对路径).转发之后,地址栏变化,可以是外部链接 。但是不能传递request作用域中的数据 。扩展:客户端的服务路径比起服务器端的绝对路径 , 不同之处在于服务器端的绝对路径不写项目名 。【JAVA算法面试经典100题,java面试题】
4 , java 线程面试题我不知道你是不是这个意思,thread1,thread2两个线程每次让j增加1 , thread3,thread4两个线程每次让j减少1,四个线程每个都调用250次相关加减一操作 。最终j的结果都是100.下面程序 , 总计会打印出1000个数,不管怎么样最后一个数永远是100,即j的终值永远是100,为了看中间结果运行过程我加了sleep , 但无关紧要 。你看看符合你要求不?就像楼上说的,启动1000条线程不是很明白,不一致的继续讨论package com.kalort;public class ThreadTest public static void main(String[] args)Operator operator = new Operator();Thread thread1 = new IncreaseThread(operator);Thread thread2 = new IncreaseThread(operator);Thread thread3 = new DecreaseThread(operator);Thread thread4 = new DecreaseThread(operator);thread1.start();thread2.start();thread3.start();thread4.start(); }}class IncreaseThread extends Thread private Operator operator; public IncreaseThread(Operator operator)this.operator = operator; } public void run()for (int i = 0; i < 250; i++)tryThread.sleep((long)(Math.random() * 100));}catch (InterruptedException e)e.printStackTrace();}operator.increase();} }}class DecreaseThread extends Thread private Operator operator; public DecreaseThread(Operator operator)this.operator = operator; } public void run()for (int i = 0; i < 250; i++)tryThread.sleep((long)(Math.random() * 100));}catch (InterruptedException e)e.printStackTrace();}operator.decrease();} }}class Operator private int j = 100; public synchronized void increase()while (100 != j)trywait(); // 如果另外线程还没减一就等待}catch (InterruptedException e)e.printStackTrace();}}j++;System.out.println(j);notify(); // 通知另外线程已经加一了 。} public synchronized void decrease()while (100 == j)trywait();}catch (InterruptedException e)// TODO Auto-generated catch blocke.printStackTrace();}}j--;System.out.println(j);notify(); }}1,互斥条件 2,请求和保持条件 3 , 不剥夺条件 4,环路等待条件你把其中一个条件解除了就能解决死锁这道面试题 我上次去公司我就是这样回答了 过了~5,java面试笔试题去百度文库 , 查看完整内容>内容来自用户:素颜780519下面都是我自己的答案非官方,仅供参考,如果有疑问或错误请一定要提出来,大家一起进步啦~~~1.下面哪些是Thread类的方法()A start()B run()C exit()D getPriority()答案:ABD解析:看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/,exit()是System类的方法,如System.exit(0) 。2.下面关于java.lang.Exception类的说法正确的是()A继承自ThrowableB SerialableCD不记得,反正不正确答案:A解析:Java异常的基类为java.lang.Throwable , java.lang.Error和java.lang.Exception继承Throwable,RuntimeException和其它的Exception等继承Exception,具体的RuntimeException继承RuntimeException 。扩展:错误和异常的区别(Error vs Exception)1) java.lang.Error: Throwable的子类,用于标记严重错误 。合理的应用程序不应该去try/catch这种错误 。绝大多数的错误都是非正常的,就根本不该出现的 。java.lang.Exception: Throwable的子类,用于指示一种合理的程序想去catch的条件 。即它仅仅是一种程序运行条件 , 而非严重错误,并且鼓励用户程序去catch它 。2) Error和RuntimeException及其子类都是未检查的异常(unchecked exceptions),而所有其他的Exception类都是检查了的异常(checked exceptions).checked exceptions: 通常是从一个可以恢复的程序中抛出来的,并且最好1.JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能 。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架 , Struts便应运而生 。经过长达五年的发展,Struts已经逐渐成长为一个稳定、成熟的框架,并且占有了MVC框架中最大的市场份额 。但是Struts某些技术特性上已经落后于新兴的MVC框架 。面对Spring MVC、Webwork2 这些设计更精密,扩展性更强的框架 , Struts受到了前所未有的挑战 。但站在产品开发的角度而言,Struts仍然是最稳妥的选择 。Struts2.0为其它框架提供了更好的集成 。使得与Spring的集成非常的容易 。2.Struts的工作流程:在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象当ActionServlet接收到一个客户请求时,将执行如下流程.-(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;-(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象,就表示表单验证成功;-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;-(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给ActionForward对象指向的JSP组件;-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户; 3.在struts配置文件中配置具体的错误提示,再在FormBean中的validate()方法具体调用 。4.(1) 对JDBC访问数据库的代码做了封装 , 大大简化了数据访问层繁琐的重复性代码 。(2) Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现 。他很大程度的简化DAO层的编码工作(3)hibernate使用Java反射机制,而不是字节码增强程序来实现透明性 。(4)hibernate的性能非常好,因为它是个轻量级框架 。映射的灵活性很出色 。它支持各种关系数据库,从一对一到多对多的各种复杂关系 。5.原理: (1).读取并解析配置文件 (2).读取并解析映射信息 , 创建SessionFactory (3).打开Sesssion (4).创建事务Transation(5).持久化操作 (6).提交事务 (7).关闭Session (8).关闭SesstionFactory 6.Hibernate的最大的好处就是简化数据库的操作,允许你的代码以对象模式来访问数据库内容,比如通常我们找一个User的资料需要select出所需要的资料,而通过hibnate我们可以把这个User的资料作为一个对象来看待 ,通过User.getName()或者User.getId()等操作来获得,这样就完全统一了上层JAVA或者C#等OO语言中对于数据库的非OO操作的不和谐了. 另外对于复杂的表和表之间的关联我们也不用去使用复杂的Select等SQL来操作,而使用对象可以方便获得, 比如多对多关系某用户属于的部门的名称,虽然底层数据库使用了3个表的主键关联操作, 但是我们可以通过User.getDep().getName()来简单的获得,这个就是持久化对象的好处了 7.(1)、spring能简化企业级开发,spring可以用简单的java bean来代替实现复杂的EJB 。(大部分情况下)(2)、spring是一个轻量级的IOC和AOP框架,可以spring的IOC实现松耦合,而作为一个AOP框架他又能分离系统服务,实现内聚开发 (3)、spring是非侵入式,基于spring的系统可以不依赖于spring的类 。良好的spring运用可以使程序代码清晰 , 容易维护,容易测试 。8.Spring是个很不错的框架 。内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产 , 这其实就是利用java里的反射 反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时 , 跟xmlSpring的配置 文件来动态的创建对象,和调用对象里的方法的。Spring还有一个核心就是AOP这个就是面向切面编程 , 可以为某一类对象 进行监督和控制(也就是 在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能 。这些都是通过 配置类达到的 。Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明 管理的(Spring根据这些配置 内部通过反射去动态的组装对象)要记?。篠pring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能 。Spring里用的最经典的一个设计模式就是:模板方法模式 。(这里我都不介绍了 , 是一个很常用的设计模式)Spring里的配置是很多的,很难都记?。?但是Spring里的精华也无非就是以上的两点,把以上两点跟理解了 也就基本上掌握了Spring. 9.(1).spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作 。(2).DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller. (3).DispatcherServlet请请求提交到目标Controller (4).Controller进行业务逻辑处理后,会返回一个ModelAndView (5).Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象 (6).视图对象负责渲染返回给客户端 。struts1.x?struts2.x?唉 , 是个人都要问一下SSH也不知道面试你的人自己会不会唉 这就是世道很详细,我不用补充了

    推荐阅读