清华大学软件学院工程硕博面经

情况说明:

入thu确实是意料之外,不过毕竟是工程硕博,可能bar低点。当时我就在浏览各个cs相关学院的工程硕博,比如自动化,贵系,软件等。后来发现只有软件的联培企业最lk,全是一些国企(例如中国船舶、中国钢铁等),那自然报的人就稍微少一点,bar也就稍微低一点,所以就报了,当时其实是可以填写2个志愿的,我当时忘记了只提交了这1个有点可惜了。

既然入thu,那就去“参观”一下吧,毕竟面对的全是大佬,很难很难拿到offer。

整体流程:

软件学院的工程硕博只有面试,没有机考,听说贵系的工程硕博好像有机考。

资格核验:

综合考核:

包括个人陈述(可以使用PPT,时长控制在10分钟内)+答辩(综合考核重点考查申请人对专业领域基础理论知识、英语口语表达、运用知识分析解决问题能力、协同合作能力、创新潜质、工程素养、长期从事相关工程领域科学研究和工作的兴趣意愿等)

实际面试流程:

首先使用PPT进行10分钟以内的个人自我介绍;

接下来进行专家提问(首先是一位老师提问算法题,不是特别难,我简单回忆一下)

问题1:

问:快速排序和归并排序的时间复杂度是多少?

答:都是O(nlogn),不过快排在最坏情况下会退化到O(n^2),而归并排序在所有情况下的时间复杂度都是O(nlogn)。

继续问:好的,那么在一般情况下快速排序和归并排序哪个更快一点?为什么?

答:归并排序,因为归并排序具备稳定性,当数组中含有大量重复元素时效率要优于快排。

继续问:你确定么?我是说一般情况,就是不考虑有大量重复元素的这种特殊情况。

答:(心里暗想:既然老师这么说了,那答案肯定就是快排了,但我不知道为什么,于是回答)那应该快排更快一些,因为它名字就叫做快速排序。(说完老师们都笑了,我也绷不住了,真不知道为啥)

(我后续又在网上查了一下,在一般情况下,确实是快排更快。因为平常我们计算哪个更快,单纯是从时间复杂度方面去考虑,却忽略了其他操作造成的时间开销,归并相比于快排而言,采用的是分而治之的思想,相当于要进行logn次的复制操作,这些操作也会造成时间开销,综合起来看就是快排在一般情况下更具备优势。可以看一下下面这篇文章)

【排序算法】归并排序与快速排序:深入解析与比较_归并排序和快速排序-CSDN博客

问题2:

问:一个数组中,只有2个数出现了1次,其他所有数都出现了2次,那么如何在保证空间复杂度尽可能低的情况下快速找到这两个数呢?

答:嗯,我觉得这道题可以拓展到只有2个数出现了奇数次,其他所有数都出现了偶数次。采用集合增删、哈希、集合求和方法的时间复杂度为O(n),空间复杂度也为O(n)。如果要使得空间复杂度尽可能低,需要考虑进行异或运算。

异或运算具备的性质是:任何数和其自身做异或运算,结果是 0;任何数和 0 做异或运算,结果仍然是原来的数;异或运算满足交换律和结合律。

因此可以将x初始化为0,然后对数组中的数依次与x执行异或运算,最后得到的结果就是x=a⊕b。

接下来要考虑如何把x拆分开得到a和b。举个例子,如果x=a⊕b=>11010(二进制形式表示),那么就说明a和b的第2位(从低到高)必然有一个数该位是1,另一个数该位是0。我们可以将这个1提取出来得到y=>x&(-x)或者y=>x-x&(x-1)得到y=00010,初始化z为0,接着对数组中的元素a依次进行操作,如果a&y!=0,就将其与z进行异或操作(相当于是把第2位为1的数单独拎出来做异或运算),最后得到的结果必然是a和b的其中一个,再将其与x进行异或即可得到另一个数,这样的空间复杂度为O(1)。

问题3:

问:如何快速找到一个数组中的中位数?

答:不使用std::sort,那样的时间复杂度是O(nlogn)。但可以模拟一下快速排序,快排的思想也是分治,每次划分后都得到了3个部分:1个已经确定下标的元素还有2个待排序的子数组,那么我们只需要模拟这个过程,直到得到的基准元素的下标为len/2-1即可停止。

可以证明得到它的时间代价的期望是 O(n),证明过程可以参考「《算法导论》9.2:期望为线性的选择算法」。

算法提问结束后,接着开始英文问题(请简单介绍一下你的第一个项目,并说明一下你是如何看待人工智能这个研究方向的?)之前只准备过项目介绍,后者没咋准备,就胡说了一番。

接着其他老师就对你PPT中介绍的项目展开提问。这个部分就没啥好说的了,但需要指出的是(明显感觉到清华老师的提问水平比较高,或者说风格不太一样吧,和之前面试经历的都有较大差别,这边老师提问的时候也用了不少英文专业术语,听力聋子的我根本听不懂,一些问题只能连连道歉了)

最终结果:

在坐上✈前往宁波准备滑翔的时候,很意外收到了拟录取的信息,毕竟是华子,当时还激动了好久,之前不少offer都是wl,现在也是有学上了。后来打听了一下,工程博参加面试的人共有14个(工程硕甚至还有2个本校✌,不知道工程博有没有,不过我倒是看见有上交复旦的),最后只招了3个(3个联培企业各一个),还是蛮幸运的吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值