招生, 面试和简历, 我学到了什么

招生

人力资源的底层逻辑和大部分投资一样, 投入要大于产出.

我刚开始招学生的时候老板给我的建议是:

只要他的产出大于你花在培养他的时间上, 这个学生就可以招.

注意这个产出是以博士的生产力为基准的. 我当然不希望花了一下午小时教学生, 结果他完成的工作我一个小时就能做完.

比方说我安排学生去读论文然后展示, 刚参与科研的学生可能要花一天去做这些工作. 但因为这些工作我自己做大概只要俩小时, 所以我的主观评价就是这个学生完成了俩小时的工作量. 这也是我教学生读论文做展示的时候经常做减法而不是加法: slides太复杂了一个markdown就可以, 不该讲的不用讲, etc.

这个不等式的两边都很难量化. 我也因此走了不少弯路.

我一开始的想法是技术过硬, 好学能干的学生很容易满足这个不等式. 一来我不需要太多时间指导, 二来他们也更容易有产出.

但这个方式并不好用.

能力强的学生凤毛麟角. 何况人家本可以去大厂找个实习, 挣钱挣人脉, 为什么要在一个小小的实验室里折腾呢? 即使真的有志于科研, 很多学生也会上来说想搞ML, 我很难给什么有益的指导.

后来我和John Regehr聊天的时候. 他给我讲了个笑话我发现非常有益.

军队里把人分成四类, 有自驱力的和没自驱力的; 有能力的和没能力的.

没自驱力且没能力的人最好办, 直接拉出去枪毙就行. 剩下三种你总能找到点什么活计给他干.

我之前招的学生都属于有自驱力且有能力的. 在Davis这样的学生不到2%.

有能力但没有自驱力的人在大学里并不常见.

我看到的简历大部分是能力一般的. 倒也不意外. 一来上大学就是为了提升自己的能力; 二来这几年大学课程雪崩式降低难度, 学生也不见得能学到东西.

我招生的逻辑也从”技术过硬, 好学能干”, 变成了”基础还行, 有足够的自驱力, 愿意学就行”

这个逻辑也主导了我后续安排面试和看简历的流程.

面试

一开始面试学生的时候经常容易聊不到点上. 哐哐说了一个小时, 还是对他的状况了解的不是很充分.

又或者学生很紧张, 有状态发挥不好出来. 毕竟个人能力不是游戏里的固定数值, 有时候会受情绪, 天气甚至中午食堂有没有牛肉的影响.

这种时候我得去缓和下气氛, 聊的东西会想要严肃但又不能太严肃.

搞到最后发现聊这些话题是最好用的:

简历

简历是一定会聊的.

我会挑一个看起来最复杂的项目, 掰开说说.

我想知道的是, 首先这个项目是不是看起来有那么复杂.

其次这个学生在其中有多少贡献. 贡献程度, 就注意听他说的内容里有多少是”团队相关”的, 有多少是”个人相关”的. “我们最后拿了一等奖” 对我来说意义不大, 反而是”我负责写了XYZ的代码”更让我感兴趣. 同时他自己做过的事情也适合深挖下去.

有时候也会聊聊团队合作. 问问他们是怎么分工的, 谁决定谁做什么, 出现矛盾没有.

最后就是, 他有多少收获. 无论是技术还是合作, 我想知道他是那种做了一件事然后就过了的人, 还是”做事, 总结, 成长”的那类人.

掰扯一门你最喜欢的专业课

考察技术基础就像是丈量一个水库的平均水深. 一竿子一竿子的去戳费时费力, 而我只需要一个大概.

所以你可以问一句, 你这水库, 最深的地方有多深.

类似的, 这个问题等于是在问, 你觉得你最能打的科目是什么.

这个问题好在可以让学生自选话题. 之前我面试的时候总是我问他答, 问到不会的就很尴尬, 我得找能让他有话聊的东西. 这下好了, 你自己说说你会点啥.

从他”最喜欢”的专业课里随机抽取一些知识点开始提问拷打, 可以很快了解他的技术基础. 这个时候我就会期待非常高质量的回答, 毕竟是你自己说了”最喜欢的”.

如果课本内的东西聊的不错, 我会开始往课本外聊. 主要是看他有没有去试图自学, 看看自驱力.

我曾经和学生从快排聊起. 看他基本算法很熟悉, 深入问最坏复杂度; 怎么构建一个输入能触发最坏时间; 怎么规避. 这就可以深入聊到优化, 小于四的短列表有没有必要快排; 怎么加速.

一直深挖到答不上来, 给点提示, 看看他能不能自己搞明白.

所以从学生的角度看, 如果你发现面试题有些特别难, 完全不会答, 那完全没问题, 甚至是好事儿. 反而是如果你从没遇到这样的, 那说明我已经简单直接的判断出你的深度了.

小概率很强, 比如我有个学生来面试, 笔记本打开亮了个Arch, 强无敌, 不用聊快排了. 大概率很菜, 我在水时间免得让学生感到不舒服.

顺便就不得不提一个问题: 如果学生说了一个我不懂的学科怎么办?

那就让他讲给我听, 考察一下沟通能力. 如果一个他最喜欢的东西他都掰扯不明白, 那抑或是他其实不太懂这玩意儿, 抑或是没有足够的表达能力, 哪个都不是好事儿.

我有面试过一个学生给我解释生物信息学的一些玩意儿. 开局就是蛋白质怎么怎么样, 就是完全不考虑听众听不听的明白, 而且我试图提问也会被他打断. 这种情况我就没法招进来.

让学生事前自学东西

我去上科大面试的时候一个群面就是学校安排教授给我们一群高中生上大学生的课程, 一节课以后看你听懂多少. 当时罗喜良给我们讲频分多址和码分多址我到现在都印象深刻. 我觉得这是一个非常好的面试题目.

我在面试前一周发给学生一些文档, 我经常用LLVM教程. 我会给他们发:

  • 一个小时的Youtube教程, 整个系统从头到尾给你掰扯个大概
  • 一个”100秒教你LLVM”这样的短视频
  • 完整的LLVM文档

面试的时候就问他看了多少.

最糟糕的是啥也没看的, 甚至强行说自己看了的. 也不谈文档啊, 实操啊, 我承认上学忙而且字儿多.

但是看看视频总是说的过去的吧 (何况有短视频!)

我招的第一个学生就和我说, 嘿我编译了LLVM, 但是遇到一些问题. 那非常好, 我们来聊聊具体是什么问题, 怎么解决. 面试直接变成了现场Debug. 这样的情况几乎符合我对一个学生的全部期待: 拿着我布置的任务, 完成了告诉我结果, 完不成告诉我遇到了什么问题.

简历

提高信息量

我读过两三页的简历, 也读过字体贼小得眯着眼睛看的简历. 尽管我很支持在简历里写上你做的事情的背景, 经过和可量化的结果. 但三个月的实习能写个四五行密密麻麻, 其信息密量还是得打个问号.

咱就是说, 官大到中共中央总书记, 在自我评价里也只有”三件小事”:

确立了社会主义市场经济 把邓小平理论列入了党章 提出了“三个代表”思想

三行三件事, 都 不用换行, 甚至还能有空地儿写上”军队一律不得经商”.

我经常发现的问题是简历里有一吨无效信息看的我头疼. 不妨做一个非常夸张的思想实验: 为什么不在简历里写六级600分呢?

因为能出现在美国读书就说明英语不会差. 我能收到这份简历就”暗含”了语言水平过关.

同样的道理, Markdown, Python, 或者Git都是不用写进简历的东西. 你放个个人主页我就知道你会了.

有的人会写上一些专业课. 倒也不是不行, 写一些高阶课程还能引人注目, 但是基础课程大家都得修, 没啥必要.

GPA > 3.70差不多得了

我读本科的时候因为GPA内卷深受其苦. 然后我到了另一面, 来负责招生的时候仍然深受其苦.

学生想要更高的GPA, 他们就不会去选择给分低的教授或者难度大的课程. 这导致了一个怪相, GPA越来越高, 但学到的东西并不见得越来越多.

当一些讲师/教授为了迎合学生主动降低课程难度的时候, 这个问题会更加矛盾. 讲师们受迫于他们不能控制的因素而不得不降低难度, 比如大学的政策或者学生的投诉.

其结果就是, 我在招生端, 只需要看到GPA 3.70以上就可以了. 3.71和3.99的差别不见得很大, 甚至在科研能力上可能倒挂.

我都问学生要成绩单. 我一般会单独去找几门核心课程的成绩: 数据结构, 操作系统, 体系结构和线性代数. 我认为这几门课对计算机至关重要, 不学明白等于没学计算机. 如果都是A我会继续考虑. 如果额外选了计算理论, 编译原理之类的硬核课程我还会高看一些, 哪怕没有拿到A.

警惕专业课P/NP

一个可能是UC Davis才有的特殊情况/个人经验: 核心课程出现P的基本不用给面试.

Davis有个我爱恨交加的机制: 学生可以在学期中途把课程评价从等第 (A, A-, …) 转换成 P/NP (过/挂). P/NP的课程不计入GPA, 意味着不需要太多努力, 及格就可以获得学分, 还不会影响GPA.

我做学生的时候就非常想要这个. 这个机制可以帮我减轻一些”因为毕业要求非选不可, 但不是很重要我也不喜欢的”那种课程的负担. 这样我可以把更多注意力放到更重要的事情上.

但我发现很多学生把这个机制误用了, 反过来把专业课程改成了P/NP. 我经历了几个非常高GPA, 结果计算机的课程两三个是P/NP, 反而是一些与计算机无关的课程分数很高的成绩单和面试以后五味杂陈.

因为这样的高GPA在我一个”招人来做计算机科研”的视角来看, 是毫无意义的.

我的感受是, 如果学生把专业课改成P/NP, 不仅意味着他前半个学期没学明白 (没法退课了才会改P/NP), 自知拿不到A-; 而且大概率在后半个学期直接摆烂.

主动一点

每次我要招学生的时候, 我都会让系里面的小秘帮我发个广告. 与此同时在微信群里广而告之.

尽管中国学生在信息上有先发优势, 我收到的一半简历却来自另一个十几亿人口的亚洲大国.

我发现很多中国学生能力并不比隔壁人口大国的学生差, 但就是很害羞.

就投个简历, 来随便聊两句, 有什么大不了嘛.

个人主页/课程项目是个很好的项目

我遇到的一些学生的困境是, 他们的简历里没什么项目可写.

我看完这么多简历的印象是哪怕个人主页也是一个很好的项目, 尤其是对于大二的学生而言. 顺便我读简历的时候也能有一个明确的信号: 这孩子自驱力还行.

虽然看起来好像没有涉及太多的技术, 毕竟现在个人主页已经可以很轻松的搭建起来了. 但一套基于Hugo之类框架的静态网页仍然说明你可以把一个项目从头到尾跑通:

怎么配置Git/Github? 怎么在本地配置VSCode? 怎么写Markdown?

高级地点的自己买个便宜域名怎么配置DNS? 怎么构建自己的邮箱?

这些非常基础的内容, 在我面试的时候发现有相当比例的学生不见得熟悉.

没开源等于没写

既然说到了项目, 简历里没什么理由不放上Github链接.

大部分这样的链接我都会点看, 看看代码是什么时候写的, commit log是不是完整. 尤其是团队项目, 你承担了多少代码量, 在团队里的作用.

这种信息基本开了github都能看到. 装点门面滥竽充数的一眼就能看出来.

比如我经常看到一个代码库, 就那么一两个commit, 日志基本没有. 等于没写.

Related