大厂技术面试中的开放类问题该怎么答?

如何面试大厂系列

序号内容链接地址
1大厂面试时,面试官会考查哪些能力?https://blog.csdn.net/belongtocode/article/details/117810750
2如何在国内互联网大厂面试中游刃有余?https://blog.csdn.net/belongtocode/article/details/117810951
3如何全面、高效地准备大厂的技术面试?https://blog.csdn.net/belongtocode/article/details/117811162
4在大厂面试中,如何应对算法能力考察?https://blog.csdn.net/belongtocode/article/details/117811339
5大厂技术面试中的开放类问题该怎么答?https://blog.csdn.net/belongtocode/article/details/117811446

你好,我是张凯。

“又栽在了开放问题上,好像怎么回答都答不到点上”。最近一些朋友纷纷向我吐槽,在面试中,除了典型的 Coding 和项目描述部分,开放类型的问题似乎越来越多。这也是近年来企业面试的一个趋势:企业越来越看重候选人“对实际问题的解决能力”,所以,考察综合能力的开放问题,渐渐成为了技术面试中的必备环节。

这节课我将结合自己作为面试官以及面试者的一些经历,聊一聊开放类型的问题该如何解答,给你提供一些参考。

开放类问题,有时候也称为场景设计题,会围绕一个预设的场景展开,让你代入其中,答案往往不唯一,重点考察你是否能够解决真实问题。开放类问题通常出现在面试的中后期,当你通过编码、专业知识和项目经验的考核后,它会作为一种 Bonus 登场。与其他环节相比,开放类问题的难点在于较强的不确定性,面试者没办法提前做充分准备。同时,答题方向也不太明确,没有标准答案,以面试官的主观评价为主,如果答到了面试官的心坎上,会给面试者加分,相反,如果面试者答得不好,可能会被面试官一票否决。

核心考察点

那么开放类问题真的无解吗?答案是否定的。任何一个考察环节,都不会脱离技术面试核心的几个考察目标:

  • 编码能力:考核面试者数据结构和算法、编码规范等。
  • 知识储备:考核面试者专业知识的广度和深度,能否针对实际业务场景选择合适的方案解决。
  • 时间管理:考察面试者对一项或多项任务能否进行分解,并制定合适的计划去完成。
  • 团队协作:考察面试者能否与其他成员合作完成任务,是否熟悉典型的协作工具和协作思路。
  • 知识管理:考核面试者对已有知识的沉淀,如何获取、学习前沿技术。

img

接下来,我们就围绕以上核心考察点,来分析一下典型题目类型,并给出应对方案。

1. 方案设计题,考核知识储备

方案设计题考察技术选型能力,你需要提供基础可运行策略,以及其它可选解决方案,并进一步给出各个方案的优缺点。从问题的目标倒推解决方案,有些问题如高并发需要从系统全局角度设计系统的架构,考验知识的广度,有些问题则更加考验知识的深度。

我们以一个实际问题“识别字符串中出现的地名”为例来说明。

img

通用的解题思路分为四步:

  • 第一步,拆分:将较大的场景问题拆分为若干个具体的子问题,分步求解。示例是一个相对单一的问题,即命名实体识别任务,子问题则可以考虑出现多个地名、上下级行政级别、地名重叠的扩展情况。
  • 第二步,枚举:对于每一个子问题,枚举出尽可能多的解决方案。对于示例问题,考虑两种典型的解决方案,前缀字典树(Trie 树)和序列标注模型。
  • 第三步,对比:设定若干维度,对各个解决方案进行对比。分别从效果、效率、依赖外部资源情况、快速修复能力这几个维度,综合考虑两种方案各自的优缺点。
  • 第四步,合并:将子问题进行组合,根据各个方案的优劣、互补性,权衡合并为组合方案。由于字典树与模型各有优劣,属于互补的场景,最终给出一个两者结合的架构方案(如优先走字典树,无结果再走模型的串行方案)将会是一个较好的答案。

2. 主观想法题,考核知识储备和知识管理

典型问法是:“你是如何理解 xxx 的”,xxx 可能是开发思想、架构策略、算法思路等,具体如 CI/CD、技术中台等。被询问的策略或思想,通常是你所在领域经常接触到的。那怎么回答呢?你可以先列举该策略思想相关的其它版本,说明各个方案适用的应用场景,分别用于解决怎样的特定问题,再围绕各自的优点和缺点展开阐述。

比如说,在面试 AI 相关候选人时,我曾问过这样一个问题:“你怎么看待 AI 落地中的规则方案和模型方案?”你有没有发现,上一个问题中两个解决策略就是这个问题的答案。Trie 树是一种规则解决方案,而序列标注模型是一种模型解决方案,如下表所示。我们可以沿用前文的维度对比,详细阐述两者的优缺点,同时强调最终采用结合的、互补的方案将会更好。

img

总的来说,针对主观想法题,如果你能给出这样一个实际的例子,那么答题思路将会更加清晰,也会让你具有更强的说服力。

3. 延伸算法题,考核编码能力和知识储备

延伸算法题通常有两种扩展问法,一种是“xxx 算法有哪些应用场景”或者“你在哪些场景用到过 xxx 算法”。比如说我问你,“Trie 树有哪些应用场景?”你应该可以想到有“词汇联想”,例如下图中给出的搜索引擎的输入提示例子。

img

另一种问法是基于当前算法给出扩展版本。例如回答词汇联想后,面试官可能继续问你“联想结果的排序,怎么加到 Trie 树中?”你可以回答说,一种实现方式是将 Trie 树的节点存储进行扩展,加上词汇被检索的计数,将词汇热度作为排序依据。

img

基于以上 Trie 树的扩展版本,我们也很容易想到另一个应用场景“热搜统计”。总的来说,在解答这类算法扩展题时,一方面你需要结合自身的知识储备,另一方面你要善于察觉面试官给予的提示,问题往往是递进的,适当举一反三。

img

4. 综合能力考察题,考核范围宽泛

综合能力考察题主要考核面试者的知识储备,当然其它方面也均有涉及,以交叉考核方式出现,可以说考察范围相对宽泛。

比如对于任务规划能力,问法例如“如何安排时间人力实现地名识别任务”。我们回答这类问题的基本思路可以是,先对任务进行分解,拆分成若干个阶段,包括新技术预研、数据准备、开发、评测迭代、部署测试,然后对每个阶段预估所需时间和人力,最终形成一个可执行的 timeline。

img

再比如考察资源搜索能力的问题,“当前序列标注模型的 TensorFlow 版本为 2.1,请你判别一下当前机器的 GPU 环境是否支持?”你可以现场上网搜索资料给出答案,通过 TensorFlow 版本找到对应的 CUDA 版本,再对应 CUDA 到显卡驱动版本进行验证。同时这种题还考察你的英文能力,但能较快给出正确答案的候选人也是少数。

img

总结

以上就是本节课的全部内容了,总的来说,应对面试中的开放问题,做好两个准备即可。一是在思想上建立认知,开放问题考察的是“面试者能否解决实际问题”,需要你在解答时尽可能考虑全面,突出自身擅长的优势项,并及时捕捉面试官的反馈,答到他的心坎里去。二是需要你在平日里的工作行动中,有意识地培养、积累这节课提到的五个核心考察点,在遇到相关开放问题时,就能及时调动知识储备,做到快速响应。另外,你可能也要留心一下,部分面试官会利用开放问题来“套解决方案”,比如不断追问实现细节。

参考文章:整理于极客时间每日一课
https://time.geekbang.org/dailylesson/detail/100056884

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Apple_Web

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值