先说结论:
这一轮面试游历得到以下几个深刻教训:
不要去小公司,练手也尽量不要去,锻炼价值真的不大
人和人差距蛮大的,牛逼的人5-8年已经是业界顶级了,绝大部分人5-8年也就是个P6的水平
技术无止境,要一直保持敏感性,且每隔一段时间就要跟市场对标下,定期反思,加速成长
所以在平时:
还是要深挖业务和对应使用到的技术,通过项目来快速学习专项知识,由点及面的全面发展是最靠谱的成长路径了
放宽视野,紧跟产品决策,到底这个产品是怎么run起来,决策的依据是什么,心里要一直有谱
还是深挖技术,结合1&2,深度和广度都要有
长 期有耐心,技术不可能速成,贵在坚持
在这一行,你想要成功(升级&高薪),你必须要有持续持久的恒心和决心,安心做一个反复练习的苦行僧吧,没有捷径。
他们都问了啥?
这部分我估计是大部分人最关心的一块内容了^_^,但说实话我不准备给各位看官列出1234道题,我觉得没意义,我主要还是聊问题的方向和我的感受吧。
现在的大部分公司都能做到千人千面、因人而异了(除一家以自己公司技术栈为主外),这一点非常欣慰,就是说完全按照你的简历来对你进行面试,对我来说,基本上没有被问太多Java、数据库或网络相关的问题(白准备了^_^),除某短视频app问了好多锁、多线程和线程池扣的很细外,回想了一下,基本没什么印象深刻的问题,基本上你们能搜到的面试题准备资料撸一遍,面试中基本都能达到80分吧,所以笔者在这也不细说了。
面试的大头在于问你项目,需要你非常详细又不失优雅的讲出来,要涵盖到「在什么背景下,解决什么问题,带来什么收益,你在里面的角色是什么,以及包括技术的技术选型的方式方法、技术难点是什么,设计上有什么亮点,以后的技术规划是什么,更有甚者会问你如何推广(如何给业务部门表述你将带来的收益等等)及需求迭代的过程。基本上项目描述占据50%以上的时间吧(纯粹对我这次面试几家的经验来说,还有20%左右是代码题),从项目延展而来的问题是需要你精心准备和思考,因为很有可能在平时你不太关注整体业务模式或架构,或者架构比较简单,或是对整个数据流转不太注意的,这都需要你准备以及美化(美化不是为了撒谎,而是为了流畅的描述和整理思路,说一千道一万还是要平时时刻注意项目发展和全局)
你简历上写的那几个项目一定要做好挑选和排序。
再就是一些乱七八糟的问题了,基本会挑几个你在简历上写的技术栈问,还是那句话,基本上github或是一些汇总资料里面的问题看几遍,80分是没什么问题的。
吐槽点:
好多公司还是依然存在面试官不交接的现象,或者交接不细致,一面问完二面问,二面问完三面问,反正作为候选人,我乐得见到这种情况
自我介绍,一次面试最多说了四次
优点:
我面这几家都能做到准时开始面试,且没人叫我填资料
现在都是预约时收到验证码,当天去前台直接输入验证码即可
hr在接待和面试环节基本都能做到职业
如何准备面试?
分四个方向
项目,项目,还是他妈的项目
前文有提到,基本上项目是整个面试的重头戏,尤其是好的面试官会非常牛逼的识别出你的项目的重难点及一些卡点,围绕着项目这些点去问,很容易探测你的知识广度,且能兼顾深度,你需要精心准备2-4个项目,不需要太多,3个最佳吧,将这些项目所有事情,包含但不限于我前文提到要涵盖的那些点,去准备吧,从项目去梳理知识是一个树形结构的知识图谱,可以很好的整理你的知识点。
从我个人这次的经验来说,有些项目我负责,但我并没上心去持续开发和迭代,所以对项目全貌、收益有时候并没表述的特别好,这一点一定要注意,写到简历上的东西就是你的资料,不要给自己挖坑。
如果你想试试高级别,那么遇到定级面试时,对于项目的立项,甚至发展步调也一定要了然于胸,比如曾经问我,xx项目说两年内想从0发展到1000,如何得出这1000的数字?平时技术一般都是听到老板说1000,直接就按1000去准备了,下次一定要了解下1000这个数字是怎么来的,为什么不是500或者2000,这个市场到底是什么样子的?
从项目很容易看出来你的综合实力,对于你写到简历里的项目一定要给自己梳理几个改进点和坑点,casestudy最佳,但也别是P0的case,这些改进点和坑点一定是要表现你其他方面或综合层面能力的,比如排查问题的思路和方法,做事情的方法论,与PM或老板的沟通,与其他RD的协调推进等等,这些都是大大的加分项。
对于技术选型,一定一定要深入了解,比如定时任务,在市面上那些开源的,不论是当当、唯品会还是宜信的,国外的,大厂未开源的,以及大数据圈的azkaban等等,都要明白他们的优缺点、对比点和槽点,虽然都明白造轮子的坏处,但这个世界就是轮子组成的。表述好收益和背景,很容易加强面试官对你的标签设定,没人因为多一个轮子就否定你。
再就是前面提到一嘴,casestudy,也就是你排查问题的方式方法,如何最快的定位到问题所在以及常见的排查手段和工具,踩过的坑都是你最好的经验和背书。
还要注意的一点是,解决方案都是在特定环境下产生和运行的,高P们在平时给到你的技术选型你一定要思考和比对,不要让用什么就用什么,横向对比是你快速发展,有全局观的基础。
基础知识
先说一句,不要慌,大部分一、二面的面试官还真不一定水平有你高,所以那些你简历上写的技术栈如kafka、netty啥的,在通用面试的状态下能持续的跟对方打两个回合,基本你就赢了^_^(通用面试指的是业务开发面试,不包括你面中间件时问你kafka相关知识,这个一定要非常深入的按方向去准备和整理)。所以大家在准备面试的时候一定要有侧重点,像是网络,Linux基础,Java基础多线程、锁和JVM,数据库的锁、MVCC以及常用中间件的基础知识都要喽一遍,且在此基础上根据你的项目或者经历或者兴趣,选一到两个精通的方向或者中间件、框架,像是spring、redis、kafka或zk这些都是非常常见和好准备的。
算法
现在几乎没有不写代码的公司了,这部分没什么投机取巧的,刷leetcode低、一部分中等难度就行了,最好刷出来一些窍门和心得,不要硬刷。
软素质
这方面确实没办法突击,还是靠平时积累,包括你的表述方式方法、倾听问题以及解决问题的思路,这都是日积月累的,需要你在平时反复连续时多注意。
另外一件事情需要注意的事,结合基础知识,你在表述时一定要尽量的技术范的去讲和表现你自己,全是大白话,听着没啥意思。
猎头
我估计现在绝大部分都是通过猎头来找工作,我这次用了俩猎头分开推,行业里有的猎头真的是推的时候也不看具体细分业务方向和技术栈,除了Java外只看title和职级,没办法,自己要识别好猎头和jd里面的描述,千万不要浪费两个人的时间。但猎头也有猎头的好处,他们能确切的知道用人单位的需求,且有HR的直接渠道去沟通,有比你更多的背景知识和行业信息,且在一定程度上会给你一些面试辅导和真题,面试辅导倒是确实还算有用,公司的风格和大体人员背景,这些都是有用的信息。猎头给的所谓真题我觉得是你在准备基础知识时的补充资料,千万不要以这个为主,他们不一定是什么方式收集的,有没有参考价值真的两说。
收获
那说了这么多,面试确实是能非常客观和实际的检验自己成色、优点和不足的方式了,所以好好利用这些机会,发挥自己的优点,补齐短板,享受这苦行僧的生活吧,在下一部分,我想聊的就是如何通过面试反馈你的成长轨迹并去矫正它,能在日常工作和生活中,做到持续成长,做到满足感满满,让自己的人生持续、饱满和精彩,其实最重要的就是去确定自己的发展方向,并持续推进。
如何确定自己的发展方向?
这部分转化成面试题就是你未来3-5年的一个规划,其实这个问题不论是终面也好hr也好都是随便问问,你很容易搪塞过去,但请记住,这个规划是非常有价值且值得你花时间好好思考思考的,你最终是要为你自己负责的。but,其实这个问题是个伪命题,在毕业3-6年之间时,你几乎没有什么话语权或是横向发展的资源,几乎是碰上什么业务方向就是什么业务方向,这阶段你唯一要做的就是不停的发展技术的深度和广度,到了P6&P7/3-1之后,你是想持续的做技术开发朝着架构师或技术专家的方向走还是持续综合发展往项目经理或者业务开发的管理者方向走,就可以由你自己决定和发展了。
那么到底如何确定自己的发展方向?这一切当然由你自己决定,但:
技术是你的敲门砖,这一点不容置疑
你以后综合发展的资源和资格可能也是你的技术水平带来的
技术给你带来的安全感和满足感无可替代
所以,你懂了吗
如何去拼搏?
在有了发展方向和目标之后一切都看你自己的努力和造化了,不是有那么个名词嘛,「一万小时定律」,说实话,这个行业的从业人员的水平下限低调你想象不到,你只要稍稍努力就能做个中位数了,加把油就能到达80%-90%,你有什么借口不去拼一把呢?
但总体上,在拼搏这个方向,我还没资格去说^_^(我还是喜欢生活多一点),只能说整个职业生涯是一个非常非常非常长期的过程,一切长期的事情都逃不过日积月累,对……结论其实非常简单,你要有非常大的成功决心,加上日拱一卒的恒心,以及定期回顾的耐心,坚持2年,相信我,你会清晰的感觉到自我成长的。
结尾
说了这么多,发现里面好多好多点依然可以掰开了继续细说,无奈个人认知和层次还有待提高和扩充哇,希望各位看官看完给我留言你关心的那些点,我会持续更新和回答,感谢!