2015年java面试题

来源:互联网 发布:遇到淘宝广告弹幕 编辑:程序博客网 时间:2024/05/21 10:17

本人是天津师范大学研究生一年级学生,为了增进自己的Java编程水平和思想,四处寻求最好的实习和工作机会。以下就是本人的面试经历:

1.hashtable和hashmap区别

实话说拿到这个题目的时候我也就蒙了,基本上也没怎么使用过hashtable。后面通过查找一些比较靠谱的网站得出答案,可供参考。

(1)HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。

(2)HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。

(3)HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。

(4)HashTable使用Enumeration,HashMap使用Iterator。 以上只是表面的不同,它们的实现也有很大的不同。(5)HashTable中hash数组默认大小是11,增加的方式是old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

(6)哈希值的使用不同。


2.对hashmap进行遍历

a.对key和value都遍历

HashMap<String,String> hm = new HashMap<>();

for(Entry entry:hm.entrySet()){

entry.getKey(); entry.getValue();

}

b.对key遍历

HashMap<String,String> hm = new HashMap<>();

for(String key:hm.keySet()){...}

c.对value遍历

HashMap<String,String> hm = new HashMap<>();

for(String value:hm.values()){ ...}


3.实现多线程的三种方式

(1)继承Thread

(2)实现Runnable接口

(3)使用ExecutorService、Callable、Future实现有返回值的多线程结果


4.StringBuffer和StringBuilder区别

StringBuffer线程安全,效率较低

StringBuilder线程不安全,效率较高


5.StringBuffer中insert方法和append方法区别。例如append(x等同于)什么

StringBuffer中insert方法有两个参数,可以任意位置进行添加,而append方法只能添加到尾部。


还有两道考算法逻辑的题目(我也没能答出来,要是有答出来的可以留言给我)

第一题:有十二个硬币,其中有一个是伪币(除了重量不一样以为其他都相同),用天平称三次找出伪币。

第二题:有一名老师,他有三个聪明的学生。有一天,老师将三名学生的额头上贴了三个纸条,纸条上面写上了正整数。三名同学只能看见其他两名同学额头纸条上的数字,却看不见自己额头上的数字。但是,这三个数字中其中有某两个数字的和等于第三个数字。老师问第一个同学,你知道你额头纸条上的数字吗?第一个同学回答不知道。继而,问第二个同学也,你知道你额头纸条上的数字吗?第二个同学回答不知道。最后,老师问第三个同学,第三个同学回答是144。你知道其他两名学生额头上的数字吗?

0 0
原创粉丝点击