你好呀,我是歪歪。
这期我想简略的聊一个面试中呈现频率比拟高的,但又没有标准答案的面试题。
你在工作中遇到过印象粗浅的艰难是什么,你怎么克服的?
为什么我想聊聊这个问题呢?
因为我发现这个问题经常出现在各个技术交换群中,大家聊到这个话题的时候大多都苦不堪言,纷纷表示不晓得怎么去答复这个问题。
或者说之前就没有想过这样的问题,忽然一下被问起来,因为没有筹备,也是摸不着头脑的样子。
匆匆的回顾一下本人的职业生涯,发现天天写的都是 crud,也没感觉有什么艰难啊。
一时间,居然想脱口而出:我感觉吧,也没有啥特地大的艰难,我做的就挺好的。
面试官听了微微一笑:好了,那咱们明天的面试就先到这里,请回去等告诉吧。
考的是什么
你必须要晓得失常状况下面试官在面试的过程中问的每一个问题,都肯定是有他的目标。
比方面试官上来就要求候选人做个简略的自我介绍,很多人说这个目标是为了在候选人自我介绍的工夫内看一下他的简历。
兴许在早几年,要候选人本人带着简历去面试的状况下,的确是这样的。
然而当初来说,都是无纸化面试了,你的简历的电子版早就到面试官手上了。
失常来说,面试官会在面试之前曾经看过你的简历了,不须要面试的时候借着你自我介绍的工夫,浏览简历。
我个别让候选人自我介绍的时候,我是在认真的听, 我想要从他的自我介绍找开掘到简历上没有体现的货色,也是在寻找面试的切入点 ,如果自我介绍中有让我感兴趣的中央,我就会从这个中央开始,围绕着简历往下问。
再比方,问你我的项目的时候:
说一下你最相熟的我的项目。
是问你我的项目是干啥的,业务场景有哪些吗?
不是的。
问这个问题的目标是想晓得你所相熟的我的项目的架构是怎么样的,是单体服务还是拆了微服务,拆了哪些模块,每个服务大略多大的体量,它们之间是怎么互相的,波及到的技术栈有哪些。
晓得了这些,面试官能力从中找到探讨的点,从而开展技术面试。
至于我的项目是干啥的,简略说几句,铺垫一个背景就行了。
有的同学介绍我的项目的时候把领导在业务上给他画的饼,又给面试官形容一遍。如果不是同一业务线的话,面试官是不会关怀你的业务的。
你要晓得,如果你要介绍业务场景的话,其目标必然是为了引出背地的一个比较复杂的技术解决方案。否则,面试官不会太感兴趣,多说无益,反而占用了面试的时长。
还不如拿出纸笔,在下面画一下你们的服务交互,同时形容一下对应中央波及到的技术栈。
再说这个问题:
你在工作中遇到过印象粗浅的艰难是什么,你怎么克服的?
有的同学说他不会答复,我剖析了一下,不会答复的起因其实就是因为不晓得面试官考查的是什么方向。
所以只能给出一些诸如查问慢了就加索引、热点数据加缓存、出了问题重启了就好了 … 这类泛泛地答复,找不到什么让面试官眼前一亮的货色。
怎么能答的闪亮一点呢?
一般来说,我认为这个题有两个答复的方向。
第一个方向就是往技术的深度,对于技术的谋求这个方向答 。想看看你有没有碰到过什么辣手的技术问题,而后是怎么定位,怎么解决的。
第二个方向就是往主人翁意识,体现主观能动性的方向答 。面对一个我的项目或者领导给到的工作波及到其余项目组、甚至其余部门的时候,本人是怎么去推动的。
技术的深度
如果你往这个办法答,就得本人平时工作中多积攒,多察看相干的案例,而后记录下来。
能够把察看的眼光放的久远一点,不肯定非得是本人所在的项目组遇到的问题,也能够是其余的项目组遇到的问题。
这里就须要本人有一个情报收集的能力,和对于技术的敏感度。
一听到这问题就应该要晓得:这是一个好素材呀,能够深刻理解一下。
这个问题都不肯定是你解决的,然而你要分明的晓得前因后果,就能够包装成本人的经验。
面试官是觉察不进去的。
而且我始终认为,适度的包装,也不算是面试造假。
当然了,这个方向你也能够去背。
然而不能纯正的背诵,得适当的去扩大。
比方我之前分享过一篇对于 Dubbo 调用超时的文章。
从最开始 Dubbo 调用超时的这个表象,别离从数据库、GC、网络、链路追踪等各个角度去剖析了问题,且是一个循序渐进的过程。
你会发现大家对于超时这一类的问题的排查套路都无外乎这样,层层递进的排查,抽丝剥茧的寻找问题。
这个案例你就是能够本人拿去用的,套一个本人工作相干的业务场景。
我就不信了,你们接口调用没呈现过超时的状况?
网上这样的文章很多很多,然而作者写的只专一于面试问题的自身。
如果你想要把这个案例套过去本人用,那么而这个问题能延长进去的货色,你也必须得去钻研。
比方后面这个文章外面,为什么要说“失败策略是 failFast,疾速失败不会重试”?因为如果是 failover,会默认重试,且超时工夫是重试工夫之和。所以,他通知咱们,这里没有重试,超时不是因为申请重试带来的工夫叠加导致的。
文章提到的 ElapsedFilter 过滤器,“超过 300 毫秒的接口耗时都会打印”,是作者公司本人扩大的 Filter,基于 Dubbo 的 SPI 实现的,并不是 Dubbo 官网的自带性能。所以,他才额定提了一句“ElapsedFilter 是 Dubbo SPI 机制的(自定义)扩大点之一”。
作者用的 Druid 连接池,猜想连贯长时间不被应用后都回收了,那么对于 Druid 的配置文件中的无关工夫的配置,你是否晓得且分明其作用?
如果要察看 GC 日志,你是否大略晓得应该配置什么参数,是否晓得应该关注的信息是什么?为什么他这里要提到平安点?平安点和 STW 的工夫之间的关系又是什么?
等等前面的一些对于容器的、Arthas 工具应用的、网络抓包工具应用的相干技能和常识储备。
当咱们把这些常识独自拎进去造成面试题的时候,兴许你会感觉,为什么你老是问我 MySQL 的常识、问我网络相干的常识、问我一些用不上的垃圾回收的常识?
问你,把你问的理屈词穷不是目标。考查你常识的广度,让你学以致用才是目标。
重要的是把你学的一个个孤立的点,通过某种形式,串联起来。
而“你在工作中遇到过印象粗浅的艰难是什么”就是你把这些知识点串联起来的一种形式。
另外,还有一个人尽皆知的面试小窍门。
答复问题的时候尽量无意识的疏导面试官到本人相熟的畛域中来。
怎么疏导呢?
不可能他人问你:你给我说一下线程池吧?
你答复说:这多没意思啊,我给你说一下 HashMap 吧。
面试官肯定过后就感觉本人的头大。
咱们能够在这些凋谢的问题上就能够去疏导面试官。
如果你对 kafak、RabbitMQ、RocketMQ 这一类技术理解的比拟深刻,又或者对于 Redis、MySQL 这一类存储的技术学习的比拟多,你筹备这类问题的时候就能够多讲这方面的起因。
比方如果让我来讲,我可能就会抉择答复一些因为 Dubbo 框带来的技术问题,让面试官进入到我相熟的畛域,让他在这外面和我开展博弈。
再或者说往 JVM 方向疏导,反正大家学这货色,看的都是同一份材料,就看你记得多还是我记得多了。
又或者咱们能够 battle 一下多线程畛域相干的问题,然而当初多线程都烂大巷了,我可能不太会去在这外面和面试官博弈太长时间。因为就算你答复的滴水不漏,面试官大多也会认为这只是须要把握的基本技能而已,用的纯熟,难能可贵,没有闪光点。
总之一句话吧:如果你向往技术的深度这方面去答复,肯定要言之有物,最终定位到的问题能够是一个很小的问题,比方配置的起因、网络的起因、框架的 bug,然而重点得体现出排查的过程。而排查问题的过程,有肯定的方法论,提炼进去就好了。
对于这个问题,上策是加工一下本人的亲身经历,实实在在的有解决问题的教训,只是如何把它包装的高大上而已。
上策是包装他人的经验,要包的惟妙惟肖,以假乱真。
如果你真的很无奈要选上策,那么我只能再送你一句话了:退出一些细节的形容,能够是点击工具的什么按钮、翻看了什么类的源码、参照了某个大牛的博客一类的。
能不能过,就看你的造化了。
主观能动性
主观能动性这方面其实我没有什么特地想要说的。
核心思想就是后面说的:主人翁意识。
你所负责的工作,是他人调配给你的。然而你就是这个工作的主人翁,你要想着怎么去积极主动的去实现它。
举个例子:
你原本只是一个写着 crud 的高兴的程序员,每天等着领导分配任务,而后领工作写代码。
忽然有一天,领导给你说:小王啊,这边有一个我的项目很着急,然而我这边有更加紧急的事件要做,所以我把这个任务分配给你,你去全权负责一下吧。
你过后就懵逼了,敲键盘的手一下就不高兴了。
这意味着你不再是一个只写代码的程序员了,你还是一个我的项目的负责人。
一个我的项目的负责人得兼顾帷幄,去协调需要、产品、开发、测试、运维等各方面的资源。
而这事儿,你之前素来没干过。要命的是,这事还挺焦急。
怎么办?
这不就是你在工作中遇到的印象粗浅的艰难吗?
场景框架都给你了,你就依照你们公司的流程往里面填内容就行了。
你是怎么拆分工作的,怎么组织评审会的,最初我的项目胜利上线本人的播种是什么。
能够多讲点从程序员视线看不到的货色。着重体现本人协调资源和跨部门单干时遇到的艰难和本人的解决方案。
什么,你说你没有这个方面的经验?
你就不能假如吗?
你就不能察看你们公司的一个我的项目周期的全过程吗?
得施展你的主观能动性呀。
而后再说一下,如果你往这个方向去答复,大概率会遇到一个诘问的问题:
如果让你再来一次,你会怎么解决的更好。
这玩意考的又是什么?
考的就是你的复盘的能力,考的就是有没有对于我的项目进行复盘。
如果你答复说:因为是我第一次负责一个我的项目,并跟进了它一期需要的全过程,所以对我来说是一次十分贵重的经验,于是在我的项目上线之后我对其进行了一次复盘,发现了其中还有一二三四点能够优化的中央 …
我感觉基本上朝着这个办法答复就探囊取物了。
你要说你不会复盘,好的,没救了,回去等告诉吧。
总结
面试的时候对于这类开放性题目,其实并不是设想中的那么好答复,处处都是暗流涌动。
所以肯定要在面试前做好这类题目的筹备,临场发挥必定是成果很个别的。
就拿我集体作为面试官的经验来说,特地是三到五年工作教训的敌人容易遇到这个问题。
校招生我必定是不问这个问题的。三年以下的教训还不够丰盛,答复起来也很难有什么称心的答案,所以我也不问。问这个还不如多问几个技术问题,考查他的技术是否扎实。
还有,后面说的两个方向,都得筹备一下。
如果是前两轮面试问题了,能够往技术的办法答复,因为这个时候个别都是在一线编码的程序员充当技术面试官,他更违心在技术方面和你切磋。
如果是后几轮面试,能够往主人翁意识的方向去答复,因为到前面的面试大多都是部门负责人一类的管理人员,曾经很少在一线编码了,他们更违心看到你除了技术之外的软实力。
本文参加了 SegmentFault 思否征文「如何“反杀”面试官?」,欢送正在浏览的你也退出。