不少人都会对软件工程师有不擅交流的刻板印象,认为他们大部分工作内容都是面对电脑,不需要考虑怎么提升交流能力。

其实对于软件工程师来说,交流沟通能力是和硬实力同样重要的核心技能。同时,面试官也格外青睐有优秀交流能力的求职者,不少公司都将“communication skill”列在了软件工程师岗位的必备能力中:

Google Microsoft Job Description Communication

那么如何才能在面试中展示自己优秀的交流能力呢?来自Facebook的技术主管Sean Viswanathan就总结出以下几条程序员面试中的沟通技巧,让我们一起来看看吧。

(以下内容节选自Sean的文章"How To Improve Communication During A Coding Interview")

1. 让面试官知道你在干什么,"Think Out Loud"

不与面试官同步自己的想法和思路是很多面试者都会犯的一个错误。面试官不是监考官,他们不仅需要确认你有能力解出算法题,而且需要了解你做题的思路和逻辑。

想要确保面试官和自己思路同步,面试者可以使用亚里士多德的交流三步法:

  • Tell them what you’re going to tell them(告诉面试官你即将用什么算法解决问题)
  • Then tell them(详细解释你的算法)
  • And then tell them what you told them(解释为何你的算法能够解决这个问题)

同时,面试者也可以通过时常询问 “请问我刚才解释清楚我的思路了吗?” 、“请问到目前为止有什么问题吗?” 来确保面试官和自己思路同步。

这样做也可以让面试官及时发现纠正你的错误,并且在你遇到困难时知道该如何给予帮助。

2. 有逻辑地回答问题,避免思维过分跳跃

很多人在面试时都会犯一个常见错误,那就是思维“过分跳跃”。下面我们就用一个面试真题来举例,来看看面试者应该如何在面试中保持逻辑性。

面试问题:How to check if a tree is balanced?

要有逻辑的解决这个问题,面试者需要做到以下几点:

  • Working through some examples(尝试举例分析)
  • Discussing step-by-step process(一步步解释如何分析树)
  • Avoid recursive case without explaining(避免在未解释的情况下跳到某个递归的情况)

如果你在思考时担心自己的思路还不够缜密有逻辑,你可以在白板(whiteboard)或文档(doc)中做笔记,并告知面试官自己需要几分钟的时间整理思绪。

有时候适当的停顿和思考可以帮助你理清自己的解题逻辑。

3. 利用白板辅助回答,解题思路"可视化"

白板(Whiteboard)是在回答问题过程中清晰表达逻辑的利器。在线上面试中,我们虽然无法使用传统白板去展示自己的想法,但仍然可以借助一些线上的文档编辑器或画图工具,来将自己的思路“可视化”。

通过白板来展示思路,面试者就能写出更有逻辑、更清晰简洁的代码。同时,在编写代码的过程中,面试者还需要考虑到以下这些面试官会关注的要点:

  • 你是否将一个冗长复杂的函数分解成了小的辅助函数?
  • 你是否能通过连接每个小部分来解决一个大问题,还是会因为一些不重要的小部分而分心?
  • 你是否花费太多的精力在无关紧要的信息上?
  • 这段代码可以重复使用吗?它是一个通用算法吗?
  • 你是否考虑清楚了用例和代码的环境?

4. 谨慎衡量各种解题思路,权衡法与替代法

很多面试者在拿到编程算法题后,一有思路就开始埋头苦写,反而没有全面地去思考为什么选择这种解题方法,这种解法又最终会对结果造成怎样的影响。

在面试中,我们可以使用权衡法和替代法来从众多解题方法中做出选择。与其使用脑海中蹦出来的第一种解题思路,面试者需要先仔细思考一下是否有其他思路也可以解答这道算法题。

在想到两种或以上的解题思路后,再考虑这些思路的利弊,并根据实际的应用情景作出最佳的判断。

看完以上这些与面试官的交流技巧,你是否觉得自己的面试能力还有待提升呢?

想要了解更多谷歌、亚马逊、脸书、微软等一线科技公司软件工程师求职必备技能吗?想要快速提升CS技术能力,成功上岸吗?

来Offer【软件工程师旗舰核心课程】4月29日,免费试听 点击了解课程详情:https://www.laioffer.com/zh/course/software-development/