很多求职者反应,2016年,各大科技公司的面试题越来越让人看不懂,拿offer越来越难!真的是这样么?
2016年,Google, Facebook, Linkedin, Microsoft, Uber, Snapchat等大型科技公司对于面试的考核有一个明显的变化趋势,从之前的对于某些固定的算法或者数据结构考核,逐渐变成了将考核的重点放在了你是否有能力通过与面试官合理的沟通,去解决一个实际问题。而所有的数据结构和算法,只是解决这个实际问题的工具。换句话说,求职者应该具备的能力并不仅仅是熟悉每一种数据结构并能快速写出某些算法,而是要在了解每种数据结构和算法优劣势的基础上,理解面试官的问题,从而对实际问题建立模型,再自然而然地转化代码。在面试过程中,通过与面试官的交流,不断加深对问题的理解,解决问题并且逐步优化的过程,是面试官最想看到的。很多同学在面试的时候,在面试官描述完问题后,都直接想要提出最优解而因此卡在了自己臆想当中的最优解中,却错过了真正有价值的通过讨论而得出有效思路的这个过程。
举三个例子
第一个例子
是某G公司和某F公司都曾考过的问题,题目如下:
Implement an algorithm that models raindrops randomly falling on a sidewalk .sidewalk is 1m andraindrops are 1cm. How could we know when the sidewalk is completely wet.
有的公司可能会将sidewalk变成rope。这个问题就很好地体现出了具备解决实际问题思想的重要性。这个问题其实有很多需要跟面试官沟通的地方,比如,sidewalk或者是rope的形状是什么样子的,长宽甚至是高是否都要考虑,雨滴溅落的样子是否随机,是圆点还是正方形,雨滴的掉落是否可以覆盖原来的雨滴。在问问题的过程中逐渐理解面试官的意图,循序渐进,先思考如果使得第一个1cm的sidewalk或者rope湿掉,再思考如何使10cm的sidewalk或者rope湿掉,然后是90cm然后是100cm。这个思考过程是面试官非常愿意看见的。这种思维的严谨性和对问题的分析能力,是工作当中真正重要的。
第二个例子
是大家比较熟悉的:求一个数组中第K大的数字。
你先提出一个利用堆的解决方案,面试官能看出你对堆这个数据结构有一定的了解;提出先排序的解法,面试官知道你懂得如何最直接的解决问题,在此基础上再提出“partition sort”的解法,面试官则知道你懂得如何分析问题,简化问题,从而能够提出更优解法。而这样的能力,相比较对直接的算法和数据结构的了解,显然是在工作中更需要和被重视的。
第三个例子
是Sparse Matrix Multiplication的一个变种,求两个sparse vector的multiplication的结果。比如有Vec1和Vec2,那么Vec1与Vec2的multiplication就可以是Vec1[0] * Vec2[0] + Vec1[1] * Vec2[1] + … + Vec1[n-1] * Vec2[n-1].
这个题目看似简单,但是可以问的问题非常多。首先,sparse vector意味着vector中的大部分数据都是0。那么,为了简化存储所需要的空间,显然,直接存储是不明智的。那么第一个问题就可以是,作为方程的传递参数,如何存储这种特殊的数据会节省空间,并且在调用的时候更加高效。这是一个非常非常实际的问题,通过这些问题,可以充分的看出一个面试者的基本功,对计算机的理解以及数据结构基础知识的掌握。解法1比较明显,在数组或者vector中,直接存储非零的index以及该index下的值。存储的方式可以有多种,普遍来看,一种是hash map存储,非零index存储非零index下的value值,操作简单。另一种是正常的数组或者连续空间的vector储存,比如偶数index存储非零index值,奇数index存储非零index下对应的值。有很多同学拿到题目,思考片刻,直接说用hash map存储,那么在面试官的心里,印象分就会降低。因为作为一个面试者,你并没有很好的告诉我hash map的优势和劣势,你的思维也没有那么严谨,因为你并没有问面试官数据量有多大。Hash map的不连续地址空间对数据的查找,在大数据下自然远比不上连续存储空间的访问效率。因此,虽然你觉得你做对了,但这个必要的思考与讨论过程的缺失以及对数据结构基本性质的不全面理解,会丢掉很多分数。当然了,还有另外一种最优解去存储,访问数据并且方便运算,有兴趣的同学可以自己思考一下。
这三个例子都是实实在在当前很多公司愿意考核的知识点,非常简单的题目却能看出一个面试者的综合素质。而这些,绝非所谓的“一刷”或者“两刷”可以训练好的。
在与同学们沟通的过程中,我们发现了一个非常令人担忧的现象,很多同学在找工作的时候,百分之百依赖于刷题。更有甚者,连linked list有几种类型,heap sorting怎么写都不清楚的情况下,就告诉我们已经“一刷”甚至“二刷”了,然后奇怪自己为什么找不到工作,作为直通硅谷的老师,想要告诉大家,你的学习思路是有问题的。

从2016年后半年的情况来看,仅靠刷题来找工作的想法显然是将这个过程神化了。刷题固然重要,但这只是找工作的必要条件而绝非充分条件,除了扎实的基本功,训练有素的逻辑思维能力,分析问题能力,举一反三能力,思想表达与沟通能力才是决定面试成败的关键。
2017年“直通硅谷”开班在即,顶级科技公司明星教师队伍,打磨两年不断总结优化、与时俱进的课程,根据多年顶级科技公司面试官的经验,成为你的职业进阶领路人。直通硅谷,首家同期开放基础班,提高班,FLAG三种班型,根据你的入学考试将你放进对应的班型,我们,只专注于CS领域的就业培训,因为专注而带你走向成功!招生详情请戳“阅读原文”。
彩蛋
还在找工作的路上孤军奋战么?如果你想知道北美其他高校的学生是怎样备战就业的,如果你想跟各高校学生一起交流讨论就业技巧,如果你想了解各高校有哪些选修课程、研究方向、奇闻异事,速速加入到北美学生就业互助大群吧!
进群福利:Google资深工程师兼面试官免费直播讲座等你来!~
1.扫描二维码入群:

2.若二维码失效(群内超过100人或超过时限)请添加小助手微信入群:
步骤:扫码添加小助手为好友—注明学校、专业—小助手拉你入群
联系我们
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
新一期培训课程将于2017年2月10日准时开班,全新班型,精准对位
欲知详情请戳原“阅读原文”或登录【直通硅谷】官网: www.zhitongguigu.com或发送简历到【直通硅谷】官方邮箱: [email protected]
微信公众号ID:gotovalley

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
点击查看“直通硅谷”2月期课程招生简章
继续阅读
阅读原文