去 THU IIIS 面试

English readers can read the English version here.

这份转录可能有遗漏,顺序可能不对,因为是靠我的回忆写出的。以“:”开头的是我说的话。在一节内,如果只有一个考官说话,则用“考官”表示,否则用不同的数字表示不同的考官。面试官有 8 人左右。

2014 年 3 月,在自主招生之后,我立刻记录了 英文版(面试是用英文进行的),同年 7 月 18 日翻译为中文。没有“译注”的括号表示场景或者原本就有的注释。

这份转录是在保密期之后发布的。

1 自我介绍

考官:在两分钟内介绍一下你自己,说你最想让我们知道的。

:我叫 Gee Law。(译注:中文名省略。)我热爱计算机技术和数学,并且都擅长。我目前是 MSP,它和 Microsoft 有点联系,比如宣传这个平台的最新技术。我喜欢代数学,特别是线性代数,我认为线性性是它的内在美。我也喜欢数学分析。(译注:别问我为什么突然觉得线性性是美的!反正我就是这么一说。)

2 编程语言

考官:你知道什么编程语言?

:C#、C++

考官:举几个编程语言?

:VB6、VB.NET、C#、C++、C、Ruby、Python、Java

3 C++

考官:你怎么看 C++?(译注:我不是元芳!)

:我认为它太复杂了,对我来说,对所有人来说,很难对他了如指掌。不喜欢这么复杂。

考官:怎么复杂?

:看起来(译注:应该是 seemingly,但我原文用的是 lookingly。)相同的句子在不同的上下文可以有非常不同的意思。(我想说的是 Hack vector, vec, my_struct; vector<vec> my_struct; 的例子,其中 Hackoperator <operator > 都重载了。)

考官:比如?

:现在很难说出一个具体的例子。

4 Ruby

考官:你怎么看 Ruby?它为什么是一个成功的语言?

:我没用过 Ruby,只是知道名字罢了。

考官:好吧,那说点实在的,你用什么语言呢?

:Visual Basic、C 家族。

考官:那你读读这段代码,输出什么呢?

void f(int p)
{
    if (p < 200) f(p + 2);
    else p + 200;
}
int main()
{
    int i = 8;
    f(i);
    printf("%d", i);
}

:是……八?

考官:好的。

5 MSP

考官:你说你是 MSP,你在 Microsoft 做了什么?

:我不 Microsoft。

考官:我知道,但是和 Microsoft 有联系,说说你做了啥。

:我制作了几个 Windows 应用商店应用,发表了一些网络广播,宣传它的技术。MSP 就像是一个 Microsoft 布道师(译注:这里我因为太激动老想说 evangelion,但是正确的是 evangelist,讽刺的是,它们读音迥然不同)实际上我得到了 Microsoft 授予的荣誉——2013 年度优秀 MSP。

考官:哇,但是你简历上没写啊?

:是的,最近才收到证书。

6 数学分析

考官:你说你喜欢数学分析,为啥?

:它是物理的基础(译注:就是这么一说)。用数学分析可以描述物理的东西。

7 成绩的起伏

考官:我看你简历,成绩有起有浮啊,你……

:有时候我因为一些“干扰”,像是竞赛或者是什么的。回到正常的学习生活的时候,我的成绩就恢复了。

考官:那就是说除了干扰之外你都不错?

:是吧。

8 快速排序算法

考官:你知道快速排序吗?(译注:好激动!终于有公司面试程序员的感觉了!)解释它的算法,不需要代码。

:它使用了分治法。首先选定一个特定的元素,叫它支点,然后把所有小于支点的放在支点左边,大于的放在右边,然后递归地做下去,最后就排好序了。

考官:对。你知道堆排序吗?

:知道。

考官:哪个更快 / 更好?

:堆排序更稳定。平均来说,快速排序更好。

(我说的是稳定,但是实际上这种说法错误,应该是“数据敏感度低”。)

考官:是吗?

:是……吧?有随机优化的肯定是。

考官:你知道复杂度吗?

:是的,都是 nlognn\log n。(译注:指渐近时间复杂度。)

考官:那为什么快速排序更好呢?

:常数。

考官:是的,常数。

9 最高奖项

考官:你获得过最高的奖项是什么……在信息学方面?

:NOI 二等奖。

考官:NOIp?

:不,NOI,全国信息学奥林匹克联赛。还获过 CCC 的奖和其他的小奖。

10 竞赛经历

考官:你在竞赛中有怎样的经历?好的?坏的?

:我学习了很多算法和它们背后的思想,这是好的。坏的嘛,就是我习得了很多糟糕的编码习惯。(译注:其实没有。)

考官:比如?

:比如,所有的变量都是abcdefg……

(大笑)

11 无限个素数

考官:你知道如何证明有无限个素数吗?

:知道,我见过很多证明。(译注:当时有点逞强啦 >_<)

考官:(笑)说一个就行。

:是 Euclid(欧几里得)完成的,用……反证法。(译注:这里我一时忘了怎么用英语说“反证法”。)

考官:反证法(译注:by contradiction),说说证明大概。

:假设只有有限个素数,它们的积加一和所有的素数互素……

(微笑)嗯,对。

12 线性代数

考官 1:你说你喜欢线性代数。当你做矩阵乘法的时候,你可以按照一个规则……就是规则。它的背后的含义是什么?我的意思是,规则就是规则,但是有什么背后的含义?(译注:原文是 physical background,但是我觉得并不需要是物理的、实体的。)

:这个地儿我得说汉语。就是映射的复合嘛。(译注:刚刚这句说的是汉语。)啊对了,就是两个变换的“组合”,或者说两个映射的。它产生第三个变换。(译注:这里我说成了 combination,稍后可以看到别人更正我。)

考官 1:是的。并且,你会说英语嘛。

:是啊,刚刚就是突然想不起怎么用英语说了。

考官 2:(对考官 1)他说对了吗?

考官 1:(对考官 2)是的,他是对的。(对我)不过你或许想说的是“复合”。(译注:composition。)

:啊,对,是“复合”。(译注:欲哭无泪啊。)

13 阶乘

考官:你能估计 100!100! 有多少位吗?你知道阶乘吧?

:知道,就是阶乘嘛。(译注:我翻译了一下 factorial,表示我知道意思。)

考官:好。

:这里我们需要一点点积分,我们需要估计 log1+log2++log100\log1+\log2+\cdots+\log{100},或者用那个……那个“我忘了叫啥名字”公式。

考官:是 Stirling 公式(斯特灵公式)吗?

:啊对,对于 n2n\geq2 它的位数估计很准,我以前试过。

考官:好吧,但是我只是想让你估计一下。如果有计算器,那就简单死了。不过现在可没有计算器哦。

:好吧……(开始计算,估计 log1++log100\log1+\cdots+\log{100},悲剧是忘了除以 log10\log{10})大概是 400(位)?

考官:好吧。(译注:这个估计比较准确了,除了忘了除以 log10\log{10},而且这个估计的错误是很明显的,因为 100 个两位数乘起来不可能有 400 位。)

14 职业规划

考官:你的职业怎么规划的呢?你以后想干啥?

:我想做纯学术研究,嗯,学术研究。

考官:你为什么想要加入我们呢?

:嗯……在交叉信息学院(译注:“交叉信息学院”用的是汉语,因为我当时不知道怎么说)我可以从基础开始学起,从基本的开始学起。只有有了这些基础的东西,我才能在学术研究中越走越远。

考官:可以叫“姚班”(译注:Yao class)😊

15 最长的代码

考官:你写过的最长的代码?

:读过的?(译注:当时没听清。)

考官:写!

:我认为应该是一个 Windows 应用商店应用吧。是一个叫“哔哩哔哩”的视频网站的客户端,它允许在视频上直接写评论。(译注:这个拙作我都不敢看了现在!)

16 Lync

考官:你知道 Lync 吗?

:知道。

考官:它是 Visual Studio 的一部分。

:不。我认为他是 Office 365 的一部分。(译注:我好厉害,居然说的是三、六十五,而不是三百六十五,特别地道!)

(注:我后来猜测他说的可能是 linker / link,想考我链接器、链接的知识?)

考官:哦?咱们先存异……(计时器响铃)

:时间到?

考官:是的。

:我应该把这张草稿纸带走吗?因为用过了。

考官:不,不用,你不用带走它。

:好的,再见!

……

面试后,面试者对后勤说:这次休息时间长一点儿。

(注:这个我认为是“后勤”的人后来证实是 IIIS Student Affair Officer 张燕老师。)

请启用 JavaScript 来查看由 Disqus 驱动的评论。