其他
看到团队最近做的一个技术实习生面试实例,很有意思。面试官是我们创新工场南京研究院的冯霁博士。来面试的是一个刚读完大二上学期计算机课程的学生。冯霁的面试题挺简单的:梯度下降已经二百年了,为什么上世纪80年代的反向传播算法会被认为是人工智能技术发展的里程碑?前人难道不知道梯度下降?与硬做梯度下降相比,1986年提出的反向传播算法多了些什么?这本是一个AI算法面试的热身题。熟悉深度学习基础知识的随口就可说出标准答案。没想到小伙子虽来自计算机专业,却还没来得及系统学习机器学习、深度学习知识。如果就此结束面试,给小伙子一封拒信,似乎也说得过去。但冯霁换了个处理方法:给小伙子一晚上时间去调研并写出报告。小伙子连夜查资料、做调研,知道反向传播是通过动态规划来做梯度下降,复杂度由此降低到了线性。第二天,他给出了一份四页纸的报告。报告的逻辑很清晰,从问题描述,到扼要回答,再到具体算法梳理,时间复杂度推理,最后还附上了历史资料及其他类似目的的优化算法简述。其实,用一晚上时间做出调研并给出答案不算啥难事,任何一所大学计算机专业的本科学生都应具备这项基本素质。但这位同学所写的报告不仅给出了答案,还展示了很不错的信息梳理和表达能力——通过网络查询到的知识,被他组织成了自己的语言和逻辑,废话不多,条理清晰,其中的手绘示意图和手写公式、注释也挺见功力。大一大二学生,都是计算机科学领域的新手,正在入门和构建知识体系的阶段。我们很难通过一大批知识性问题来简单评估他们的能力水平。换句话说,这个阶段的孩子,最重要的不是学过和记住什么样的知识,而是是否掌握了快速学习知识并构建适合于自己的认知框架,以便将知识梳理成有序脉络的技能。冯霁面试的本就是个知识性问题,但候选人答不出时,冯霁转而考察候选人快速学习知识、有序梳理知识、清晰表达知识的能力——这是面试官应该做的事情。我自己在很多年前也大量带实习生。那时,有一批来自北大清华等名校的大一大二实习生,他们从能力特质上可明显分成两类:不会学习也不会梳理知识的;既会学习又会梳理知识的。头一类实习生看上去什么都会一点儿,但明显缺少系统化的学习方法和适合自己的认知框架。比如,有位大二的实习生写代码很快,做一个复杂的数据流逻辑时,东看看Stack