本着理论结合实践的方法,我一般都不问上面这种纯知识和理论性问题,而是让他写一段程序来证明HashMap是线程不安全的。然后,再让改一下这个程序,使之线程安全。
在面试等情况下,如果有条件,最好能给被考核人一台可以上Google的电脑,然后给其一段自己的空间和时间,比如一个人在小会议室里10-20分钟。然后,另接一台显示器,同步观察他在电脑上是怎么做的。由此可以看出他解决问题的方法、思路。当然,另接显示器这事儿,得提前知会对方。
或者,如果为了省时间,拿出写好的线程不安全的程序,让其说出为啥会有这样奇怪的现象。
以此类推,可以让写证明List里存储的是引用还是对象实体的程序,写证明弱引用强引用区别的程序,写证明某种设计模式效果的程序……
这方法,不仅可以检查基础知识,还可以检查思维能力。如果对知识理解得不够透彻,这种证明程序其实是挺难写的……
这方法更有威力的地方在于,你可以不是很懂Java,仍然可以大致衡量出对方的水平。
比如,你看不懂对方的程序,你完全可以作为一个学生去请教。真正对概念理解透彻的人,是懂得如何用浅显易懂的方式把一个知识讲明白的,他能把飘在空中的概念一路清清楚楚地给你讲到落在你的脚边,让你觉得唾手可得。能把概念讲到这种程度的人,通常在相关领域不是一般的高手。
我面试的时候,有时候会装傻,故意看看对方能否讲明白。遇到一知半解的,会把他自己绕进去,很好玩;遇到高手,真的获益匪浅。当然,也有时候是真不懂,虚心学习,但一边学习一边提问,基本就可以知道对方的水平了。
从面试的角度讲,一个能找到比自己强的人才的方法才是最有前途的方法。否则,只能招到比自己水平低的人,那公司的未来就只能局限于领导的能力水平了……
如果是做业务为主的,那侧重点在于如何建立业务模型,如何应对业务变更的可能,如何处理版本分裂和制定迁移升级计划。
如果是做相对低层的技术优化的,那侧重点在于对性能、被Java封装的底层技术的细节、OS、Network等基础知识的掌握程度。掌握得越细致,越好。
更多武汉IT培训相关资讯,请扫描下方二维码