多伦多大学CS (MScAC) 面经

avatar 481041
advsta0321
17156
10
楼主本科是商学,有两年软体工作经验。在 2018 年申请 2019 秋季的 CS Program,美国加国都有申,其中梦幻校是多伦多大学的Applied CS (MScAC)。虽然最后面挂了,但详细的记录一下面试中的过程,希望对各位有帮助。还求大家帮忙加米。

先简单介绍一下这个 Program: 多大 CS 排名非常好,裡面也有很多大牛教授。这个学程前八个月是 intensive study, 后八个月是带薪实习。基本上实习时的薪资够 cover 整个 Program 的学费,这也是让我很心动的地方。

如果你是大牛,可能一月就拿到面试了。但像我这种**到四月才拿到,虽然拿到时还是蛮高兴的,满心希望。

面试题目地裡很多人分享了,通常会先从你的简历上问一些经验,技术题则是从观念下去问。我自己从地上搜索,最后整理 12 个观念出来准备,也列出来给大家参考。
Explain (and give examples) for the following concept:
1. Binary Search Tree
2. Hash Table
3. Python v.s. C++
4. Array with binary search
5. Pointer
6. Multi-threading
7. OOP (object oriented programming)
8. Overflow
9. Database
10. Dynamic Memory Allocation
11. Memory Leak
12. Manual Garbage Collection in C

面试前觉得题目并不难,如果考这些可以轻鬆回答,但实际上面试时的过程如下:

面试开始是简单地打招呼,然后问我这边几点,然后他发现时差12个小时,就开始分享他从香港坐飞机回加拿大发现时差很大的故事。虽然没有讲很久,但这边我也只能笑笑点头。

面试官 Matt (教授) 也问我简单的自我介绍,我才讲到 My name is Ray, 他就说其实他蛮有兴趣唸我的中文名。他试了下发先不容易,最后他还是叫我 Ray 为主。

首先他表示手上有我所有申请的资料,包括我的成绩单。他想要确认我修的 Linear Algebra, Database Management, Algorithms, Advanced Statistics 这些比较硬的课为什麽一个 BBA (Bachelor or Business Administration) 的学生需要修。我只好尽力解释我读的比较 Technical 的 BBA,很多课其实是必修的,老师有从 EE 过来的或是本身 Operations Research专。这部分我觉得我答的还可以,至少他最后用 “Technical BA” 来称呼我的系。

然后开始就一串技术问题了。有修过 OO 是吧,那我们来谈一下 design patterns 吧,你知道哪些 design patterns 呢, For example, factory method pattern 是啥,又为什麽要用这种 design pattern 呢。(这题我答的不好,要 elaborate 完全是崩溃)。Matt 人很好说你可以 google, 最后我们一起打开 wiki,读了读之后结束。

Database 他好奇我学了啥。我讲到 Entity-Relationship Model 和 SQL 等等他就给过了,有点可惜他没有深入问。Database 我比较熟啊。

然后他也不考资料结构了,直接问了算法 Shortest Path Algorithm。是 Dijkstra algorithm! (建议知道 Dijkstra 究竟要怎麽发音 ..)。我解释完演算法后,正觉得不错还想得起来。

Matt: 所以你觉得这个演算法的精神是什麽。
我:....... 我认为应该是 greedy 吧,我们贪婪的计算每个点跟起点间的最短距离 !

看来有讲到关键字,Matt 满意的点点头。

Matt: 所以这个演算法被用到解决哪些 Real world problems呢?
我:.....(还真的没想到有这麽多followup), 只好硬是说了一两种可能的应用。

Matt 说想问我 OS 相关的东西。很可惜他没有问我准备很久的 multi-threading, 而是问了 user mode 和 kernel mode 的差别,还有啥是 System Call。我有解释出来,但总觉得自己讲得不够精简。

OS 考完 Matt 突然想知道我 Advanced Statistics 在学什麽。于是我说我们学了 (Conditional) Probability, 各种 Distributions, Estimation (Classic / Bayesian), 然后 Testing Hypothesis, 最后导了些 Linear models. 这部分是我的本分,毕竟做过助教。在讲 loss function 和 gradient descent 时看到 Matt 频频点头。

最后 Matt 就发现我没修过网路的课了。也很直接的问我有没有写过比较 low level 的东西像是 socket。 我诚实的回答没有写过 socket, 结束这回合。

Matt 也看了下我的履历,发现我有一些帮客户看 Infrastructure 的经验,他有点担心我的工作是不是是做 technical support。我有感受到他怀疑我codes 写得不够多,毕竟前面的 design patterns 答的不好,所以我有解释工作大部分时间还是在做 development / 写 codes 的。相不相信就要看他了。

到这边,也许 Matt 也觉得时间不早,竟然已经聊了超过 40 分钟了,就留些时间让我提问吧。我拿出准备已久的提问问题:”这个学程的学生怎麽找到适合的实习公司? 这个 program 怎麽 match 学生和企业?”

Matt 激动地表示这是个好问题。然后开始说了很多。精简后的版本大概就是 “我们有超过30家公司和我们合作,然后只收 60个学生。每个学生都有不少公司可以选择,每间公司都相信我们选进来的学生。所以,他们在删选出面试candidates, 及面试时都会要确保学生有相应程度的技术能力。”

他也顺便跟我分享今年的申请状况:今年 (2018-2019) 超过 1200 人申请,最后会录取 60 个,大概为 5%。委员会会再次 review 他面试的意见和学生的资料,希望在 4/15 前发完 admission。他的回答也直接解决我的第二个提问:”想知道今年这个 program 大概收几个人,需要具备哪些能力或特质” 。

我感觉自己不太稳,只好做最后的弥补(挣扎)跟他说最后我想再次自我推荐一下,硬是讲了为啥想读这个 program, 自己在学校有在重视数学能力培养,以及有业界工作经验等等。Matt 微笑地听完,是时候该道别惹。Thank you, have a nice day 后挂了 Skype, 接下来就是佛系等结果了。

最后两个礼拜后收到拒信。

总结:多大对于转专业面试还是比较严格的,但还是愿意给面试机会。在面试过程中,尽量不要让面试官照着一门课一门课的细节下去问,毕竟有些课也久了忘了,很容易面挂。如果有机会的话,带出自己比较大的 Project, 跟他讲解裡面的技术细节,让他觉得你是个 smart 的人,效果可能会好很多。最后,祝大家 2020 秋季学程申请顺利!

P.S. 楼主最后到美国 CS 排名 25 - 30 的学校就读 CS Master
  • 24
10条回复