最近面试了一些同学,简单复盘一下我个人对于结构化刷题的看法
23595
2022.09.07
2022.09.09
发布于 未知归属地

自己平时作为力扣刷题人,也经常被题目虐的体无完肤,但最近面试了一些同学,发现一些感悟,特此记录。
核心是希望找一个结构化刷题方法,从之前的五步、到六步、再到七步刷题,也逐渐迭代更多。

复盘关键点:

从6步升级为7步曲结构面试法(需边思走测注,错):

  • 需求确认,需要重复,以及注释并且了解清楚边界,拿到需求确认分

  • 边界防护,拿到严谨性分,错误判断

  • 思(solution)路说明,拿到沟通分,以及照顾面试官情绪。可以不说明多个方案,等到面试官问了再说出来优化方案。但是自己在草稿上思考要写几个点。(其实也可以说,可以训练自己的多方案能力。比如我有三个方案:暴力、贪心、递归。我准备用贪心实现。)

  • 走查代码,写完后要走查一下,拿到严谨分,走查用一个案例。尤其是边界确认(技巧极值法)

  • 测试代码,拿到测试分,表示严谨

  • 注释,拿到代码风格

  • 错题本复盘,记录自己出错的点以便复盘和记录

16关卡

最近面试一些同学,发现如何考察同学是一门艺术,同时也是臻选的方法(虽然自己在算法上也很菜)。仅仅看能不能kill,只能看出编码能力,但是绝大部分候选人如何区别。我想面试中至少有这16关:

  • 能做出来吗?(关键技巧,比如常见的14中模式是否一样get,如果get这个候选人进入一个level)

  • 入参考虑了吗?

  • 题目清楚了吗?

  • 预留可能的坑避免了吗?

  • 代码速度如何?

  • 代码风格如何?

  • 边界考虑了吗?

  • 有自查习惯吗?

  • bugfix能力如何?

  • 是否思维敏捷?

  • 有值得学习的地方吗?

  • 引导思考能快速get吗?

  • follow up能够基本实现吗?

  • 如果不能实现能讲清楚思路吗?

  • 复杂度能能准确拿出来吗?

  • 有沟通能力吗?

  • 自己是否能过掉16关斩16将。

所以每次作为面试官来看大概会一项一项的拿分,拿分也就是心中会对候选人加分,再次总结为:

  • kill分 (get)

  • 入参分 (get)

  • 题目分 (get)

  • 闭坑分 (get)

  • 速度分 (get)

  • 风格分 (get)

  • 边界分 (get)

  • 自查分 (get)

  • bugfix分 (get)

  • followup分(get)

  • 沟通分 (get)

  • 复杂度分 (get)
    至此,一个候选人基本就出来了。高下立断。背后需要太多次训练才能养成习惯了。

面试杂谈

另外根据面试官这个测评维度来准备自己的题目也很重要。
首先面试官预约好之后,在面试前基本会准备好要考察的点,然后一一考察。
基本就是:

  1. 技术基础:
    比如OS(Linux)、网络、C语言、数据结构、如果嵌入式有I2C协议等。也会串联问也可能深度问。
    比如static3作用,提到了静态变量
    -》 就会问静态变量存哪儿?如果回答.data
    -》就再问.data还存了什么?如果回答初始化的全局变量
    -》就再问未初始化的放哪?。。。
    由此来看候选人的技术深度能力

  2. 项目背景:
    一般会根据STAR了解候选人,做的项目,在项目中听到技术点一一深入下去问技术细节。
    比如网络用到了tcp,会问为什么不用udp,
    -》顺便就问了区别。如果区别回答中提到了tcp可靠性传输
    -》顺便就问了滑动窗口原理。如果滑动窗口回答中提到了确认丢包。
    -》 顺便就问了拥塞控制原理......

  3. 手撕代码:
    那就是前面提到的结构化刷题了。只是面试官可能准备了所刷题目的坑有几个、followup有几个、分别考察什么等等。详细就是前面的16关模型了。

以上仅仅是个人思考,虽然自己算法也很菜,但感觉对于结构化刷题挺有用的,更重要的是自己提高了综合能力,尤其是在校同学的工程化能力,比AK更有效,不喜勿喷,欢迎点赞。

--

2022年09月08日 08:33:15

一觉醒来看到收藏是点赞的5倍,求点赞收藏

评论 (34)