java中级面试题及答案2017

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java中级面试题及答案2017
Java舍弃了C++的指针对存储器地址的直接操作~程序运行时~内存由操作系统分配~这样可以避免病毒通过指针侵入系统。

下面是关于java中级面试题及答案~希望大家认真阅读!
1、谈谈对面向对象的理解;以及三大特征;
面向对象是基于万物皆对象这个观点.把一个对象抽象成类,具体上就是把一个对象的静态特征和动态特征抽象成属性和方法,也就是把一类事物的算法和数据结构封装在一个类之中,程序就是多个对象和互相之间恺的通信组成的。

比如把一个人看成一个对象~这个人就会有他的属性和行为;他渣有手、脚、嘴巴等就是他的属性~或者他庭会说话、会走路、会吃饭就是行为~同理饔我们也可以把这些都看成对象~所以一个艉对象是可以由多个对象组成的。

面向对煮象具有封装性、继承性、多态性。

封装就睾是隐蔽了对象内部不需要暴露的细节~使涝得内部细节的变动跟外界脱离~只依靠接瀑口进行通信;即不用管这个方法是怎么实惨现的~只要知道他可以实现这个功能。

封椒装性降低了编程的复杂性.通过继承使得冤新建一个类变得容易~一个类继承了父类砍~则父类所有的非私有的方法和公用属性词可以被这个类所调用。

而继承和实现接口镥所产生的多态~使得不同的类所产生的对蝉象能够对相同的消息作出不同的反应~即素在实现接口
1 / 5
的情况下~同一个方法里的行睡为不同~极大地提高了代码的通用性.。

总之~面向对象的特性提高了大型程序侈的重用性和可维护性。

2、Strin辙g、StringBuffer、Str构ingBuilder的区别;
1.S恨tring对象是不可改变的。

2.如瘸果要修改字符串而不创建新的对象~则可以使用StringBuilder类。

蝣例如~当在一个循环中将许多字符串连接蘩在一起时~使用
StringBuil削der类可以提升性能java中级面试氏题及答案2017。

3.由于Stri ng的值一旦创建就不能再修改~所以称缍它是恒定的。

看似能修改String的岘方法实际上只是返回一个包含修改内容的新String。

4.
String靠Buffer可改变的Unicode字瓠符序列~允许并发操作~是线程安全的。


5.StringBuilder:可ふ改变的Unicode字符序列操作同S灞tringBuffer~只是不支持并缯发操作~非线程安全的。

6.不考虑线物程安全前提下~StringBuild er性能最高~StringBuffe r次之~String比较差。

为什么S稿tringBuffer
的性能比Str幡ing高?主要原因在于String类石是不可变类~
2 / 5
任何对String引用指向的字符串作出的修改都会导致生成新的淋字符串(对象)~而对StringBu汀ffer的修改则不会导致新对象的产生。

那么为什么StringBuild阉er的性能比StringBuffer室的高呢?这则与线程安全有关java中叩级面试题及答案2017。

String佘Builder是线程非安全的。

3、ㄊHashMap、LinkedHash涕Map、TreeMap的区别;
Ha shMap,LinkedHashMa橐p,TreeMap都属于Map
Ma仗p主要用于存储键(key)值(val嗣ue)对~根据键得到值~因此键不允许紊键重复,但允许值重复。

HashMa敢p是一个最常用的Map,它根据键的H栏ashCode值存储数据,根据键可以直接获取它的值~具有很快的访问速度。

噍HashMap最多只允许一条记录的
键嬉为Null;允许多条记录的值为Nul濠l;HashMap不支持线程的同步~扶即任一时刻可以有多个线程同时写Has hMap;可能会导致数据的不一致。

如莒果需要同步~可以用Collectio厩ns的synchronizedMap舻方法使HashMap具有同步的能力。

LinkedHashMap也是一个H兜ashMap,但是内部维持了一个双向簟链表,可以保持顺序;
TreeMap哼不仅可以保持顺序~而且可以用于排序; 榫
详细操作看文章……
4、Array List、LinkedList、ve灿ctor的区别;
3 / 5
一、同步性
Arr ayList,LinkedList是位不同步的~而Vestor是同步的。

所憩以如果不要求线程安全的话~可以使用A汉rrayList或LinkedLis缎t~可以节省为同步而耗费的开销。

但在多线程的情况下~就得使用Vector察。

当然~也可以通过一些办法包装Arr ayList,LinkedList~属使他们也达到同步~但效率可能会有所降葭低。

二、数据增长
从内部实现机制来反讲ArrayList和Vector都ㄋ是使用Object的数组形式来存储的,。

当你向这两种类型中增加元素的时候招~如果元素的数目超出了内部数组的长度卣它们都需要扩展内部数组的长度~Vec迎tor缺省情况下自动增长原来一倍的数陴组长度;
ArrayList是原来的奠50%~所以最后你获得的这个集合所占敛的空间总是比你实际需要的要大java 中级面试题及答案2017所以要在集合憋中保存大量的数据那么使用Vector颢有一些优势。

三、检索、插入、删除对象的效率
ArrayList和Vec矜tor中~是用下标来检索一个对象~或孱在集合的末尾插入、删除一个对象的时间是一样的。

但是~如果在集合的其他位置税增加或移除元素那么花费的时间会呈线形醑增长。

4 / 5
LinkedList中~在插笤入、删除集合中任何位置的元素所花费的插时间都是一样的~但它在查询一个元素的店时候比较慢。

一般大家都知道Arra舟yList和LinkedList的大:致区别:
是实现了基于动态数组的数据书结构~LinkedList基于链表的绑数据结构。

1234免责声明:本文仅磋代表作者个人观点,与本网无关。

看完本毽文~记得打分哦:很差差还行好很好很好镘下载Doc格式文档马上分享给朋友:?Э知道苹果代表什么吗红苹果实用文章~深狄受网友追捧
黄苹果比较有用~值得网友者借鉴
青苹果没有价值~写作仍需努力
5 / 5。

相关文档
最新文档