加入收藏 | 设为首页 | 会员中心 | 我要投稿 好传媒网 (https://www.haochuanmei.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 交互 > 正文

史上最全Java面试题整理(附参考答案)

发布时间:2020-12-24 10:36:47 所属栏目:交互 来源:网络整理
导读:下列面试题都是在网上收集的,本人抱着学习的态度找了下参考答案,有不足的地方还请指正,更多精彩内容可以关注我的微信公众号:Java团长 1、面向对象的特征有哪些方面? 抽象:将同类对象的共同特征提取出来构造类。 继承:基于基类创建新类。 封装:将数据

面试题 - 说出下面代码的运行结果。(此题的出处是《Java编程思想》一书)

<span class="hljs-function"&gt;<span class="hljs-keyword"&gt;public <span class="hljs-keyword"&gt;static <span class="hljs-keyword"&gt;void <span class="hljs-title"&gt;main<span class="hljs-params"&gt;(String[] args) 
    <span class="hljs-keyword"&gt;throws Exception {
    <span class="hljs-keyword"&gt;try {
        <span class="hljs-keyword"&gt;try {
            <span class="hljs-keyword"&gt;throw <span class="hljs-keyword"&gt;new Sneeze();
        } 
        <span class="hljs-keyword"&gt;catch ( Annoyance a ) {
            System.out.println(<span class="hljs-string"&gt;"Caught Annoyance");
            <span class="hljs-keyword"&gt;throw a;
        }
    } 
    <span class="hljs-keyword"&gt;catch ( Sneeze s ) {
        System.out.println(<span class="hljs-string"&gt;"Caught Sneeze");
        <span class="hljs-keyword"&gt;return ;
    }
    <span class="hljs-keyword"&gt;finally {
        System.out.println(<span class="hljs-string"&gt;"Hello World!");
    }
}

}

<span class="cke_reset cke_widget_drag_handler_container"><img class="cke_reset cke_widget_drag_handler" title="点击并拖拽以移动" src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" alt="" width="15" height="15" data-cke-widget-drag-handler="1">

52、List、Set、Map是否继承自Collection接口?

答:List、Set 是,Map 不是。Map是键值对映射容器,与List和Set有明显的区别,而Set存储的零散的元素且不允许有重复元素(数学中的集合也是如此),List是线性结构的容器,适用于按数值索引访问元素的情形。

53、阐述ArrayList、Vector、LinkedList的存储性能和特性。

答:ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector中的方法由于添加了synchronized修饰,因此Vector是线程安全的容器,但性能上较ArrayList差,因此已经是Java中的遗留容器。LinkedList使用双向链表实现存储(将内存中零散的内存单元通过附加的引用关联起来,形成一个可以按序号索引的线性结构,这种链式存储方式与数组的连续存储方式相比,内存的利用率更高),按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。Vector属于遗留容器(Java早期的版本中提供的容器,除此之外,Hashtable、Dictionary、BitSet、Stack、Properties都是遗留容器),已经不推荐使用,但是由于ArrayList和LinkedListed都是非线程安全的,如果遇到多个线程操作同一个容器的场景,则可以通过工具类Collections中的synchronizedList方法将其转换成线程安全的容器后再使用(这是对装潢模式的应用,将已有对象传入另一个类的构造器中创建新的对象来增强实现)。

(编辑:好传媒网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读