网易初面(技术面)

昨天我正在怼RFID第三次实验的圈存,消费和查询功能,丝毫没注意有短信,直到我出门准备拿快递查短信的时候才发现。。。

于是今天什么都没准备的去猪场(网易)面试,不过还好对面两个面试官人比较好,并没有怼我什么。

笔试

上周四,网易在中大场的宣讲结束以后,便同时进行了一场笔试。笔试题目较难。题目满分一百分,前60分选择以及计算填空题,后40分编程

前60分

前面60分里面主要是理论算法题,还夹杂一些操作系统题目计算机网络题目,以及部分和岗位有关的内容(比如我面试的是直播开发,试卷上就有问视频格式不包括下面中的哪一个),另外选择题里面少量数据库

现在还记得的比如很经典的2017!的结构末尾有多少个0, 7^2017%5结果为多少啊,第一趟快排结果怎样,堆排调整结果怎样OS的内存置换算法,还有一些暂时想不起来的题目。

题目难度有点大,对基础的算法要求比较高,同时还要求被试者记得OS计网知识等。如果以后有人打算去网易的话,遇到笔试前最好去牛客网刷一套或者几套网易的笔试题感受一下。笔试的时候才更加适应网易的套路,运气好的话还有可能遇到原题。(我遇到一个比较简单的原题,还有一个一起考试的碰到了移到算法计算题的原题)。

这部分答题过程中,我思路比较清楚。可能因为不少题目在以前上机测试或者其他算法书中遇到过,所以不是特别偏的算法还是会的(比如有一道三进制的题,当时怎么都不会,现在时间太久也忘了)。经常打算法的人应该完成难度不大。

后40分

40分一共有两道手写编程题第一题10分比较简单第二题会难一点30分

在这次考试中,第一题是求最大公因数和最小公倍数。第一题题目要求数据大小在1~2^32-1之间。这两个算法的实现我就不说了,因为已经算是算法入门级的代码了。但是很傻的是,我在计算最大公倍数时,return的结果只开到了undesigned int,这个估计会扣不少分。其实应该开到long long才能不溢出。

第二题,是一道0-1背包问题,DP可解。但是因为时间不够,加上笔试前没有准备关于DP和背包问题,所以空出来了。题目大概意思是,在线直播平台上有各种打赏,比如打赏1(分数100)、打赏2(200)、打赏3(300),每种打赏收费标准不一样。相当于背包问题中的物品。一个用户想给主播发礼品,怎样做才能既将手中的钱花完,主播收到的积分也能最多。(题目大致应该是这样的,时间有点久了,记不是很清楚。)

然后在面试过程中,我瞟到了我的试卷,前面60分拿了36。这个能理解,我在那天回寝室,回想题目的时候,就发想算法填空题里面,有几道题手算出错了。页面置换的题目里面,将LRU(Least Recently Used, 最近最久未使用,可以实际应用),错用成了OPT(Optimal,最佳置换,理论上的置换方法)。其他的错在哪就可能自己事后都没发现吧。

编程只拿到了4分(还是6分?)。羞耻= =,全是在那一道10分题中拿到的,除了long long之外不知道其他分数扣在哪,有可能是因为我当时图快使用的是递归求解,效率赶不上迭代,也有可能是犯了其他某些错误。30分的DP一分没拿到,毕竟我一行代码都没写= =。只有一行注释说“背包问题,可以用DP求解”。

总的来说,当时笔试完自我感觉并不好。本来以为不会过,等了快一周还没收到短信,所以都已经准备放弃希望了。直到昨天翻快递短信的时候,看到了网易的短信通知,说我笔试过了,可以参加初面了。

初面

裸面

初面来的猝不及防,没有一点点心理准备的我,在收到短信的当天都还在淡定撸RFID的课程项目代码。结果一下午都在debug,晚上10点才搞完。当时觉得,“完了完了,明天得裸面了”。

半夜看了一会直播相关的技术帖,白天精力消耗太大,爬上床睡了。

第二天早上7点多就爬起来继续看了一会,毕竟自己以前没怎么学过这一块,就按照计网知识,再加上自己以前学图像处理时对音频的知识,勉强硬啃下来了。

但是我忘记了,校招一般不会问太多和工作岗位相关的工作,他们往往问的比较基础。比如最经典的8排序3搜索,比如OOP的虚类,虚函数,继承之类的基础知识。尤其是我简历里面还说了我主力代码是C/C++,之后是Java。

抱着裸面的心态去的网易大厦。今天的人还不少,不过脸熟的没多少,可能我们院(指我们软件工程(移动信息工程),而不是整个数据科学院啦)的人有的上午就面过了,或者没什么人投这边。整场面试下来就碰到一个认识的人。

进去之后人挺多了,我们在网易大厦一楼一个放映室等待,然后被一波一波叫出去等待面试。等不多一会,一个应该是HR的小姐姐带我们上了四楼(直播平台开发所在的楼层),十几个人在一个会议室等着被喊去面试。

全是中大人,我们这一波十几个人就仨本科生,其他都是研究生,我开始有点怂了。。。。那个时候,对面一个研二师姐说上次面试就是手写搜索算法,我才突然想到,我光看直播技术贴,排序搜索什么的都没看= =

临时用手机翻了一点关于排序和搜索的算法,看了一下时间复杂度,被叫去面试。

面试

面试环境还好,空间虽然小了点,但是因为是透明玻璃墙,所以也就没有显得拥挤,房间里面有两个面试官。年轻的面试官主要提问算法和其他工程上的问题,另一位大叔感觉像是HR或者主管之类的管理者。

首先是自我介绍啦,稍微讲一下自己的情况就好(我就讲了讲我来自哪,目前情况怎么样之类的,半分钟就没词了= =)。

之后试官首先问我兴趣点,因为这个岗位进去之后还是有很多方向,比如前端 ,服务器,移动端之类。我说的是服务器,一方面是因为自己确实对前段没什么兴趣,另一方面去年和今年项目做得多了,就越来越觉得服务器挺重要的,毕竟很多前端的动态处理,移动端的服务,都得靠服务器端进行处理。

接着面试开始问我的项目经验。年轻面试官从我的简历里面抽了大二时候做的用哈希表实现词典查询的项目进行提问。

一脸懵逼,两脸茫然,猝不及防。我以为会问我直播技术有哪些瓶颈,我以为会问我怎么降低网络延迟,我以为会问我直播使用什么协议,分别有哪些优缺点,我以为会问我云计算课程实现的利用MapReduce分布式项目,我以为。。。

然而,他竟然问我大二的项目= =

还好当时自己在那个项目上折腾了好几天,依稀记得使用Map方法+链表实现的查询功能。然后我开始在草稿上回忆项目思路,一边回忆一遍和面试官口述(虽然一开始有点紧张还回忆错了,面试官仔细听了以后,对我查询方式提了一点质疑,我才重新想起来当时的项目内容。)口述完自己当时的项目之后,考官问我对这个项目有什么改进的想法

改进的想法???刚刚回忆完整个项目的我又开始陷入了沉思。我开始吧这个项目和这个岗位可能需要的地方开始考虑。

这个岗位不是应该对分布式要求对点么,那就分布式搜索??没听说过,不能瞎说。自己唯一写过的分布式架构的也就MapReduce实现的线性回归,自己也暂时没想带怎么使用分布式进行搜索的方法。突然我想到,提问过程中,面试官似乎问过我处理的信息量我那种实现方法需要将所有数据写进内存,很费空间,这一点似乎可以优化。于是我就根据操作系统里面内存的的多级检索,大致讲了一下在大量数据情况下,减少内存消耗的方法。

接下来面试官又从我项目经验中挑了一个二维码识别的项目。这个虽然是团队项目,但是前半部分我和队友一人一半,后半部分一人单挑,再加上是上个学期的项目,所以讲起来比较轻松。大致讲了一下自己当时实现的原理(直线在极坐标中的表示,点光源影响去除之类的)。

又谈了一点项目经验,面试官开始问我主要擅长的领域。

擅长的领域???又开始茫然,大学3年下来,基本都是按照课程项目走过来的,学的很散,也没有做过很成熟的项目。知识面有点广度,但是没有几个领域有深度,开始打算个人项目也是在上周四被网易理论试题打击以后,突然开始搞的。

那就算法吧,再加个计网。仔细想了想自己的两年半多,算法自己从大一下怼到大二下,一年半下来,比赛奖项也集中在算法比赛上,就提了下自己的比较擅长算法。然后又想到我们上学期我计网理论学的还行,实验课怼交换机也贡献了大部分力气。这两个合起来对我拿到这份offer会不会有帮助。

面试官开始问我关于网络编程的问题(当时的问题是,tcp编程的时候,什么时候会有time_ wait)。但是我没经历过网络编程啊,上个学期交换器和路由器的实验全部重在配置,在控制台输指令的那种。网络编程这一块我就没接触过啊,我就试探了一下说是不是在网络用塞的时候,因为听到这个变量我以为是TCP的连接超时。面试官否决了我的回答,我只能如实说自己没做过相关项目,面试官说了真确答案是断开连接的时候。(回来查了一下相关知识,time _wait确实是在TCP的四次挥手的时候用到的,拥塞控制是tcp _timestamps,知识来源

接着面试官开始问我算法题,比如堆排和快排的对比,两种算法的应用场景之类。我大致分析了一下快排的缺点是最坏情况时间复杂度是(On^2), 堆排整理需要(Onlgn),但是忘记分析堆排和快拍的空间消耗(自己平时从来没注意过),是否乱序方面也忘记分析了(其实两者都会乱序)。终究还是自己平时项目做得少了,算法也看的少了。。。。

然后面试官问了我快排的实现方法,我在纸上大致说了一种刚刚在网上看到,回忆起来的教科书上的快排。这种方法对最后的标志位在一开始是不明确的。我看考官没怎么说话,就默默在纸上再说了一下整个整理过程。看完考官提问,没有标志位的么。我就又说了在大一的时候学的预先定位标志位进行快排整理的方法,考官这次就似乎比较满意。

再接着面试官问了一下STL中Map是用什么实现的。因为我第一个项目中,就是使用的标准STL Map,而不是自己实现。我答了红黑树,这个在很久以前某篇文章中看到过。

最后就是大叔面试官问,我还想说些什么。(大叔面试官全程比较少提问,感觉他应该是坐在主管位置,年轻的小哥面试官则应该是主要带项目什么的了)我大致说了一下自己在投简历和面试过程中对这个岗位产生的疑问,以及问了下我能够学到什么,基本面试也就结束了。

面试总结

总的来说,网易的笔试确实有难度,面试关反而没有那么难了,主要重在项目和你擅长的方向的了解。

在准备方面

  • 我笔试40分都有机会拿到面试机会,如果有机会参加笔试机会的人可以有信心了。
  • 简历上的项目一定要是你有参与或者主持或者独自完成的项目。混水的项目就不要写上去了,以免面试官问起来自己一脸茫然。
  • 面试前最好准备一下基础的算法知识。因为自己面的是开发岗,所以对算法要求还是比较高的。基本的8大查找,3大搜索要知道。
  • 网易的面试方面不会太难。提前对自己的项目做好整理,看一下自己的项目报告什么的帮助回忆,也就不会像我这样裸面,在面试的时候一边面试一边回忆了。
  • 有些问题还是流程化的,比如对这个工作有什么期待,自我评价(本次面试没有提到),自我介绍什么的。在准备前都好好准备下。
  • 网易技术岗的技术面一共有两轮。我目前只经历了第一轮,希望有机会能够接触到第二轮(并不知道会问什么内容),以及最终的HR面。
  • 面试官不会很严,技术面也不会压力面试什么的,面试环节还是比较轻松的,不用紧张。

最后,希望我还有机会写一个二面以及终面总结吧。

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

请我喝杯咖啡吧~

支付宝
微信