三、四月份,春回大地,万物复苏(请自带赵忠祥老师的BGM),又到了不少同学的跳槽时节。
最近一段时间团队也在招人,这期间筛选了不少简历,面试了一些候选人。这里谈谈我自己的对「 怎样回答面试题 」的理解。
欢迎各位各位老司机,新司机一起留言交流 ,我们一起探讨下,无论做为「面试官」,或者是「求职者」,怎样回答面试题,能更好的去解答问题,达成自己求职的目标。
面试,首先也是一个人与人交流沟通的过程。有些时候,面试官还没说完问题,面试者就会打断说「这个问题我知道...」。打断不利于沟通,同时,这样其实导致面试题没听清。比如面试题是「如何理解Java 的 JMM,...」后面还没说的时候,面试者打断说「你说的这个我会。。。,包括方法区,堆,栈 balabala」这就答的都跑偏了。
如果问题是「 Spring 是什么,怎样理解的」。很多人就会直接回答「Ioc 和 Aop嘛」这样说不能算错,但我个人认为从一个更宏观的方式先入手,再具体介绍对于 Spring 你深入了解的一个或者多个方面,这样感觉更好一些。
发展到今天,Spring 并不仅仅只有Ioc 和Aop,而是一个包含一系列功能的XX,像快速开发的Spring Boot, 像微服务支持的 Spring Cloud, 像支持认证和鉴权的 Spring Security, 支持各种抽象的Spring data 提供的 xxxTemplate,Testing, 以及现在使用众多的 Spring MVC。当然 Denpendency Injection 和 AOP 依然是核心。
再比如回答如何理解Java的垃圾回收机制,比起直接回答 「将无用的对象清除出内存」这类概括,如果描述垃圾回收,什么时候会发生垃圾回收,具体的回收方式,了解哪些回收算法。出现OOM时如何调整,以及 JVM 的内存划分等,我感觉效果会好很多。
面试官在提问之后,有的候选人问题还没听完,一是抢答,二是不屑。心想为啥问这么简单的问题。其实面试大家都理解为一个不断沟通,发现面试者长项的「 交流 」。比如有的面试者一听「请写一个单例模式」时,会略有不爽,仿佛才华被埋没了,却在「双重锁检查」时,大意失手,忽略了CPU 指令重排序的影响。
还有的面试者,在面试官刚说出「接下来我们写一个算法题...」还没说完时,会抛出选项,「要不我写个快排,二分查找?balabala」,如果你是面试官,你会怎么做?
也有一些面试者,在被问到简历中所写项目时,「眼神黯淡」,说道「我们没做什么有技术含量的,和你们没法比」,又或者在面试官说到项目中的某个实现时,会说「你们也用了啊」,然后有的不敢向下说,仿佛简历包装过度,也有的则是感觉有更多的共同话题,开始探讨实现,选型等等。所以大胆展现自己,至少有一次机会。
看过不少简历,有些整个简历里的项目,全是业务和产品介绍,通篇没提到几个技术点,不讲实现,不写用了什么技术,全是大段的文字描述。做为一个技术面试,没有什么技术性。
也有不少,简历里写着精通XX技术与YY框架,是ZZ专家。其实实际交流时,真的是只限使用,都没配置过。
一个「 熟悉 」的大部分时候会大于一个「 精通 」的水平。
五、广度与深度
一般的面试,都会根据面试者的实际工作经验时长,对应到该有的广度与深度。但广与深两者间,我认为先深入一个领域,一个概念,再拓展开来,这样效果更好。
而且面试过程中,如果每问到一个话题,都是平常,或者是简单了解过,会给人一种浅尝辄止的感觉。如果某个方面深入,在回答相应的问题时得心应手,甚至可以回答「你最擅长什么?」时,可以更有底气。比如聊 Java 的并发 。除了能描述 sync 之外,先按从全局到具体,可以描述「内存模型」,以及Happens Before, Lock 与 sync 的区别。Lock 与 sync 分别对应的实现,以及JVM 的 monitor 指令, AQS ...
去年电话面试一个实习生,对于开发框架还在自学阶段,问到一些未学习到的部分,会实话说「目前还没学到」,甚至精确到说XX技术「今天就要学了」,有计划,有学习能力。但其描述的这种学习方法,态度 以及对已经学习部分的掌握程度与理解,对应表现出来的水平,都让人印象深刻。后来到公司实习时并没使用框架,而是根据需求使用了新技术,果然也没让人失望。
这个我自己理解是在回答问题时,可以将自己擅长的展示出来。比如简历里有写到「项目使用过 RPC」,那在回答项目中如何使用RPC的时候,可以描述一些 RPC框架的设计实现思路,例如「我大致了解过 Dubbo 是这样设计的」,和 「Thrift 有这些区别」,当然,这个时候面试官可能会问,有了解过 grpc么? 你会怎么办?
此外,在讲述项目使用技术时,可以顺便将自己为什么这样做,为了什么选择使用这个技术,这样简历之外的丰富信息,才会让面试官更立体的了解,从而为「 交流 」打开局面。
七、有证明更佳
如果能在简历里附上一个长期活跃的开源项目,不断输出的Blog 等等,也是一个让人更全面了解你代码风格,展现设计、思想的方式,学习方式的「平台」。
不多说了,工头喊我去搬砖了, ; )
☆★☆更多精彩内容 ☆★☆
一台机器上安装多个Tomcat 的原理(回复001)
监控Tomcat中的各种数据 (回复002)
启动Tomcat的安全机制(回复003)
乱码问题的原理及解决方式(回复007)
Tomcat 日志工作原理及配置(回复011)
web.xml 解析实现(回复 012)
线程池的原理( 回复 014)
Tomcat 的集群搭建原理与实现 (回复 015)
类加载器的原理 (回复 016)
类找不到等问题 (回复 017)
代码的热替换实现(回复 018)
Tomcat 进程自动退出问题 (回复 019)
为什么总是返回404? (回复 020)
...
PS: 对于一些 Tomcat常见问 题,在公众号的【 常见问题 】菜单中,有需要的朋友欢迎关注查看。
关注『 Tomcat那些事儿 』 ,发现更多精彩文章!了解各种常见问题背后的原理与答案。深入源码,分析细节,内容原创,欢迎关注。