心法利器[122] | 算法面试的八股和非八股讨论

心法利器

本栏目主要和大家一起讨论近期自己学习的心得和体会。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有

2023年新的文章合集已经发布,获取方式看这里:又添十万字-CS的陋室2023年文章合集来袭,更有历史文章合集,欢迎下载。

往期回顾

前言:本文一开始的构思是列举一些非八股的问题,供大家思考和参考,但写一半发现简单的列举可能不如直接把思路说明白,所以转为对八股与非八股的提问,可能更能加深大家的理解。

面试的八股网上已经很多了,但是从目前的反馈和讨论来看,仅聚焦八股本身,并不能保证offer手到擒来,因此,本文结合自己的面试和被面试的经历,分享一下面试时八股和非八股问题背后的意义,方便大家提前准备和思考。

目录:

  • 为什么问八股

  • 为什么不只问八股

  • 项目参与的真实性和深度

  • 技术的深度和广度

  • 真实问题的应对能力

为什么问八股

无论是前端、后端还是算法,都有一套非常常用的八股问题,相信大家作为候选人,都会因为要背八股而困扰,但在实际面试中,大家都会被问到,在面试官的视角,这还不得不问,更多是因为如下的原因。

  • 首先,八股所代表的是最基础、通用、常见、必要的能力,八股都不会,很大程度意味着面试人连基础知识都不了解。

  • 面试的目的是筛人,筛人意味着要体现区分度,八股是及格线上下的关键区分点。不要以为八股很简单,在我的经验里,所谓的网上非常常见的八股知识,并不是所有人都了如指掌,例如transformer encoder和decoder的内部结构,常见的类似sgd、adam优化算法,dropout概念和意义,常见的算法评估指标等。

  • 换个角度,八股的形成并非面试官总结,而是面试多的前辈们总结的某一个领域常见的、经过系统整理的面试知识体系,反过来,面试中重要、常见的问题,通常都会在被这个体系覆盖,回到第一点,毕竟八股所代表的是最基础、通用、常见、必要的能力。

因此,八股,是面试中所大概率会出现的,请大家认真对待。

为什么不只问八股

从上一节中的第二点可以知道,八股是及格线上下的关键区分点,此处换言之,他只能区分60分上下,它并不能区分80分段的人和90分段的人,面试是为了优中选优,在公司有大量选择的时候(例如各种互联网大厂、新的AI独角兽),八股的区分度不足以选出足够优秀的候选人,此时八股就不够了,我们需要更强有力的问题来区分强弱。

在之前的这几篇文章里,我有提到新人的成长、晋升、面试等的相关内容。

这些文章里,我有提到大量的有关进阶的思路,简单地说,就是要提升解决实际问题的能力,毕竟功利地,从公司角度人是招来解决问题的,从面试官角度,招人就是在找队友,找契合项目的队友,而解决问题,更多来源于3个点,经验、技术储备以及选择,也就对应了后面三章的内容,即项目参与度、技术深度广度和应对能力。

项目参与的真实性和深度

经验是后续解决新问题的一个重要思路,说白了,就是"之前做过类似的事,所以遇到新的类似的问题可以快速上手解决",有经验的人肯定比没经验的人,更有优势。因此,经验的强弱深浅则是重要的考察内容。

一般地,考察真实性和深度主要可以有如下的问题:

  • 项目的项目背景和核心开发内容。

  • 整体的模块设计和方案设计。

  • 训练集测试集的数据来源、数量、标注方案、处理方法等细节。

  • 是否有进行部署,具体负责模块的部署所需资源,包括训练和推理。

  • 项目过程中有没有遇到什么很难的问题,最后是怎么解决的。

  • 最终方案的评估方式。

  • 整体迭代进程以及后续的优化方向。

这些问题都有比较比较明确的共性:

  • 只有深入参与了,才能回答出来,回答的好坏,直接来源于自己对项目的理解程度。

  • 很多新人,可能会因为被前辈保护的比较好而忽略很多细节,例如数据的来源,方案选择,潜在坑等,此时多观察、多问很重要。

技术的深度和广度

技术储备的其实是项目实际进行过程的弹药,说白了就是招数,这一步可能会和八股有些重合,毕竟八股本身就是考察技术的扎实程度,这里提供一些可能并不算在八股内,但还挺重要的技术广度、深度的思考题。

  • 看你在XX领域做了一些工作,这个领域还有什么比较好的方案可以介绍一下。

  • 这些方案都有什么各自的优缺点,在这个项目里你是怎么考虑和分析的。

  • 如果项目让你继续做下去,你会有什么好的方案优化,以及未来有什么迭代方向。

知识点是可以通过学习甚至背诵回答出来的,但是规划性、个人想法、思路上的内容,比较难去专项学习,要想拔高,这些能力的学习和掌握能让自己更有竞争力,面试官的视角则是更有区分度。

真实问题的应对能力

这点我理解是经验和技术能力掌握后的一个延伸,即解决真实问题的能力,比较简单的提问方式就是给出一个具体的问题,然后能给出具体的解决方案,这里会有几个层级的能力区别。

  • 最基本的能力,就是直接给出解决方案,可以开始动手操作实验。

  • 第二层,能给出多个方案,并能分辨出各自的优缺点,给出一些优先级之类的看法。

  • 方法之外,能给出一些针对真实问题的思考和理解,分析出该真实问题和一般问题的差别。例如电商的客户搜索,和faq问题搜索,百科搜索,一般都有很大差别。

  • 针对该真实问题的特殊性,能给出更加特别的技术方案,该方案会更有针对性,至少言之有理,具有更高的测试优先级,目测有更好的效果。

  • 能根据现在项目阶段,给出适合短期的方案,虽然还能给出中长期的迭代方向,把一个局限的简单问题升级为了一个长期项目性的规划问题。

可见,同样是一个真实的应用题,随着经验和技术储备的丰富,回答起来的感受肯定是不一样的。

相关推荐
柒月的猫9 分钟前
取数位(蓝桥杯2017年试题E)
职场和发展·蓝桥杯
测试杂货铺1 小时前
Selenium操作指南
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
深鱼~1 小时前
【测试面试篇1】测试开发与开发|selenium实现自动化测试|设计测试用例|常见的测试方法|开发不认可提测试的bug该怎么办
面试·职场和发展
互联网杂货铺2 小时前
如何实现基于场景的接口自动化测试用例?
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例
清酒伴风(面试准备中......)3 小时前
面经自测——Redis分布式锁实现/Redis/用Redis实现消息队列的功能怎么做中的RedLock具体解决了什么问题
数据库·redis·分布式·面试·面经·实习·自测
( ᗜ ‸ ᗜ )3 小时前
美的集团后端实习面试
面试·职场和发展
TANGLONG2224 小时前
【初阶数据结构与算法】八大排序算法之选择排序(直接选择排序、堆排)
c语言·数据结构·c++·考研·算法·面试·排序算法
Aloha_up6 小时前
LeetCode hot100-78
算法·leetcode·职场和发展
维齐洛波奇特利(male)6 小时前
(后序遍历 简单)leetcode 101翻转二叉树
算法·leetcode·职场和发展