java面试必知100个问题
java面试必问题你在项目中碰到过什么问题?
java面试必问题你在项目中碰到过什么问题?
『如果让你来做HashMap扩容,如何实现在不影响读写的情况下扩容?』我觉得逼格高,不是体现在问题多刁钻,知识点多深,而是一个非常明确,无歧义的问题,能考察出面试者多方面的能力。这个问题背后:
1.了解java中,HashMap的实现;如果一个面试者了解这一点,说明至少他关心过java提供的数据类型的实现,甚至极可能看过源码,他应该不会是一个纯粹的苦力。
2.知道『不影响读写的情况下扩容』是什么含义,说明他在工作中了解多线程的相关知识。
3.如果他能提到ConcurrentHashMap中的相关内容,说明他日常编程中有使用到concurrent包,可以继续聊聊,否则他对多线程的使用可能非常初级。
4.如果他能提出一些解决方案,即使不完整,也能看出他对类似cas等算法、分布式一致性等问题的了解程度。这问题是面试官问我的···
Java面试官该如何快速判断程序员的能力?
0、本人被别人面过,也当过面试官,说下自己的理解吧。
1、程序开发是动手能力要求较高的职业,没有一家公司愿意花钱培养一个新手,招你就是让你来了解决问题,不能解决问题反而制造问题,我相信公司跟你说拜拜不远了。
2、程序员也需要缜密的逻辑思维,需要根据需求实现功能的同时,也要考虑需求中未提到的异常情况。
3、这个行业的技术发展日新月异,所以也需要不断学习的能力,这样才能不被淘汰。
所以,我觉得面试程序员还是要从以下方面进行。
1、实际项目经验做过的项目代表着你的历史功勋,代表着你的技能树有多高。因为完成一个项目的开发中间遇到的问题会很多,无论是需求、技术实现还是上线后运维。种种问题的解决就对应着一个人的实战经验的积累,无论是对人还是对事。
工作就是与人交流,在合作中完成项目。
所以那些没有经验的,混水摸鱼的只要一面就知道真不真实。
比如根据简历项目问下遇到的问题,怎么解决的等之类的。问题就是考察下项目经验的真实可靠性。
2、逻辑能力现在新的行业风口很多,意味着有很多未知的场景逻辑需要去实现。所以一个人的逻辑思维能力往往代表着解决问题的方法以及对未知事物的探索欲望。
企业需要的不是一个搬运工,需要的是创造性、有想法的员工。
所以现在的面试环节可以加入点逻辑题,这些问题和技术无关。
3、学习能力行业的独特性需要从业者不断的学习新技能,不断的对自己的技术体系进行迭代更新。
同时也需要认知不断提高,不断创新,总有一个更优的解决方案再等着。
所以可以考虑面试的时候给一个场景题,让求职者去实现,看实现的方案是否最优。是否有更好的,空间,时间等复杂度更低的。
总之,开发是和手艺活,招人的质量越优,那么在日后的项目进程中会更顺利。