作为一名技术总监,我管理的技术团队有100多人,面试的Java程序员不要太多。
不同的面试官,面试的要求也不太一样,例如:有的要求表达好、会沟通;有的要求技术好、能直接上手撸代码,搞项目;有的要求人踏实、稍微带一带,能干活就行;有的要求。。 。
我的面试过程基本都是问答形式,想当年我去参加面试的时候,我非常非常非常不喜欢笔试。所以我现在也不给别人安排笔试。
我面试不会随便乱问,提问是有条理的。接下来就聊聊,我经常会提的一些问题,以及问题背后的一些想法吧。
Q:请简单做一下自我介绍?
A:上来问这么个问题,简历上都有,还问啥,难道脑袋瓦特啦?其实这会儿,主要让候选人平复一下心情,也默默暗示候选人面试正式开始啦(坏笑);① 看看候选人会不会滔滔不绝说个没完没了「时间掌控能力」;② 看看候选人会不会语无伦次「是不是没准备好或者表达能力有欠缺」。
Q:请针对做过的拿手项目做一下详细介绍?
A:咋问这么个问题。。。主要通过候选人项目介绍,围绕负责实现的功能模块,引入后续的面试问题。如果候选人没说好,可能就没法很好地引导后续问题啦,候选人的话语权以及控制权可都在这儿体现啦。
Q:请针对项目中用到的技术做一下介绍?
A:但凡项目亲身做过,肯定不至于冷场。主要考察候选人以往的项目的技术栈。如果招聘的岗位比较紧急,入职后就要上手干活,技术栈的匹配度,会稍显重要。
Q:简单介绍 Spring?简单介绍 SpringMVC 的工作流程?
A:主要结合候选人回答的项目中用到的技术进行,仅以此举栗子展开。主要考察候选人:① 能否采用通俗易懂的方式,解释何为 IOC 和 AOP ;② 能否结合实际项目进行展开阐述;③ 以及各自的底层实现原理。能够回答出原理的,并自己动手编码模拟过 IOC 、AOP 的会加分。
Q:简单介绍 MyBatis 以及 MyBatis 的使用注意事项?
A:主要考察候选人对 ORM 框架的使用程度。能够回答出 SQL 注入预防会加分。
Q:Redis 常用的数据结构有哪些?Redis 中 setnx 与 set 啥区别?结合项目谈谈 Redis 的应用场景?
A:主要考察候选人对 Redis 的使用程度,以及Redis掌握的深度。能够回答出 setnx 底层实现方式会加分。
Q:简单谈谈数据库索引?「数据库方面,仅以此为栗子」
A:主要考察候选人对数据库索引的分类,以及底层实现方式的了解程度「能够回答出优缺点依然加分」
Q:谈谈 Object 中常用的方法?「老生常谈」
A:这是一个非常常见的,基础知识问题。对于接触过Java的程序员们,应该不难,至少也能说出 4、5 个方法的样子。主要考察候选人对 equals 、hashCode 的认知程度,以及对 wait 、notify 的用途了解程度。引出接下来的集合、多线程相关问题。
Q:谈谈 Java 中的集合,并简单介绍 Set 如何保证添加元素的不重复?「集合方面,仅以此为栗子」
A:主要考察候选人对集合整体了解程度及扩容机制。并承接上个问题中 equals、hashCode 的应用场景「是不是心怀鬼胎(笑哭)」
Q:谈谈创建线程的方式,简单聊一聊 sleep 与 wait 的本质区别?「线程方面,仅以此为栗子」
A:在面试线程方面的知识时,基本上属于必问的问题。主要考察候选人对线程的熟练掌握程度。并承接上个问题中的 wait 的应用场景。
Q:谈谈 Java 中的 IO 流,及设计模式?
A:主要考察候选人对 IO 流设计模式的应用。如果候选人真回答不上来,会进行引导性提示。
Q:分布式环境如何保证任务只执行一次?
A:会结合候选人所做的项目变着花样去提问,是不是很鸡贼。主要考察候选人遇到问题时,如何分析问题,有没有解决问题的思路。
Q:如何解决数据量比较大的存储问题?
A:主要了解一下候选人有没有过往的项目经历,有没有相关解决思路。
以上是我作为技术面试官,经常聊到的一些问题,及问题背后的一些想法。还有很多,就不在此一一列举了。
技术面试,仁者见仁智者见智,没有个唯一的标准,程序员面试前做好充分准备,心中才有底气,才能展示出最好的状态,找到属于你的一席之位。同时,也建议面试官们,尽量耐心一点,带好节奏,即使前面一两个问题没回答好,也不要早下结论,万一你错过了一个千里马呢?
顺便在这里说一下,我目前是在职Java开发,如果在学习Java的过程当中有遇见任何关于学习方法,学习路线等方面的问题,你都可以点击 Java技术讨论,这里面聚集了很多正在学习Java技术的初学者,也有不少从事Java开发岗的大佬,与Java相关的问题都可以随时发出来讨论。
上面我没提到算法题,实际上现在面试问算法几乎已经是标配了。
在这里,推荐一个BAT大厂程序员写的LeetCode刷题笔记。
笔记里的的代码都已经 Beats 100% 了。没有 Beats 100% 题解就没有放到本书中了。
经常刷题的人都知道 Beats 100% 的难度:
大厂面试官出算法题的时候,都会有标准答案,Beats 100% 几乎就是标准答案!