面试中的沟通
这件事极其重要
面试中沟通好是一项能让你和大多数候选人拉开差距的技能。准备面试时,我们容易陷入几种错误心态:
- 我必须什么都知道
- 我必须给出最优解
- 我必须不犯任何错
但我们忘了公司和面试官真正想看的是什么:他们想看你会是什么样的员工/同事。我遇到过最好的同事们,没有一个满足上面三条标准。
依我经验,面试官真正在意的能力清单更接近以下几条:
- 候选人能在技术挑战上给出一个合理方案,并且能讲清楚他怎么想到的、为什么这么做
- 候选人能问对的问题澄清模糊需求
- 候选人能展示出处理棘手技术和人际情境的能力
- 候选人比较友好(或者至少不是 jerk)
总有例外
肯定有公司要求你必须给最优解,否则就挂你。但我经验里这是少数情况。
面试中你应该做的
下面是一份非穷尽的沟通清单:
- 问 clarifying question。除非题目极度清晰,我几乎从不直接开始做。问问题能展示你对需求很挑剔。也能展示你领域知识——比如"我答这题时是否要考虑【某真实世界因素】?"就在向面试官展示你了解工程实践的细节。
- 过度沟通你的思考过程。候选人反复犯的最大错误之一就是:默默地琢磨。面试官读不出你的想法,所以除了正确答案之外,他们获得正向信号的唯一方式是听你怎么想。这还有附加好处——如果你在错误方向上,面试官可能会停下你并重定向!
- 真诚地问公司或岗位问题。多数面试都会给你时间问面试官公司/岗位问题。这通常是面试结尾——也是面试官对你的最后印象。这是低压力地展示你"对岗位有兴趣"的好机会,用好它!
- 保持友好。面试很有压力,压力会让我们行为不好。要记得你也是和人打交道——你喜欢和友好的人共事,面试官也是。
- 保持乐观。我通过过一些面的过程中确信自己挂了的面试。**别相信你恐慌中的面试脑。**默认你仍有机会通过,并据此行动。
卡住时怎么沟通
编码题里卡住很常见。这时你可能在恐慌、脑子在翻你学过的所有东西。但重要的是不要在这一刻沉默,因为面试官完全不知道你在想什么。我建议:
- 试着把思考过程说出来。最理想,但不一定每次都做得到。比如卡在 Leetcode 题上,你可以说"我还不确定最终解是什么,但我注意到这个数组是排好序的,所以好的解可能涉及二分查找。"任何能讲出口的内容都说明你不是干坐着、而是在分析。
- 告诉对方你在想。有时你深陷思考里,没法实况讲出来。这种情况下,告诉面试官你"想一两分钟"。这至少让他知道你不是冻住了而是在求解。
- 委婉地要 hint。如果你卡了一会儿,要 hint 往往是最好的做法(拿 hint 解出来通常优于完全卡死)。我不喜欢直接"能给我一个 hint 吗"——那太直白。我更喜欢这样说:"嗯,我在【X】这块卡了一下。你有没有什么建议我可以考虑?"
"好同事"视角
我和潜在雇主沟通时,永远带着"好同事"视角:我怎么表现和沟通,能让对方想要我做他的同事?
🎓 Frontend Interview Prep
One of the pioneers in the software interview prep space, Yangshun Tay, is now offering an extremely comprehensive frontend resource full of coding questions, knowledge challenges, system design problems, and more.
You can sign up for as low as $10/mo, which is an amazing deal if you consider the impact a new job can have on your compensation.
I'd strongly encourage any frontend engineers looking for new jobs to sign up! If you use the following link, I'll get a small referral bonus:
Check out GreatFrontEnd now »