java面试题解析
1.内存包括栈(存放基本变量,对象引用),堆(存放对象以及引用变量)和静态区(存放常量)
2.数组有length属性,String有length方法
3.构造器不能被重写(方法名参数返回值都不变),但可以被重载(参数类型,个数,顺序至少有一个不同)
4.两个对象如果相同,那hashcode值一定相同,反之,若hashcode值相同,则对象不一定相同
5.string类被final修饰,不可被继承
6.stringbuffer被synchronized关键字修饰,所以安全性大于stringbuilder,效率也比较慢
7.重载不能根据返回值进行区分,原因
函数的返回值只是作为函数运行之后的一个“状态”
他是保持方法的调用者与被调用者进行通信的关键。
并不能作为某个方法的“标识”----知乎
8.jvm加载class文件的原理
调用到某个类时,jvm确保这个类已经被加载(创建一个字节数组存放class文件,并创建对应的class对象)
,连接(验证,准备,解析)
,初始化(如果父类没有被初始化,则先初始化父类,如果有初始化语句,依次执行这些语句)
类加载是有许多类加载器实现的(双亲委派机制,根加载器为bootstrap加载器)
9.抽象类vs接口
抽象类是部分抽象,接口则是完全抽象
10.java垃圾回收机制会有内存泄露,如hibernate中的一级缓存
11.静态方法不能调用非静态方法,原因是在调用非静态方法时,有可能依赖的对象未实例化
12.创建对象构造器的调用顺序为先加载静态成员,再构造父类构造器,再加载非静态成员,再构造子类构造器
13.字符串反转:reverse方法
14.常见的异常:空指针异常,算术异常,类转换异常,数组越界异常,安全异常
15.sleep和wait方法的区别:
sleep方法(属于线程的方法)不释放当前获得的锁,wait方法(属于object方法)释放锁并进入等待池,当调用notify或notifyall方法时才会重新竞争
16.sleep和yield方法区别:
sleep方法不考虑线程运行的优先级,yield方法会执行相同的优先级或者更高级别的优先级
线程执行完sleep方法会进入阻塞状态,执行完yield方法会进行就绪状态
sleep方法需要抛异常,yield方法不需要抛异常
17.synchronized方法与lock方法不同地方:lock可以完成synchronized实现的功能,但是synchronized方法是自动释放对象锁,而lock方法则是手动释放锁
18.jdbc连接步骤:加载驱动,创建连接,创建sql,执行sql,获取结果,关闭连接
19.产生死锁的条件:互斥条件,请求与保持条件,不剥夺条件,循环等待条件
20.事务的一些名词:
脏读,a事务读取b事务(先执行)未提交的数据,b事务回滚(强调),则a事务读到的数据就是脏读
不可重复读,a事务先读取数据,读取过程中b事务提交(强调)了,则a此时的状态就属于不可重复读
幻读,a执行两次查询,b事务在此中间修改了查询的值,则a第二次查出的数据就属于幻读
第一类丢失更新,a事务执行过程中,将b事务提交的数据给覆盖掉了(最后a事务撤销)
第二类丢失更新,a事务执行过程中,将b事务提交的数据给覆盖掉了(最后a事务提交)
21.设计模式:
工厂模式
代理模式
适配器模式
单例模式
饿汉模式,懒汉模式,构造方法要是私有的
22.java算法和数据结构
23.servlet的生命周期
Web容器加载Servlet并将其实例化后,Servlet生命周期开始,容器运行其init()方法进行Servlet的初始化;请求到达时调用Servlet的service()方法,service()方法会根据需要调用与请求对应的doGet或doPost等方法;当服务器关闭或项目被卸载时服务器会将Servlet实例销毁,此时会调用Servlet的destroy()方法
24.jsp的四种作用域,page,request,session,application
25.实现会话跟踪的具体方式
1.url重写,在后面添加一个标识id
2.表单隐藏域,在表单中嵌入标识
3.使用cookie,cookie分两种,一种存放于窗口中,浏览器关闭,cookie消失。另一种则存储在临时文件中,并设置存在时间,会话对象存在于服务器中,cookie存在于浏览器中cookie大小限制为4k,浏览器只允许一个站点最多存放20个cookie
4.使用httpsession
26.过滤器和拦截器的区别
27.监听器
针对jsp的四种作用域(request除外)对象的销毁或创建进行监听
28.session设置超时时间可在web.xml中定义
29.SOA,面向服务的架构,是一种思想,webservice属于其中之一
SOAP,简单对象访问协议,WSDL,web服务描述语言,UDDI,统一描述,开发和集成
30.Java领域的Web Service框架