面试官手记:算法题没写出来,但开源项目救了他

做技术面试官这些年,筛选简历时见过太多光鲜亮丽的背景,却也常常被一些“不起眼”的细节打动。今天想分享的这个面试案例,核心很简单:一位候选人,算法题发挥失误没写对,但我从一开始就因为他的开源项目决定面试他,最终也因为这个项目,给他高分通过,也想借这个案例,跟正在求职的应届生聊聊,什么才是面试中真正的加分项。

每天筛选几十份简历,大多是名校背景、大厂实习加持的应届生,难免会审美疲劳。直到看到这位硕士候选人的简历,没有亮眼的第一学历,也没有大厂实习经历,项目经历也只有一个Linux相关的开源项目,但就是这个项目,让我瞬间停下了滑动鼠标的手——这个开源项目,其实并不是什么高大上的生产力工具,只是个安卓手机上的极客工具,然而,我正好也喜欢用它。为了排除夸大的嫌疑,我打开他的GitHub首页,发现不是一次两次的零星提交,而是长达一年多的时间里几乎每天都提交,这简直是金牌贡献者!不用多犹豫,我立刻敲定了面试邀约,甚至在面试前就已经对他多了几分期待,心里暗自希望他能有不错的表现。

面试当天,我没有先问常规的八股知识点,而是一开场就直奔主题,问他这个开源项目的细节。果然,他一提到这个项目就打开了话匣子,对自己在这个项目中做的贡献如数家珍。虽然他只是这个项目中看起来不那么核心的软件仓库维护者,但是却需要对Linux和构建系统的极度熟悉和持续的热情,才能几乎每天都去更新仓库并解答issue。

聊完开源项目,我给他出了一到“肌肉记忆”算法题,然而这次,他失误了。做面试官这么久,候选人在算法题上的失误,大致可以分为三种:第一种是完全没思路,就算我提醒了关键线索,还是一脸茫然;第二种是思路错误,却固执地坚持套一些经典算法,这种也是我最反感的——看似背了很多算法题,实则只会机械套用,没有任何独立思考能力;第三种就是这位候选人这样,思路正确,但代码实现有欠缺,属于临场发挥的小失误。

我给他的“肌肉记忆”算法题是:计算2的1000次方。很多同学看到这道题,第一反应就是套快速幂、递归、动态规划,却忽略了最基础的一点——除了Python,常见的编程语言中,普通的数据类型根本装不下这么大的数(这应该是程序员的肌肉记忆)。能快速发现这一点,就已经拿到了60分;可如果没看出来,还拼命跟我讲各种复杂的算法,那只能得0分。

回到这位候选人,他的基础不错,有技术热情,有实践能力,虽然代码题不完美,但是他的“肌肉记忆”又快有准,我决定还是给他高分通过。后续二面三面的结果也不错,顺利入职,成为了我的同事,他工作后依然在坚持贡献开源项目,继续着他的热爱。

我们这个行业有个特点,就是很容易看出这个人只是来找个工作还是对技术工作充满热爱。八股可以背,算法可以刷,场景可以学,但是热爱是装不出来的。不是说面试可以“用爱发电”,而是说,真正热爱的那批人,他们的基础很难不牢,理解很难不深,知识很难不广,而这些都是他们宝贵的财富。

#实习##后端##简历中的项目经历要怎么写##互联网##uu们,春招你还来吗?##投票#
全部评论

相关推荐

一面 一、数据库相关1. 数据库的索引是什么?为什么使用索引?InnoDB的数据索引基于什么实现?2. B+树和B树的差异?3. B+树查询一次的时间复杂度是多少?4. 哈希数据结构的查询时间复杂度?5. MySQL为什么不使用哈希结构?6. 主键设计为什么一般用自增ID,而非身份证号等业务字段?二、进程、线程、协程相关1. 进程、线程、协程的定义?为什么需要协程?2. 两个线程修改共享变量的线程安全问题如何解决?3. 悲观锁和乐观锁的差别?三、TCP/UDP网络相关1. TCP和UDP的核心区别及应用场景?2. 滑动窗口机制的原理?3. 已发送但未收到ACK的问题如何解决?4. TCP三次握手能否改为两次,加超时重试?四、登录系统设计相关1. 支持30天免登录的数据库表设计(表数量、作用、主键、索引)?2. 前端与客户端交互中如何实现30天免登录?3. 是否了解SSO?4. 用户登录态的设计实现有哪几种?是否了解JWT?五、限流与缓存相关1. 高峰期如何避免流量打挂服务/底层存储(从限流和缓存角度)?2. 是否了解令牌桶和漏桶算法的实现、区别及适用场景?3. 缓存击穿和缓存穿透的区别及解决方法?4. 布隆过滤器的原理及误判解决/降低方法?六、Redis相关1. Redis的基本数据类型有哪些?2. set和zset的区别?3. zset的原理?七、其他技术相关1. 是否了解AI Coding(如OpenAI工具、Spectacle Coding、Web Coding)?Spectacle Coding解决了哪些问题?2. 是否接触过Go语言?
查看26道真题和解析
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务