首页 > 笔经面经 > 我的2017校招总结+经验分享(巨长慎入)

我的2017校招总结+经验分享(巨长慎入)

头像
WAWAWA
编辑于 2017-08-01 22:08:15 APP内打开
赞 95 | 收藏 471 | 回复31 | 浏览63548

11月20日,终于确定了毕业后的去处,16年校招算是正式结束。 在牛客网上看了不少面经,也收获很多,在此回馈牛客。 本总结主要针对明年找工作的学弟学妹,希望我今年这一年的面经能对大家有所帮助。 首先还是说下自己的情况,本人是某普通985硕士。本科期间搞过一段时间的ACM,但是没有出啥成绩。硕士阶段跟着导师做了一些研究型的项目,工程经验几乎为0。由于运气好在Google实习过三个月。算是弥补了一点工程经验少的缺陷。本科,硕士期间看了不少技术书籍,基础打得比较好,通过ACM认识了不少大牛,为我这次校招做出了极大的帮助。 今年校招开始得都很早,在七月末就有各大公司内推的消息,所以我的大部分面试都是靠内推获得的。 下面是面经

百度大搜 后台开发 百度是找的ACM群里的大神内推的,聊了一下发现竟然有共同的好友,只能感叹世界真小:) 一面 现场面 在百度科技园面试,那地方外观看上去真是高大上,面试是在一个休息室面的,感觉稍微有点吵。

1: 手写代码,链表上的快速排序。 经典问题,貌似是leetcode原题,只是手写的话比较慢,写完解释给面试官听后感觉可行。

2: 1~n n个数现在去掉两个,如何找到去掉的两个数。 假设去掉的两个数是a和b,那么通过求和,平方和可以知道 a+b和a^2+b^2,然后解方程就行了。

3: 给很多单词,要求统计出现某个前缀出现次数。follow up:统计某个子串出现次数。 第一问用Trie直接搞定,第二问的话,我给的方法还是用Trie,只不过一个单词要分成多个插入到Trie数中就行了。

4: 给一个n*n的矩阵,矩阵中满足每行每列都是递增的,要查找矩阵是否存在某个数。 经典问题,leetcode原题。

5:给一份代码,找bug。 代码有点忘记了,bug比较明显,顺利找出。

二面 现场面 紧接着一面

1:求二叉树最近公共祖先 leetcode原题。

2:一个严格递增的数组,将前缀取一部分放在后面,在修改后的数组上找到最小的数。 还是leetcode原题。。就二分+判断就好。

3:平面上有n个点,让你设计一个数据结构,能够返回这个这n个点中距离某特定点最近的一个点。 一开始讲了下kd树,然而太复杂面试官不满意,就讲了一个类似GeoHash的方案。

4:一个大文件A和一个小文件B,里面存的是单词,要求出在文件B中但不在文件A中的单词。然后大文件A是无法直接存到内存中的。

5:一道概率题,一个六位的密码,由0~9组成,问你正过来看和倒过来(转180度)密码一样的概率。 (解释一下,这里数字0~9是计算器里面的那种格式,就是6倒过来是9,9倒过来是6那种)。 弄懂了题意还是很简单的,首先先这是一个6位密码,如果倒过来看和原来是一样的话,那么只要确定前三个数,后面三个其实已经确定了, 这时候只要关注前三个数有所少种可能即可,简单枚举有哪几个数倒过来看还是一个数字就能顺利解决。

面完后本来应该有三面的,但是我面试时间有点晚,然后三面面试官正好有事去了,就先让我回去了。

三面 电话面 二面后两天 应该是boss面,没问技术,感觉像HR面,主要是聊天。 1:实习期间项目,在组内担任的角色,是否熟悉其他组员的工作。 2:场景分析题,有一个任务给你,要求一个月完成,但是以目前的能力一个月完成不了,现在你知道有一个同事擅长这部分工作,但是他有自己的活,帮助你就可能耽误他的进度,问你咋办。。 3:你认为你的优(缺)点是什么。 4:如何看待加班。 5:为什么选择百度,谷歌百度都给你offer你选哪个。 6:有什么问题问我。 最后介绍了一下他们的工作,还问我想做策略还是架构。

自我感觉良好,然而挂了。说实话这次失利对我信心打击还是比较大的,当时面完感觉很稳啊,唉~~蓝瘦香菇。

蘑菇街 算法工程师 蘑菇街是找牛客网的牛友帮忙推的,在这里谢谢这位朋友。这里出了一点小意外,本来我是报的后台开发,但是不知道怎么给我分到算法工程师了,当时对算法工程师还不是很了解,所以就作死地继续面下去,结果可想而知。。。

一面 电话面试 首先聊了一下简历,然后介绍了算法工程师的职责,听他说了一大堆机器学习的东西,心里隐隐感觉有一丝不妥。。。所以我明确告诉他我没有机器学习的经验,面试官说没关系。。校招主要看基础。。当时还真信了。。 接下来聊了一下项目,将项目中的难点和遇到的问题以及解决方案说了一下。到目前为止聊得还不错。 热身过后就来真的了。。问了几道机器学习相关的内容。。。由于这方面基础太差完全答得不知所云。。面试官应该也是意识到了我没有基础。。于是接下来就不提机器学习方面的东西。。开始问基础。

C++ 1: 空类的大小,仅含有虚函数类的大小。 2: 析构函数声明为虚函数的作用。 3:引用和指针的区别 问得很基础,这方面答得还不错。

接下来问了到经典的蓄水池问题,就是要求从N个元素中随机的抽取k个元素,其中N无法确定。 经典题见过所以答得还不错。 接下里就稍微聊了下实习情况和对蘑菇街的看法。

二面 视频面试 惨不忍睹的一次面试,这次的面试官应该是以为我有机器学习方面的经验,于是连问了5,6个相关问题,可惜我这方面基础实在太差,仅通过网络公开课接触过一点,所以基本都没回答上来,面试官看我这样只能聊聊项目,草草结束了二面TAT

毫无意外,第二天就收到拒信,以后再也不敢面算法工程师了TAT。面试体验其实还不错,就是我太弱了。。。感觉浪费了双方的时间不值得。。。所以以后大家对于不熟悉的岗位还是要谨慎啊。

商汤科技 后台开发 商汤科技是托Google的同事内推的,是一家创业公司,搞计算机视觉方面的,对这家公司也不是太了解,纯粹去碰碰运气。。。 三面是连着的,一上午面完。

一面 一面面试官迟到了半个小时,让在那等着的我紧张了半天。。 可能是感觉迟到了很久,面试官也没问什么技术问题,就是纯粹聊了聊我的简历,包括我的竞赛经历,还有实验室的项目和实习项目,基本上是我在讲。

二面 面试官看上去特别年轻,应该刚入职不久,不过一看就知道是大神。 一开始也是简单聊了下项目,然后开始手写代码。 1:外部排序 是的,就是纯粹的外部排序,读取,写入接口自己定义就可以,然后还默认了内存大小和文件大小。所以就按照基本的外部排序写就好。 2:实现一个LRU算法,假设缓存大小是M 写了一个双向链表+哈希表的解法,时间上O(1),空间O(n) 然后闲聊,同样提到了我竞赛经历,并说三面面试官是个算法竞赛大神,唉。。。ACM渣渣表示压力巨大。。

三面 面试官看上去也很年轻,毕竟是创业公司,然后看我有竞赛经历,就交流了一下,果然是ACM大神,直接吓尿。。。 问的第一题就直接把我干懵了。题目比较长,所以理解题目也花了一会。经过几次尝试和面试官交流后均被面试官否决,最后实在想不出解法,还是面试官提示后,才知道解法(基本上是面试官提示的)。从这里开始我的心态就有点崩了,感觉这次肯定跪了。 2:聊了下我实验室项目,问了一个关于三点定位的问题,这算是我的本行了,所以答得还不错。 3:让写了一个矩阵乘法,随手写了一个,然后他看了一下说这不是缓存友好的,要我改,这时候才发现他其实是问的是缓存的机制,于是通过改变循环的结构,改成了缓存友好的写法。

本来应该还有boss面和HR面的,可能是三面面得不好,所以直接让我回去了。

一周后收到拒信,也算是情理之中吧,有点遗憾。这家公司应该也算是在高速发展中吧,给的薪资也很吸引人,参观了下工作环境,虽然感觉有点拥挤,但是技术氛围应该很不错。

PS:校招开场三连跪后,心态爆炸,开始进入疯狂投简历阶段。只要能投的我全投了一遍。

腾讯 IEG 后台开发 腾讯是找的师兄内推的,走的TST流程,TST刚开始就推了。本来想报微信组,但是简历总是被其他group取走,其中SNG就拿了两次,(可能是我实习的时候面的就是SNG吧。。)都让我拒了。最后时间上来不及了,正式校招都快开始了。就在TST项目的最后一天,IEG打电话要安排面试,当时0 offer心里方方的,毫不犹豫地答应了面试。

腾讯技术三面连在一起的,时间都很短,具体哪面问了啥忘了,就一起写吧。

1~3面

C++: 1 :C++多态的实现方式,虚函数的底层实现细节。 2:继承类调用构造函数顺序和析构函数顺序,什么时候要将 析构函数定义为虚函数。 3:引用与指针区别 4:new 与 malloc的异同处。 5:结构体内存对齐方式。

算法与数据结构: 1:给一个正整数n,现在想将n分成若干个正整数,使得它们的乘积最大。 2:经典的n个数求前k大的数。分两种情况,第一是没有相同的数,另外一种是有。 3:和百度二面问的一模一样,两个文件A和B,求A中没有但B中有的单词。

网络: 1:TCP与UDP区别,三次握手,四次挥手。 是的,就问了一道题,有两面问到了。

HR面 HR面面的感觉和实习差不多,就是聊人生。这里就只列出不同于实习面的问题。

1:对于我实验室的项目,如果再给我2个月的时间,我会在哪方面进行改进。 2:实习中学到了什么,并举例。 3:如何安排工作时间。

面完当天晚上就给了offer,这效率也是666,而且感觉这次面试略随意啊,每次面试持续时间都不长,都在20分钟左右,最后竟然还能过,我的运气终于回来了哈哈。 最后被分到了 互娱的运营部,并给了sp。 另外腾讯的HR是我面试的公司中最好的HR,感觉非常有耐心而且专业负责。

今日头条 后台开发 找的ACM班学长内推的,头条在近年来上升势头很猛啊,而且听说给的薪资也很吸引人,于是就报了。 投的是提前批,所以就没有笔试,9月三号面的,在中航***现场面。

一面: 首先花了20度分钟讨论我的实习项目,问了一些实现细节,原理还有改进方案。 然后就问了一个和他们工作相关的问题。 关于新闻,首先问我如何判断两条新闻是说的同一件事,需要考虑哪些内容。 我想了想,大概说了下时间,作者,标题什么的,其中提到了关键字的提取,于是就被问到了如何在一篇文章中提取出尽可能多的关键字。和面试官交流一后题目大概变成了: 一篇文章,和一个字典,字典里面有所有的关键字,如何在文章中找到尽可能多的关键字。 考虑到这事实上就是一个多串匹配的问题,于是和面试官讨论了一下AC自动机的方案,中途讲了一下AC自动机的原理还有实现,然后如何在中文文章上使用。 感觉沟通挺顺畅的。

二面: 1:一开始先问了一道算法题目:n个字符串,要求在每个字符串上都存在的字符。 首先给了一个比较朴素的方案,用哈希表解决。后来面试官要求优化,就改用位图节省了空间,面试官应该还是比较满意的。 2:要求实现单例模式,写完后要求改进满足线程安全。 这道题答得不太好,主要是线程安全那块忘了怎么写了。 3:同步IO与异步IO的区别。 答完后问我可不可以举个例子,我当时也没想到什么好的例子,就举了个微信删除好友和加好友的例子。然后就有了下面这道问题。 4:如果要你设计微信的朋友圈功能,你会怎么做。 这题其实我在九章算法系统设计课里有学过,所以就现学现卖讲了下,所以准备工作做足是很重要的,等会在总结的时候会单独讲这块。

三面: 二面和三面之间隔了有三个多点,导致我是最后一个面试者,感觉面试官也有点累了,所以没有问太多。 1:算法题,给n个数,找到两个数使得他们的异或值最大。 用Trie轻松解决。 2:设计抢单功能,比如说抢小米手机,要求实现伪代码,保证线程安全。 这道题答得不太好,总之和线程安全相关的问题我都没有准备,比较吃亏。 3:给我一段算法代码,要求我看完后描述算法功能并计算其时间复杂度。 看了后发现是给一个数组,返回每个数左边第一个比自己大的数。计算了一下发现时O(n)的,因为其实他就是维护了一个单调栈结构。每个数只会进栈出栈一次。

面完回来大概10天收到了口头offer,然后十月底收到正式offer,据说头条薪资分三档,给我的是第二档,没拿到最高档感觉有些可惜,一起实习的小伙伴拿的是最高档TAT。头条的面试感觉还是蛮有挑战的。能拿到还是很开心的。

另外吐槽一下,头条的面试效率有些低,我下午三点面的第一面,晚上9点半才面完三面,其他时间都在等待。。是整场面试最后一个走的,也是醉醉的。

由于拿到了腾讯和头条的offer,并且后来的时间实习比较忙,就推掉了国内其他所有公司的面试,专心准备转正。

Google 在Google呆了大概三个月,胖了10斤哈哈,吃得那是没的说。已经习惯了那种工作环境,所以特别想留下来。 我是在离职前还有两周的时候面的转正面,由于是实习生,所以只需要面两轮即可,一轮英文一轮中文,其中中文肯定会考系统设计。(后来听说貌似不一定)

(具体题目已删除,因为发现貌似不让透题,大家可以去careercup或者一亩三分地上找题)

Google面试体验也很好,面试官很友善,面试完后会给一些建议,我的一面面试官就教我如何应对英文面不知道如何表达的解决办法,非常感谢他。 面完过了大概2个月收到了offer。 算是挺顺利的:)

Airbnb Airbnb今年是第一次在国内校招,估计很多人都不太熟悉,但它是湾区最具潜力的创业公司之一,听说他开始校招了,就赶紧投了一发。直接在官网投递简历就可以,而且不需要向国内公司那样填一大堆没用的信息,只需要知道你的名字,邮箱,学校,简历等必需信息即可。

笔试:

笔试是在一个小时内做一道算法题,题目不难,而且貌似只要过了初始11组样例就能拿到面试,直接暴力解决都可以。题目有点长,就不说了。

电面: 首先是一轮电话面试,面试不长就15分钟,主要谈一下笔试题的思路和解法,全程英语交流,面试官英语说得那叫一个6,我表示压力很大,说得有些语无伦次。。。不过只要把思路说清楚了,还是能拿到onsite的。

现场面: 在airbnb北京office面的,连续三面,如果前两面面得都不太理想,就没有三面了,和电面一样,全程英语交流,每一轮面试都只有一道题,但是代码量都会比较大,而且要求代码能运行而且能过他们给的测试样例。所以是考察真实环境下的编程能力。另外由于是第一次校招,所以目前airbnb在国内就只有不到10个工程师,面试的时候基本上是倾巢出动,哈哈。

一面: 面试题大概是一道类似帕斯卡三角形的问题,但是每一层的状态基于它下一层的状态,现在给你一套转化规则和最下面一层的状态,问第一层是否有可能达到某种状态。

二面: 实现4中命令行命令,包括新建一个文件,文件改名,文件删除和输出一个目录下的所有文件名。 其中考察了字符串的解析和树形数据结构。

三面: 实现一个类似于谷歌趋势的东西,就是计算到某一时间点为止,给定时间内的访问量。 这道题其实一开始的思路是对的,但是和面试官交流发生了问题,主要是我解法表达的不是那么清楚,所以面试官一直在质疑我的方案,最后到写代码的时候时间不多了,写出的代码也没能通过所有样例。。。唉。。雪崩。

HR面: 应该也不算面试吧,就随便聊聊,主要就问了下面几个问题。 1:是否用过airbnb,以及对airbnb的了解。 2:手上有哪些offer,选择offer会参考哪些方面。 3:对薪资的要求。 4:有什么问题问我。

早上8点半到的北京,下午2点半就走了,真是刺激。也没想过通不通过,就是想体验一下这种公司的面试,觉得这种面试才能真实考察面试者的能力。直到11月下旬也没有后续消息,基本没戏了吧,遗憾。

未完成公司 有的公司只参加了笔试或只参加了一场面试,后来因为时间和其他原因放弃了,下面列一下。 京东滴滴
只参加笔试。时间原因加懒,放弃了。 微软 只参加一面,问了三道算法: 1:翻转链表 2:非递归输出二叉树的后序遍历 3:给n对括号,输出所有合法括号序列。 二面由于和airbnb电面时间冲突,想要改时间,但是没改,就不了了之了。

Hulu 只面了一轮电面,问了两道题。 1:给n个三元组[Li,Ri,Vi]表示n个程序,第i个程序在[Li,Ri]时间区间里消耗内存为Vi,问在n个程序运行过程中内存消耗的峰值是多少。 2 : n个数,有两种操作方式 一种是将其中一个数除以二(向下取整),第二种是将一个数翻倍。问最少用多少次操作能使得这n个数相等。

答得还不错,也确实过了,但是HR说好十一之后会联系我通知onsite,但是到了11月下旬都没有理我,估计把我忘了,也懒得面了。

总结

总结一下我的校招经历的话,可以用有惊无险来形容,前期面试三连跪,(还不算阿里简历挂TAT),心态爆炸,中期收货头条,腾讯offer好不容易才稳住阵脚,后期Google的offer算是锦上添花吧。

如果说这次校招让我学到了什么的话,我觉得是一下几点。

1:准备工作很重要 我觉得找工作最重要的一点其实就是这一条,这条没做好,校招基本上就是失败的。事实上我这一点一开始也没做好,由于实习所以没有及时复习专业课的内容,也没有刷题找找手感,导致前三家公司直接GG(当然蘑菇街的话就算准备了也没啥用)。三连跪之后我便每天抽出时间来复习专业课,这在之后腾讯和头条去得了比较好的效果。另外,对于Google的转正面,我从很早就开始准备,由于事先知道一定会有一轮英文面和系统设计,我便报了一个英语线上补习班天天练口语,还上了网上某系统设计的专项课程。这不仅对我Google转正面有帮助,还直接提高了我其他几家(如头条)面试的通过率。

对于如何准备专业课知识和编程能力,我这里有一些心得可以分享给大家。 首先,要根据自己目标岗位来准备,如算法工程师,数据工程师,前端工程师啥的都有自己的分工,那么对于每一种岗位独特的部分就要根据自己实际的选择来准备,这里就不一一列举,下面要讲的是对于所有技术岗位都会问的部分。事实上,通过我这几个月来的面试经历和与朋友们的交流,发现只有数据结构,操作系统,计算机网络和某一编程语言(C++,Java,Python等)是所有技术岗位都会考的。

1:编程语言 本人主要使用C/C++,所以以下参考资料都是关于C/C++的,其他语言其实复习方法差不多。 相对来说,国内公司比较喜欢考察语言细节,可以参考以下书籍。 基础: 《C和指针》 《C++ primer》 提高: 《Effective C++》 《more effective c++》 《c专家编程》 《STL源码剖析》 这个根据自己情况复习,不用太扣细节部分。

2:数据结构和算法 首先书籍的话,我不是太推荐《算法导论》,当然这本书确实很好,但是有更好,推荐 Robert Sedgewick的《算法》

实际到面试中,直接问经典算法是不太可能的,一般都是直接写代码,所以代码能力很重要。具体要练得话,推荐大名鼎鼎的leetcode,还有lintcode,先刷一遍再说,国内公司出的算法题上面大部分都有,所以。。你懂得。当然想以一流外企为目标的话,可以刷刷codeforces,这个oj事实上是给算法竞赛那帮大神玩的,只是以面试为目标的话,刷刷每场div1的A,B即可。

3:操作系统和网络 这个复习也没啥好说的,书籍的话推荐《TCP/IP详解》或谢希仁的《计算机网络》都可以。操作系统就看《现代操作系统》比较靠谱。 想要练习的话,去牛客网上刷刷题吧。

2:要有良好的心态 准备充足之后,良好的心态也是非常重要的,不然准备得那么好,答也白费不是。我有几场就是吃了这亏,比如商汤科技的三面和Airbnb的三面,都是心态崩盘导致面试结果不理想,如果当时能够迅速冷静下来多和面试官沟通,结果可能就不一样呢~~ 具体怎么保持良好的心态其实我也说,因为我自己也没做好,所以算是给大家一个提醒吧。

3:要突出自己的优势 最后要记住,面试绝对不是答完所有的题就可以了,面试官也不是来听你回答问题的,而是来招工作伙伴的。所以遇到自己不会的问题也不用慌,直接告知不会是没有问题的,只要你通过其他方面证明你有这个能力胜任这份工作,就没有问题。 具体如何突出自己的优势呢,我觉得主要有两种,一种是显式的,就是直接告诉面试官我擅长什么,然后和面试官多聊聊你擅长的东西。但是有时候面试官知道你这部分比较强,有时候就不问你这方面了,比如腾讯知道我搞过ACM,就基本没问啥算法问题,所以这时候就要用第二种方法:引导问题走向。引导面试官问你擅长的方向,比如在头条二面的时候,我就成功地引导面试官问我微信朋友圈的设计问题(这个我事先有准备哈哈)。至于具体如何引导面试官,其实方法有很多,这就要有比较丰富的面试经验才能说全吧。这里就简单介绍一种方法。 我们面试的时候肯定有体验过,面试官会经常根据你的回答问问题,这是因为很多知识点是相关的,你在回答问题是提到的一些关键字可能就促使面试官问你相关的问题。所以在面试时,可以有意识地提到你所擅长的那方面,引导面试官去问你会的问题。举个例子,拓扑排序应该是一个非常容易考到的问题,如果面试官问到了, 你在回答的时候就可以说说拓扑排序的应用,如检测死锁,那么面试官很有可能在下一问就会问到关于死锁的问题。当然这是在你熟悉死锁的情况下,如果你并不熟悉,那就变成反作用了。。这也是面试中常见到的现象,就是自己多嘴提了一个自己并不熟悉的关键词,结果被面试官抓住不放,导致面试结果不理想。所以,方法的好坏还是要看怎么用,大家在面试的时候一定要多留个心眼。

不知不觉也写了这么多了,花了两天写完的,中途也没怎么改,小学生作文水品,希望能对大家有所帮助。

31条回帖

回帖
加载中...
话题 回帖

笔经面经近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐