作者:五阳
如何和面试官高效愉快的沟通
无论会不会,一定不能慌。无论会不会,一定要和面试官确认自己的理解是不是正确,这道题应该如何思考? 避免思考过度,跑偏。
面试重点在于沟通,我总结了几个经验。
及时总结结论
面试官也是要写面试评价的,如果每个问题结束以后,你都总结好结论。面试官可能直接引用你的结论用来写面试评价。
- 一定要有条理性的和面试官沟通。 避免东一笤帚,西一扫帚。最好提前想好一些结论,重复几遍。这样面试官可能直接用你的"结论"来 写面试经过,结论,评价等。 说完一件事,最好有条理性的总结下,这会让面试官对你印象更深刻。 试想:一个陌生人说了一堆话,我怎么能记住他说了啥。但是他要是最后有总结,我就能记住。
- 当面试官出现了疑问,抛出了问题,中断你的回答,一定不要一味的回答,立即响应。 要优雅的中断当前问题,等自己说出关键结论后退出讨论,响应面试官的打断提问。把握自己的节奏,先和面试官征求意见,能否把剩下的说完。继续快速的说完,记得总结结论。例如:”刚才的问题还没说透彻,我可以最后再总结几点吗?“
求同存异,避免争论
面试官不如你熟悉你的项目,你的经历。 说,听,讨论。 三个阶段都会存在沟通信息的损失,所以给面试官讲清楚, 让他理解,认同你可能很难。 同时如果出现争论,会降低面试官对你的好感,降低沟通效率。你有责任及时的终止争论。可以使用一点技巧:
- 当出现争论质疑时,重申问题上下文, 解决方案的目的, 当前现状, 历史背景, 设计方案时的利弊抉择。
- 也可以坦诚的承认,我们这块的设计,实现方案并不是完美的。甚至做得不好。“我们已经提出了哪些优化点(提出了解决方案),但是优先级并不是很高(优先级是最好的甩锅方式),当初由于更专注于业务目标,技术前瞻性做得不足。你确实眼光独到,一针见血发现了这个问题,这个问题让我们头疼了很久。“ 趁机夸赞一波面试官。
- "这块确实比较复杂,咱们总结一下,细化一下分歧再讨论" 面试官一般不会拒绝,面试的主动权重新由你掌握。(要有主动权意识) 细化分歧过程中, 其实就是取得共识。至于某些细枝末节的争论,直接和面试官协调下,忽略掉即可。 把你们的共识摆出来。然后说:”咱们的分歧主要是什么什么,其实是我没说清楚,再针对面试官疑问解释一下。如果系统确实有问题,可以这样说。”我们想优化,因为有更高优的事就搁置下了。我们想这么做,但是由于时间来不及,或者当时 XXX,没有这么做。不过后来我们确实吃了亏,算是技术债"。
- 承认系统设计缺陷不会丢分,强项装逼不服输才是最二百五的
简历重要吗? 随便写行不行?
- 简历一定要认真写。面试官抛出的问题中,除了常见的高频面试题,就是简历中你写的东西。要保证简历中写的东西,透彻理解。
- 很多面试官不会提前准备问题,都是看你简历有什么,就问什么。
- 面试官不会看你精通Spring就会问你Spring,看你写熟悉Redis,就不问Redis了。无论写的是了解,还是精通都可能被面试官问到,所以面试前都要准备到精通的程度,否则尽量别写。对于不太熟悉的技术,仅仅是知晓程度,就别写了。如果被面试官问到不会就很丢分,面试官的面试评价就会写上:你不会XXX。面试很丢分。记住面试官是为了找你的亮点,不是要求你无所不精。简历不要过于吹牛逼。给面试官期望高,失望就更高。
- 在学校整的东西,没啥知名度就不要写了。
- github 要有,但是我没有被问过github 中的项目。所以Github装B被打脸概率可能不大。
项目经历问吗?
- 项目经历一般是 面试必问的,重点问的。 所以第一步要优先发掘自己项目中的亮点, 把自己做的工作清晰的写出来。切记不要说“自己的项目也没什么亮点"。
- 自我介绍阶段重点介绍应该也是自己的项目经历、工作经历,擅长什么技术。这时最好自己提前准备一份演讲稿把自己的项目亮点说出来,多练几遍。避免不过脑子,黄河决堤式回答,想到哪里说哪里。
- 一定会让你自我介绍!这是面试必考题。好好准备自我介绍。
常见高频问题呢?
- java 锁,线程同步,Juc 包。线程池
- 内存模型,gc 调优
- mysql 索引,锁,事务隔离级别。
- 常见分布式高可用架构 redis, mysql, zk, mq等。 数据同步,数据分片,数据备份等
需要刷题吗?
一般不会问太多算法题,但是至少一半以上公司都会手撕算法。 把leetcode 各个类型的题都刷十道以上基本没太大问题。 hard题一般不会问
如果自己面试表现非常好,但是因为算法题被刷掉是不是会很遗憾呢?
算法题能扩展一个人的思路,还是有用的。也锻炼一个人编码能力。 个人建议白板算法用 python 非常简洁。更聚焦解题思路
如果自己面试表现特别好,职位匹配度非常高。 算法题是可以放水的,会挑简单题问。 目的就是 留下你,怕你答不上来,避免尴尬
如果自己面试比较差, 算法题答得特别好,会不会扭转面试结果呢? 基本不会, 手撕算法只是辅助。项目经历和基础面试题是核心。
面试结果可以问吗?
如果没有面试到 hr,或者 终面面试官没有明确 hr 会联系,我基本都会问。 或者问一下自己的不足。 一般都会告诉自己。记住如果你面试通过了,面试官对你态度会非常好。如果对你态度不好,基本上就是挂了。(我有次去小米面试表现很差,简历都被退回来了,告诉我咋出门,面试官就回工位了。我不用问,就知道面试结果。)
手撕算法OK,也会被刷掉。 我在陌陌就是 手撕算法非常完美,结果还是挂了。
一般几轮面试?
不算 hr ,基本都是三轮。 但如果二轮面试官开始扯虚的,和你介绍项目,问你职业规划 也许二面就是终面。 不清楚就问一下面试官。
顺便吆喝一声,技术大厂机会,前后端测试可捞,最后祝大家面试顺利。
平时工作划水, 面试临时抱佛脚行不行?
不行
- 当面试官逼问项目细节时, 如果平时没有对细节特别熟悉,做事马马虎虎,技术深度不够,例如 技术选型为什么这么做,其他方案?优劣势是什么? 如果没有调研,面试时,很快会露出马脚。
- 如果对项目的整体架构不熟悉,只熟悉自己的模块,也会可能被面试官问到关联的模块,项目如果自己不熟悉,马上就会支支吾吾。如果你回答,这块不是我负责的,我不太熟悉,就会让面试官质疑你:主动意识不够,全局意识不够。评价时会被评"只能完成自己模块内的工作,对系统的全局没有了解,主动意识不强。自我驱动意识差"
- 工作时,可能仅仅聚焦业务,对于项目中应用的技术关注不足。 面试时候就会被面试官揪住。如果当时不思考清晰,并且面试前没有意识到这块技术风险, 就会给面试带来很大风险。美团面试官曾问我,介绍一个你主要负责的 参与方最多,周期最长,最复杂的一个项目如何推进的? 如果平时工作不积极,不主动思考,面试被摊上这么一个问题。基本上哑口无言。 (我当时在现场就目瞪口呆了,汗颜啊)
仅仅看博客,把高频面试题搞懂行不行? (问题驱动式准备面试)
这是必须要做的事情。但是仅仅做到这些还远远不够,例如阿里面试官问
- gc 为什么一定要 stop the world? 一般博客没有给出明确清晰直观的原因。 、
- 一致性 Hash 如何实现? 手撕一下。为什么叫一致性 hash,一致性体现在哪里? 一般博客没有。
- lru 算法手撕一下。 博客有,看一遍就能手撕了?
- redis 和 zk 分布式锁实现如何选型? 各自缺点,优势?项目使用时如何避免缺点带来的负面影响?
- 如何基于 AQS实现获取锁的公平性非公平性?
面试官甚至给你埋坑,故意说一个错误的,看你能否反驳。
我之前被带坑过, Java线程池问题
面试官问: 是先到 max size 还是先添加到阻塞队列?
我说 阻塞队列满了才会继续创建线程到max size
面试官: 是这样吗? 那么如果是无界队列岂不是永远无法到达 max size
面试官问: 是先到 max size 还是先添加到阻塞队列?
我说 阻塞队列满了才会继续创建线程到max size
面试官: 是这样吗? 那么如果是无界队列岂不是永远无法到达 max size
我说: 对啊,有道理啊,我可能记错了。然后被面试官带偏了。我说: 对啊,有道理啊,我可能记错了。然后被面试官带偏了。
所以结论是,光看懂记下来,不够,要深刻理解。时刻带着问题去学习。问题驱动式学习。 最后你会发现,过了许久,你印象最深刻的还是自己当初提出来的疑问及其解决思路和答案。
总结一下重点:
- 面试必考自我介绍,记得准备好1-3分钟的演讲稿,多练习几遍。
- 简历写的内容一定要精通,不要写自己不熟悉的。
- 及时总结结论,习惯性的1、2、3 条理性的回答。
- 求同存异,千万不能争吵,有分歧时,先理解一下面试官的意思,分歧在哪里。
- 坦诚自己系统的不足,千万不要打肿脸充胖子。
- 平时工作要努力、多思考。临时抱佛脚容易被识破。