由于公司领导脑子进水了之前裁员比较狠,导致部门80%的技术人员都毕业了,现在新的产品线要上马,严重缺人手,又开始大量的招聘,我最近负责公司的Java面试工作,通过半年的人员筛查,我发现多数技术人员虽然能快速进入开发,但总体上技术基础不扎实,属于快枪手类型。如下是我经常面试和技术人员讨论的几个方面。
继承、多态和封装。
继承是为了使代码最大限度的提高重用性。
多态是为了在应对不断变化的需求。
封装是为了隐藏实现细节,提高开发效率。
在Java 6中Arrays.sort()和Collections.sort()使用的是MergeSort,而在Java 7中,内部实现换成了TimSort,其对对象间比较的实现要求更加严格.
可变与不可变:String不可变,每一次执行“+”都会新生成一个新对象,所以频繁改变字符串的情况中不用String,以节省内存。
是否多线程安全:StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。StringBuffer和String均线程安全。
两个类型各自的继承父类不一样,HashMap容许一个空的键值对存,而HashTable是决对不容许有空值的。HashTable