因为面试时的问题和工作实操差别很大。
以Java开发而言。工作,最重要的效率,要尽可能快地把活做完,其次是可靠,产品功能符合预期,不出妖蛾子。在这两个约束之下,大家会尽可能使用 简洁方案,代码越少越好,尽可能使用简洁的语言特性,一眼能看懂逻辑,一眼看清Bug。同时,大多数的日常工作是在业务层,对JVM原理层要求不多。
面试则不然,全面考察知识和技能的深度广度。一个比较常见的方式是,面试官从简历上挑一个项目,从需求分析,到产品架构,实现细节,部署监控,JVM调优,故障排查,一直问到GC算法,数据结构实现,问极限深度为止。这些,其实不是日常工作的场景。
比如说,“什么是双亲委派机制?介绍一些运作过程,双亲委派模型的好处; 什么情况下我们需要破坏双亲委派模型”。
比如说,“class 文件结构是如何解析的”。
比如说,“解释各种锁:自旋锁,偏向锁,轻量级锁,可重入锁,公平锁,非公平锁,乐观锁,悲观锁”
...
这些问题,不经过充分的准备,很难在第一次遇到的时候回答出清晰准确的答案。
各大厂、中厂、小厂的面试题风格不尽相同,而且会随时间变动。
因此,在海投简历的同时,你需要一个详细的多年的大中小厂的面试题题库。如果这个题库还能提供一些重要问题的答案就更好了。
比如说,面试官问你,“JAVA 有几种基本数据类型,分别占用几个字节”,你可以回答,有8个基础数据类型,4整(byte,short,int,long)2浮(float,double)1符(char)1布(boolean),字节数分别是12484821。还可以进一步解释 值类型和引用类型的区别,int和Integer的区别,以及Java是否真正有值类型的分析,会为面试增加不少亮点。
搜集面试题是个耗力的工作:首先是数据源比较多,CSDN、51CTO、知乎、脉脉...; 其次是整理规范化可跟踪的题目系统; 再次是职位领域,Java、C/C++、Python、PHP、Scala、OC,机器学习,计算机视觉等等; 再次是去重--根据题频整理出一份精简题库可以节省很多时间; 再次是精准答案。
拭目以待吧。
http://www.chaojimianshiti.com
原文地址:https://blog.51cto.com/14264571/2371625