大厂技术面试中的开放类问题该怎么答?
作者:互联网
文章目录
如何面试大厂系列
序号 | 内容 | 链接地址 |
---|---|---|
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 登场。与其他环节相比,开放类问题的难点在于较强的不确定性,面试者没办法提前做充分准备。同时,答题方向也不太明确,没有标准答案,以面试官的主观评价为主,如果答到了面试官的心坎上,会给面试者加分,相反,如果面试者答得不好,可能会被面试官一票否决。
核心考察点
那么开放类问题真的无解吗?答案是否定的。任何一个考察环节,都不会脱离技术面试核心的几个考察目标:
- 编码能力:考核面试者数据结构和算法、编码规范等。
- 知识储备:考核面试者专业知识的广度和深度,能否针对实际业务场景选择合适的方案解决。
- 时间管理:考察面试者对一项或多项任务能否进行分解,并制定合适的计划去完成。
- 团队协作:考察面试者能否与其他成员合作完成任务,是否熟悉典型的协作工具和协作思路。
- 知识管理:考核面试者对已有知识的沉淀,如何获取、学习前沿技术。
接下来,我们就围绕以上核心考察点,来分析一下典型题目类型,并给出应对方案。
1. 方案设计题,考核知识储备
方案设计题考察技术选型能力,你需要提供基础可运行策略,以及其它可选解决方案,并进一步给出各个方案的优缺点。从问题的目标倒推解决方案,有些问题如高并发需要从系统全局角度设计系统的架构,考验知识的广度,有些问题则更加考验知识的深度。
我们以一个实际问题“识别字符串中出现的地名”为例来说明。
通用的解题思路分为四步:
- 第一步,拆分:将较大的场景问题拆分为若干个具体的子问题,分步求解。示例是一个相对单一的问题,即命名实体识别任务,子问题则可以考虑出现多个地名、上下级行政级别、地名重叠的扩展情况。
- 第二步,枚举:对于每一个子问题,枚举出尽可能多的解决方案。对于示例问题,考虑两种典型的解决方案,前缀字典树(Trie 树)和序列标注模型。
- 第三步,对比:设定若干维度,对各个解决方案进行对比。分别从效果、效率、依赖外部资源情况、快速修复能力这几个维度,综合考虑两种方案各自的优缺点。
- 第四步,合并:将子问题进行组合,根据各个方案的优劣、互补性,权衡合并为组合方案。由于字典树与模型各有优劣,属于互补的场景,最终给出一个两者结合的架构方案(如优先走字典树,无结果再走模型的串行方案)将会是一个较好的答案。
2. 主观想法题,考核知识储备和知识管理
典型问法是:“你是如何理解 xxx 的”,xxx 可能是开发思想、架构策略、算法思路等,具体如 CI/CD、技术中台等。被询问的策略或思想,通常是你所在领域经常接触到的。那怎么回答呢?你可以先列举该策略思想相关的其它版本,说明各个方案适用的应用场景,分别用于解决怎样的特定问题,再围绕各自的优点和缺点展开阐述。
比如说,在面试 AI 相关候选人时,我曾问过这样一个问题:“你怎么看待 AI 落地中的规则方案和模型方案?”你有没有发现,上一个问题中两个解决策略就是这个问题的答案。Trie 树是一种规则解决方案,而序列标注模型是一种模型解决方案,如下表所示。我们可以沿用前文的维度对比,详细阐述两者的优缺点,同时强调最终采用结合的、互补的方案将会更好。
总的来说,针对主观想法题,如果你能给出这样一个实际的例子,那么答题思路将会更加清晰,也会让你具有更强的说服力。
3. 延伸算法题,考核编码能力和知识储备
延伸算法题通常有两种扩展问法,一种是“xxx 算法有哪些应用场景”或者“你在哪些场景用到过 xxx 算法”。比如说我问你,“Trie 树有哪些应用场景?”你应该可以想到有“词汇联想”,例如下图中给出的搜索引擎的输入提示例子。
另一种问法是基于当前算法给出扩展版本。例如回答词汇联想后,面试官可能继续问你“联想结果的排序,怎么加到 Trie 树中?”你可以回答说,一种实现方式是将 Trie 树的节点存储进行扩展,加上词汇被检索的计数,将词汇热度作为排序依据。
基于以上 Trie 树的扩展版本,我们也很容易想到另一个应用场景“热搜统计”。总的来说,在解答这类算法扩展题时,一方面你需要结合自身的知识储备,另一方面你要善于察觉面试官给予的提示,问题往往是递进的,适当举一反三。
4. 综合能力考察题,考核范围宽泛
综合能力考察题主要考核面试者的知识储备,当然其它方面也均有涉及,以交叉考核方式出现,可以说考察范围相对宽泛。
比如对于任务规划能力,问法例如“如何安排时间人力实现地名识别任务”。我们回答这类问题的基本思路可以是,先对任务进行分解,拆分成若干个阶段,包括新技术预研、数据准备、开发、评测迭代、部署测试,然后对每个阶段预估所需时间和人力,最终形成一个可执行的 timeline。
再比如考察资源搜索能力的问题,“当前序列标注模型的 TensorFlow 版本为 2.1,请你判别一下当前机器的 GPU 环境是否支持?”你可以现场上网搜索资料给出答案,通过 TensorFlow 版本找到对应的 CUDA 版本,再对应 CUDA 到显卡驱动版本进行验证。同时这种题还考察你的英文能力,但能较快给出正确答案的候选人也是少数。
总结
以上就是本节课的全部内容了,总的来说,应对面试中的开放问题,做好两个准备即可。一是在思想上建立认知,开放问题考察的是“面试者能否解决实际问题”,需要你在解答时尽可能考虑全面,突出自身擅长的优势项,并及时捕捉面试官的反馈,答到他的心坎里去。二是需要你在平日里的工作行动中,有意识地培养、积累这节课提到的五个核心考察点,在遇到相关开放问题时,就能及时调动知识储备,做到快速响应。另外,你可能也要留心一下,部分面试官会利用开放问题来“套解决方案”,比如不断追问实现细节。
参考文章:整理于极客时间每日一课
https://time.geekbang.org/dailylesson/detail/100056884
标签:面试官,知识,问题,面试,考核,考察,大厂,开放 来源: https://blog.csdn.net/belongtocode/article/details/117811446