在18年底到19年3月,陆续面试了几家公司,有成有不成的,最终进了一家比较满意的知名外企。在本文里,我将介绍我这段时间里更新简历和面试的相关经历。可能面试相关的一些方法,大家能从我之前的博文里看到,但在本文里,大家更能从相关实战性的例子中进一步体会到面试技巧的使用方法。
我打算要换工作,就更新了简历,这时就有不少猎头来找我,刚开始,我不敢面大公司,只是去些规模小的互联网公司。因为一方面,当时我很久不面试了,面试实战技能难免有些荒废,另一方面,离我之前的面试毕竟过了一阵,我不知道当前市面上哪些技术比较值钱。
而且,我在面试前会准备一些针对项目和值钱技术的说辞,这些说辞总要经过实战来演练下。事实上,在和小公司沟通的过程中,进一步提升了我的相关表述能力和相关话术,相当于用小公司来踩坑。相反,如果用大公司的面试失败来换得这些进步,就未免有些可惜了。
所以,我和猎头明说,我想去大公司,但之前,你得让我到一些小公司去练练手,同时,我面试好以后,会告诉你这些小公司的面试题和相关技巧。这样一些猎头就肯先推荐我去小公司了。
对大家来说,其实面试任何一家公司,它们的职位要求绝对不可能一样。这时大家最好是微调下简历。这种微调,绝对不是胡乱编写,比如上个项目干的是测试,简历中改成开发。而是挖掘下侧重点。
就像我之前给出的案例,对于分散式技术,我上个项目确实用过,但简历中篇幅有限,我不可能面面俱到地写,但既然你们公司有要求,那么我就针对性地详细介绍。
其实这块谈不上是面试技巧,而是语文技巧。首先是审题,理解职位介绍的主要内容,然后再像写作文那样,详细扩展下上个项目里相关技术点。甚至这只是中考语文的考点而不是高考的,但我自己的体会是,在这段时间里针对每份职位介绍我都做了微调,所以基本上是投一份简历就能得到一次面试机会。
我见过不少人,面试成了就进去了,结果虽然钱达到预期,但工作环境和行业背景都不是自己想要的,对自己未来发展很不利。
目前不少公司的情况,比如行业背景(比如金融保险电商等)还有工作强度(加班情况)在网上都能查到,用什么技术(比如分散式技术还是云还是AI)通过打听也能问到。互联网是万能的,甚至如果仔细些,一些离职率,每年工资的增长幅度,甚至这个公司是第几轮融资,一般也能看到。
而且,大家在面试的时候,可以通过现场观察以及和面试官交流,旁敲侧击地打探到上述情况。在这个基础上,大家需要结合自己当前的需求和未来3到5年的发展方向,找若干类适合自己的公司,下面就给些我个人的和我所见到的例子。
换工作是个折腾人的事情,虽然没有十全十美的事情,进新公司后一定会发现和当初的预期有所不同,但如果事先不调查,那么入职后后悔这还是小事,耽搁自己的发展才是大事。
在上文里,我一直介绍的是准备简历和定目标,从这部分开始,将介绍准备面试。在之前的博文里,我一直强调项目介绍的重要性,所以当我自己出去面试的时候,这块绝对重视。在准备项目介绍前,我还是会通读应聘职位的技术介绍,然后按如下的步骤来准备。
比如我见过一个职位介绍,里面写到需要有资料库优化的经验,那么我就说,项目里我用过MyCat作为分库分表,(不展开技术),结果上线后,我们资料库能承受住每秒2000个并发请求(说下用好的结果)。
又如一个JD里说要用到微服务技术,那么我就说,项目里用到了Spring Cloud框架,用到了Ribbon,Eureka等组件,容器是Docker。用好以后,在发布时会发现,各模块之间的调用耦合性大大降低。
这块为什么不用展开?
第一,当前还在介绍项目,如果展开技术,就会主次不分,面试官会对你的逻辑思路产生质疑。第二,由于在JD里有要求,面试官一定会深入来问,别人问你说总比自己自吹自擂要好。第三,就好比之前考文科内容,当前在介绍项目时,先应当把所有的点说出来,面上自有机会发挥。
这块其实和介绍项目经验时密不可分,这里就拿我介绍过的Netty组件来说明。
1 准备如何过渡到相关技术的说辞。
这里一定别让面试官感觉你在自说自话。比如我准备的方案1是,在介绍好项目背景后,如果面试官没打断,我就询问,能否介绍其中的Netty细节?得到允许后再说。方案2是把这些技术关联到面试官可能会问的问题上,比如问及网路通讯时介绍Netty,这个事先我会整理一个问题列表,遇到此类问题,我会抛出Netty说辞。对于其他技术也可以照此准备。
2 结合业务需求点,说下为什么要用这个技术,以及用了有什么好处。
比如为了优化网路通讯协议,所以用基于TCP协议的Netty,我业务模块里的xxx功能是用到netty,再稍微结合业务和Netty展开下。这样的话,面试官就会感觉这个技术你不是仅仅在学习中用到,而且在项目业务里用到。
3 准备下这个技术里我踩过的坑。
比如通讯过程中我遇到了半包和粘包问题,对此我更是深入了底层代码说明,还有Netty里的堆外内存管理问题,我准备了一个由于管理不善而导致的OOM问题的排查和解决过程(这类问题网上相关的也很多)。
4 我再准备了用了这个技术后对项目的帮助。
比如Netty是基于TCP协议的,它要比Http协议要轻,所以通讯性能高,且Netty内部的Reactor线程模型对系统的IO帮助很大。
其实准备到这个程度,一般的面试官就不怎么再问了,哪怕面试官再问了一个我不知道的问题,我也可以理直气壮地说不知道了,毕竟我之前已经介绍了不少底层代码,再精通Netty的人也未必能面面俱到地在脱稿的情况下回答出任何问题。
但为了以防万一,我更准备了「源于项目但高于项目」的说辞,一方面证明我平时还会不断专研,另一方面进一步证明我熟悉并能合理使用Netty的底层代码。这方面我准备了如下的内容:
大家可以想像下,如果在面试中,大家很自信地边写底层代码边解释问题,面试官会对大家有什么评价?其实这些都是可以准备的,我一直没明白,为什么有些人面试前不做任何准备?这些准备的素材又不是找不到。
下面我再略讲下我MyCAT的准备要点:
基本上我面试时说到这个程度后,面试官就不怎么问了。
哪怕事先再准备,我们也不能保证自己一定能达到职位介绍里的要求,这时候就得准备一个自己薄弱技术的列表,然后想办法在面试中绕过去,如果绕不过去,就找些替代方案。
比如我对消息通讯组件不熟悉,在面试前我哪怕看代码看文档也无法进一步理解,我就在面试中,故意不提这个环节,抛出其它值钱技术,引诱面试官来问,一般交流一个技术点大约耗时10分钟(边画图边介绍再提问),所以面试过程中详细交流到的最多也就5个点,少的话就3个,在不少面试里就根本没涉及到这块。
有两场面试,技术面试官问及到了,我就说项目里用过,同时多介绍些使用场景,比如用Kafka进行非同步消息通知,通过消息中间件来保证交易的幂等性。这样面试官听到我介绍了应用场景,就至少会认为我用过。只有一场面试,面试官在kafka方面问得很细,问到如何集群内防止消息重发的细节,我就没回答上。
也就是说,我通过刻意回避外加介绍业务应用场景,很大程度上隐藏了我了解不深的技术。相反,如果我在简历中大大咧咧地写上用过kafka,那么可能每场面试都会被问到,毕竟在面试中被问倒不是件好事。
又如,我对分散式集群里的失效转移底层细节始终没理解透彻,那么在相关问题上就得非常小心。
有一场面试里,我被问到dubbo+zk集群,这块如果细问,一定会问到失效转移的选举演算法,我对此不熟,那么我就先说dubbo的通讯协议,序列化方式以及通过设置超时时间实现服务降级的思路,然后再说zk的部署。最终面试官果然问到选举演算法,但之前我已经结合业务谈了dubbo底层代码和zk的相关部署,所以不理解选举演算法并没有产生太大的影响。
这里用到的技巧是「偷换概念」,一个问题有多个回答方向,你先让面试官感觉到你在很多领域非常熟悉,那么在个别领域不熟悉就无伤大雅了。
但和人事谈,就要小心了,毕竟人事是公司开工资的。
总之,面试时人事会非常nice地和你交流,有时候甚至是套话,看你是否稳定,是否能很好地和团队协作,能否加班,我就见过有人卡在人事这关,甚至还不知道为啥被拒。
而且一般你在和人事谈工资前,最好向猎头打探下这个职位的工资范围,在此基础上,如果你感觉面试非常好,或者他们著急要人,或者你感觉加班会很多,可以适当多要些,相反如果你非常想进这个公司,那么就自己斟酌。
我不推荐经常换工作,比如一年换个两家,那么公司会质疑稳定性,但对于我们做IT的人来说,如果手头技术停滞不前,那么自己的竞争高工资的能力也会大大降低。
这固然可以通过工作来检验,但工作中接触到的技术毕竟是有限的,这时就可以通过面试来检验自己当前的学习情况,同时也可以通过面试题去了解自己的努力方向。
这里 我分享一套系统的学习大纲,需要的文末有免费领取方式!
1,架构师内功心法(设计模式)
2,架构师审美观(品味经典,分析源码)
3,架构师必备技术栈(这里主要列举高并发场景分散式解决方案实战)
4,次世代架构技术(微服务架构)
5, 团队协作专题
6,架构师筑基专题(这里主要列举并发编程进阶、JVM性能调优知识点)
由于图片太大上传会不清晰,需要完整架构体系大纲的可以私信【架构】,领取我已经打包好的架构体系大纲,免费分享给大家哦!
虽然有的人基础好,起步高,但这些并不是一成不变的。接下来的这几年的努力,最足以拉开人生的差距。
王健林说:定个小目标,先挣一个亿。
王健林说:
这样的目标可能还是过于宏大了,但每一年,薪资以1.5倍速增长,并非遥不可及。
假设你从应届生毕业时月薪为8k,两年工作下来14k。从第三年起,到第五年,每年翻一番,就是:
假设这三年如果只有30%的平均涨幅,那么就是:
适合Java程序员学习的视频进阶资料总结分享(以下是一部分文档网盘资料图)
对自己的学习规划很迷茫或者想获取进阶资料学习的工程师朋友们私信我【架构】获取学习资料,记得点赞+关注哦!
推荐阅读: