>>>>>Java中级开发工程师知识点归纳
标签:>>>>JAVA>>>>>>>>面试技能>>>>>>>>
2016-08-1817:563055人阅读评论(0收藏举报
分类:
面试题(4)JAVA(20)
目录(?[+]
一、版本更新说明:
2015.03.09--------文章发布
2015.03.11--------添加了JavaIO机制中的种类和应用场景的解释,添加了Java内存模型的相关知识点2015.03.13--------文章按技术划分,增加J2EE规范的解释2015.04.25--------增加对LRU缓存设计的描述
2015.04.26--------增加对比较流行的开源技术和开源框架的介绍,对于这些技术的理解或使用可以增加自己的竞争优势,同时扩展自己的眼界2015.04.27--------增加对数据库事务的描述
二、正文
(一)Java
1.接口和抽象类的区别
①抽象类里可以有构造方法,而接口内不能有构造方法。②抽象类中可以有普通成员变量,而接口中不能有普通成员变量。
③抽象类中可以包含非抽象的普通方法,而接口中所有的方法必须是抽象的,不能有非抽象的普通方法。④抽象类中的抽象方法的访问类型可以是public,protected和默认类型,但接口中的抽象方法只有public和默认类型。
⑤抽象类中可以包含静态方法,接口内不能包含静态方法。
⑥抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是publicstatic类型,并且默认为publicstatic类型。⑦一个类可以实现多个接口,但只能继承一个抽象类。
⑧接口更多的是在系统框架设计方法发挥作用,主要定义模块之间的通信,而抽象类在代码实现方面发挥作用,可以实现代码的重用。
2.Java虚拟机的运行时数据区有几块?线程私有和线程共享区域有哪些?①程序计数器:线程私有,当前县城执行的字节码的行号指示器。
②虚拟机栈:线程私有,存放基本数据类型、对象引用和returnAddress类型。③本地方法栈:为虚拟机使用到的Native方法服务。
④Java堆:线程共享,存放对象的实例,也是GC回收器管理的主要区域。
>>>>⑤方法区:线程共享,存放已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据。⑥运行时常量池:方法区的一部分,存放编译期生成的各种字面量和符号引用。
⑦直接内存:不是虚拟机运行时数据区的一部分,也不是Java虚拟机规范中定义的内存区域,容易引起OOM异常,NIO会调用,不受Java堆大小的限制。3.HashMap和HashTable区别?
①Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现。②Hashtable的方法是同步的,而HashMap的方法不是,因此HashTable是线程安全的,但是代码的执行效率上要慢于HashMap。
③HashMap允许空值和空键,但是HashTable不可以。
④HashMap非同步实现Map接口,是一个“链表数组”的数据结构,最大承载量是16,可以自动变长,由Entry[]控制(key,value,next),hashCode()判断key是否重复。
⑤建议需要做同步,使用ConcurrentHashMap,降低了锁的粒度。在hashMap的基础上,ConcurrentHashMap将数据分为多个segment,默认