首页 > 笔经面经 > 回馈牛客 - 2017 校招不完全记录

回馈牛客 - 2017 校招不完全记录

头像
NSSimacer
编辑于 2017-07-17 10:52:45
回复22 | 赞 28 | 浏览22883

首先非常感谢牛客这个平台,在这里刷题,和小伙伴们讨论、吐槽,一起经历校招。

经过将近 3 个月的准备和挣扎,截止目前,校招算是告一段落,这篇博客主要目的是记录校招的面试经历和参加校招的一些感受。不得不说,参加校招也是一个磨练心智的过程,从校招刚开始时投简历石沉大海的无助,到陆陆续续参加面试的紧张,再到后来经历一些面试之后的从容,到拿下若干 offer 的喜悦,再到 offer 选择时候的纠结,最后归于平静。

1. 面试经历

校招期间,主要参加了这些公司的面试:网易有道(实习),华为,腾讯(内推,校招),小米,京东,百度,滴滴,360,今日头条,美团,WAP 以及若干 startup.

1.1 网易有道(INTERNSHIP OFFERED)

早就听说有道极客氛围很浓,进了有道,早年从有道跳到 Google, Facebook 的很多,现在可能少一些了。3 月份投的有道实习,一直没有音信,没有收到笔试通知,官网状态也没变过,直到 8 月份,突然收到电话问还考不考虑找实习,抱着试试看的态度,参加了有道安排的线上笔试,其实那个时候,有道校招内推笔试也已经开始了。笔试之后,很快收到面试邀请,果断前往。

一面

  1. 自我介绍;
  2. 聊项目,Lucene 检索,SNA 平台,文本自动分类,都有讲到;
  3. 做题:设计一个 push(),pop() 和 getMin() 都是 O(1) 时间复杂度的 Stack;
  4. Concurrent 包下面的内容,ConcurrentHashMap vs. HashMap,实现原理,为什么 HashMap 在多线程环境需要同步;
  5. MySQL 数据库索引,MyISAM 和 InnoDB 引擎有啥不同,int(8) 和 int(10) 的区别是什么;
  6. 做题:打印螺旋矩阵;
  7. 缓存设计,Redis 怎么用,性能如何,有什么坑;
  8. 实习时间,实习内容之类的。

二面

  1. 自我介绍;
  2. 聊论文,具体实现过程,原理,效果如何,发展趋势是什么;
  3. 聊项目,Lucene 全文检索,NLP,认为在用 Lucene 做检索的时候可以考虑加入语义分析,讨论百度知道是如何实现的;
  4. 做题:根据树的中序遍历和后序遍历推导出树的前序遍历结果;
  5. 实习时间,内容之类,有啥问题。

这算是校招期间参加的第一家大公司的 onsite 了,整个过程感觉还是比较轻松的,我觉得可能因为是实习面试,面试官问得稍微简单点吧。第二天上午收到 HR 电话,说面试通过,商量实习时间,得知实习转正机会比较小,实习对校招也没有类似绿色通道的优惠,最后没谈拢。

1.2 腾讯(一面 GG)

搞不清楚这次面试是内推的还是 TST 计划,只知道面试官是 QQ 浏览器的,坐标深圳,电话面试。

一面

  1. 自我介绍;
  2. 项目,重点介绍项目的 Lucene 实现的自动问答系统,Lucene 全文检索的完整流程,Lucene 索引结构,倒排索引,向量相似度计算;
  3. 由 Lucene 索引结构将话题引到 MySQL 索引,介绍 MySQL 索引,B+ 树,红黑树,HashMap 有什么不同,有什么应用;
  4. 操作系统,由哪几部分组成,进程结构,Java 多线程与操作系统线程的关系(Java 线程的实现方式,事后我觉得这个问题我可能理解错了,面试官可能想问的是 Java 多线程的实现方式,我答成了 Java 线程在操作系统层面的实现方式);
  5. Java 虚拟机,垃圾回收算法;
  6. 计算机网络,TIME_WAIT 的作用;
  7. 概率题:一副扑克 54 张牌,现在分成 3 份,每份 18 张,问大小王出现在同一份中的概率是多少;
  8. 有啥问题要问。

这是校招前期收到的第一个电话面试,整个过程感觉一般般,没有亮点,进程结构和 TIME_WAIT 没有答好,最后 GG, 其实也在意料之中。

1.3 华为(OFFERED)

应该是校招期间经历的最轻松的面试了。

一面

面试官是一位中年大叔,纯聊项目,感觉聊得还挺愉快的,时不时也问一些基础知识,比如 TCP/IP,三次握手/四次挥手,Django 啥的。

二面 · 综合面

面试官是北京区的 HR 老大,聊了很多,基本是把简历过了一遍,包括讲项目,另外问了一些个人的基本情况。


同一天去面试的小伙伴,两面也就聊了一个小时,我聊了两个多小时,不晓得是什么原因。前阵子签约,得知面试结果还是挺不错的,AA,然而薪资比较感人 … 不过话说回来,签约的时候有专车接送,带领参观华为北京研究所展厅,感觉华为确实还是挺 NB 的。

1.4 腾讯(二面 GG)

没错,又是腾讯,不过这次是校招了。一面,现场等了一个多小时才面上;二面等了十几分钟的样子。

一面

  1. C++ 重载和重写的区别;
  2. C++ 复制构造函数;
  3. 求解链表交点,求解带环链表交点;
  4. 项目介绍;
  5. 工作地点啥的。

二面

  1. 你觉得你一面表现如何(懵逼);
  2. 介绍项目;
  3. Java 和 Python 有啥区别;
  4. Socket 编程,手写 Client 和多线程 Server.

不得不说这是参加校招以来遇到的最难忘的一次面试经历。一面的时候,面试官问我主要用什么语言,我说 Java 和 Python 用得多一些,然而面试官在我几次强调我主要用 Java 的情况下,面试官还是问了几个 C++ 相关的问题,我不懂 C++ 不敢瞎说,只能从 Java 语言的角度去回答;面试官出题,我讲思路,面试官基本不鸟;面试期间,面试官跟同事打电话,我还没面完,就把下一个面试者喊进来站我旁边等我 … 我觉得这场面试必须 GG 了。

燃鹅,回去之后居然收到了二面通知!让我一度怀疑一面是压力面试 … 再燃鹅,二面一上来,面试官问我觉得一面表现如何,我觉得这绝壁是个 flag,凶多吉少。

总之,这次面试经历,腾讯给我留下了深刻的印象。谁他妈再跟我装逼说语言只是工具,我保证不打死他。

1.5 小米(OFFERED)

小米是内推途径,总共三面,一口气完成,强度还是蛮大的。

一面

  1. 自我介绍;
  2. 聊论文 / 项目,具体是介绍论文的思路,解决的问题,使用的方法等;
  3. 某海量用户网站,用户拥有积分,积分可能会在使用过程中随时更新。现在要为该网站设计一种算法,在每次用户登录时显示其当前积分排名。用户最大规模为 2 亿;积分为非负整数,且小于 100 万;
  4. 算法题:求 1-N 中数字 1 的个数。

二面

  1. List 接口的数据遍历,主要考察面向对象的编程思想;
  2. 加权连通图最小生成树;
  3. Union-Find 算法;
  4. 算法题:最大栈;
  5. 算法题:数组第 K 小值;
  6. 算法题:判断一棵二叉树是否是 BST。

三面

  1. 介绍项目;
  2. 算法题:是否存在二叉树根节点到叶子节点的和等于给定的值;
  3. 算法题:求第 K 个丑数;
  4. 有啥问题要问的。

一面发挥得很一般,在讨论海量积分排名那个开放性问题的时候,最后卡在了“如何才能使得每次查询时 load 上来的数据最小”这个点上,算法题也没答好,不过面试官很 nice,面试过程一直都是在引导,很有耐心;二面、三面问得比较广,面试官也都很 nice,不会的地方不会为难,卡住了会一步一步引导往下思考。

总的来讲,小米的面试经历算是比较愉快的,虽然强度比较大。

1.6 京东(二面 GG)

京东在内推的时候,发了大把 offer,不乏各种 special offer,那时候投晚了一点,错失机会,只能参加校招面试了。

一面

  1. 聊项目;
  2. 讲论文;
  3. 算法题:判断一个数是不是丑数;
  4. 算法题:打印树的每一层最右侧节点;
  5. 闲聊。

二面

  1. 聊项目;
  2. HashMap 的原理,实现简单的 get/put 操作;
  3. 算法题:Decode Ways;
  4. 闲聊。

一面,头一回在技术面遇到女面试官,面试官挺 nice,因为他们面试是掐着时间的,到了 30 分钟准时结束,做题和项目聊得还是比较愉快的,剩下几分钟,面试官说咱们随便聊聊简单了解一下吧。

二面,看着像个部门 boss,轮子哥那种(体型),感觉面试画风跟其他同学不太一样,据说他们大多都是聊项目,水水就过去了,算法题没写好,预感 GG.

1.7 百度(一面 GG)

内推的时候没投,因为基本没看到要 Java 的,不敢投。面试那天,记得我们这边一大群人吃了午饭过去的,按时间到了百度大厦,让在门口等着,过了一会儿开门了,进去之后排队签到,再排队,场面有点混乱。

一面

  1. Java 中 int 大小,范围数量级;
  2. 数组和 ArrayList 的区别;
  3. 多线程,锁;
  4. 信号量,使用场景;
  5. GC 过程,FullGC 过程;
  6. 继承和多态的区别;
  7. AOP 概念,应用;
  8. 设计模式 Adapter;
  9. IoC 原理,缺点;
  10. 正则表达式,ab*c 匹配的字符串及其状态机;
  11. 数据库,两次相同的 select 操作,期间没有发生增,删,改操作,返回的结果是否相同;
  12. 介绍自己理解的编程规范;
  13. 面向接口编程的缺点;
  14. Scala,函数式编程;
  15. Ruby;

问得很广,收获还是挺大的。面试官对我的评价是:缺乏工程经验。一起去的同学,只有我一个挂在一面,其他的后来基本都拿到 offer, WTF! 讲真,一面 GG 是万万没想到的。

1.8 滴滴(REJECTED IN SILENCE)

众所周知,滴滴今年(以往似乎也是)的校招组织得比较混乱,凌晨一点半接到电话通知面试的感觉实在酸爽。有幸在第一天面上一面,第二天又被室友拉过去,一口气面完剩下的三面,大家都说今年能面上滴滴,还能面上四面的,都是人生赢家 …

一面

  1. 自我介绍;
  2. 聊项目;
  3. Java 访问修饰符权限的区别;
  4. Java 垃圾回收,内存管理;
  5. 手写冒泡排序和单例模式;
  6. 第一次去某个地方,如何估计出这个地方的车流量。

二面

  1. Java 内存模型;
  2. Java 垃圾回收;
  3. Java 反射;
  4. SSH 框架;
  5. 红黑树最左节点和最右节点交换;
  6. 对滴滴了解多少,技术和产品。

三面 · boss 面

  1. 介绍项目,深入细节探讨;
  2. Java 反射,缺点;
  3. Python 基础,Flask 原理;
  4. 最有成就的一个项目,讲论文;
  5. 闲聊。

四面 · HR 面

  1. 聊人生,有啥 offer,职业规划;
  2. 月饼事件。

本以为这个 offer 应该没啥大问题了,没想到紧接着各地出台了网约车新政,不知道是不是受这个影响,反正大家感觉最后收到 offer 的并不多,没收到 offer 也没其他消息的,应该就是 GG 了。

不过还是感谢滴滴能给这个机会,跟面试官交流收获挺大,尤其是 boss 面。

1.9 360(OFFERED)

对 360 校招印象还是很不错的,面试前有专门的电话提醒面试安排,面试现场也很有秩序,等待的时间还好,三面之间大概等了一个小时。

一面

  1. 自我介绍;
  2. volatile 关键字的含义,原理;
  3. 异步并发,Future 用法;
  4. JUC 下面的内容,锁,CountdownLatch,CyclicBarrier,实现原理;
  5. 线程池;
  6. HashMap 原理;
  7. 递归可能造成什么问题,为什么,怎么解决;
  8. 介绍 Java 内存模型;
  9. 介绍垃圾收集器,CMS 和 G1 的区别,G1 的优点;
  10. 介绍 Java 的四种引用类型以及应用场景;
  11. 介绍对 Redis 的了解;
  12. 介绍论文;
  13. 动态代理的原理,JDK 实现和 CGLib 实现的区别;
  14. SpringMVC 的原理。

二面

  1. 聊项目;
  2. 手写快排,如何改进;
  3. 最大的缺点;
  4. 兴趣爱好。

三面 · 综合面

  1. 聊人生,聊规划,为啥想来 360;
  2. 聊兴趣爱好。

两位技术面试官很 nice,一面面试官也是全程引导思考的那种,不会刻意刁难人。

二面的时候,我有种不祥的预感,因为面试官一直在反驳我,让我感觉亚历山大,可能是压力面吧,之前没经历过,被反驳的时候,总是想着怎么去解释,我觉得这点做得不好,应该在整个面试过程保持清醒,稍微想明白了再回答问题,不然很容易被面试官挑出漏洞,然后心里越来越慌,越来越紧张。

话说 360 给 offer 太爽快了,这点要赞!

1.10 今日头条(一面 GG)

面试之前,有耳闻难度很大,硬着头皮去试试。

一面

  1. 自我介绍;
  2. 聊项目;
  3. JVM, HashMap 原理;
  4. Trie-Tree 原理及其应用;
  5. 算法题:类似 Path Sum 的问题;
  6. 算法题:合并数组。

第一个算法题,感觉没搞明白面试官的意图,就开始动手写,大失误。面完之后感觉应该是要 GG 了。

1.11 美团(一面 GG)

面完腾讯和头条之后,已经不太想再面试了,后来收到美团的通知,还是去面了一下。

一面

  1. 自我介绍;
  2. 聊项目;
  3. IP 头组成;
  4. synchronized 原理;
  5. HashMap vs. Hashtable;
  6. 算法题:Min Stack;
  7. 算法题:Power;
  8. 综合题:两个数据流,有一个共同的字段 ID,如何将两个数据流的相同 ID 的数据合并到一起;
  9. 数据库,Redis,缓存;
  10. 聊论文;
  11. 闲聊。

面到最后,有了这么多场面试经历,其实我自己有种错觉,一面应该还是可以过的,没想到 … 面试官直接让我回去,我还特意问了是去等候区还是啥,她说回学校去吧 …

1.12 WAP(INTERNSHIP FAILED)

WAP 600 万日元的年薪还是挺有诱惑力的,经室友内推,直接进入 Live Coding 阶段。

Live Coding

Live Coding 其实就是写题,算法题,据说大多是 LeetCode,剑指 Offer 上的。现场签到之后,等了大概 10 分钟,开始面试,总共 45 分钟。

先是自我介绍,然后面试官从桌上一叠试题中抽了一道让我写,类似于后缀表达式求值,简单交流了一下思路,开始写代码,代码很快就写完了,然后开始跑测试用例,很不幸,有 bug,然后开始 debug,其实这个时候还是蛮紧张的,据说通常要过 2-3 道题才能通过 … 消灭了第一个 bug,还有一个,那个 bug 比较诡异,单步调试正常,直接运行就结果不符合预期,时间快到了,感觉没戏了,45 分钟,一道题还没写完,面试官说:再给你最后 5 分钟。继续调试,最后一刻,跑通了前面所有 case,还剩最后一个 case,面试官说:如果你过了这个 case,我让你通过这次面试。最后一刻,最后那个 case 过了。

Internship

过了 Live Coding,马上就迎来为期 5 天的 Internship,在此之前,还有一个 Document Task,这个是重点。

  1. 写 catalog;
  2. Skype Review;
  3. Internship 流程大致如下:
    1. 欢迎仪式,项目介绍,接着修改 catalog,这天结束的时候提交 catalog;
    2. Catalog Review;
    3. 代码实现一些 killer feature,final submission;
    4. 最终作品演示,填写 Questionnaire,闭幕仪式,VP Session 以及晚宴;
    5. 第 4 天待定的,在第 5 天需要再次演示;
    6. Day 1-4 都需要写一份 daily report;

WAP 比较看重的是一个人的业务分析能力。按照工程师的评价标准,并不要求你一开始就写出非常亮眼的 catalog (比如说提出很多有新意的、非常实用的功能),而是希望看到再对你进行 review 之后,能够根据 feedback 进行改进,然后在实现的时候,至少实现一个 killer feature,当然,daily report 也要认真对待。

1.13 百度(SPECIAL OFFER)

是的,又是百度。其实之前已经讨论得差不多,也咨询了多方面的建议,就准备拿到三方之后,在小米和 360 两家选一个签了。突然收到面试邀约邮件,显示是我很早投递的网页搜索部门的邮件的回复,回复来自系统部,简单沟通了一下,很快就安排了面试,已经一个多月没有面试,抱着试试看的心态,果断参加。

一面

  1. 自我介绍;
  2. 介绍项目,聊论文;
  3. Hashset, HashMap 原理;
  4. 多线程实现方式;
  5. Callable vs. Future;
  6. 线程池的原理和作用;
  7. JVM 运行时内存分布;
  8. NIO vs. BIO;
  9. RPC 原理;
  10. Python 单引号字符串 vs. 双引号字符串;
  11. 协程 vs. 线程 vs. 进程;
  12. MySQL 索引原理;
  13. MyISAM vs. InnoDB;
  14. B+/B-树,红黑树基本结构,复杂度,树结构在工程中的应用(搜索);
  15. 跳跃表;
  16. 算法题:归并排序;
  17. 给一个表,写 SQL 脚本完成指定需求;
  18. 负载均衡调度算法;
  19. Lucene vs. ElasticSearch;
  20. 提问环节,闲聊。

二面

  1. 介绍项目;
  2. MapReduce 过程,combine 的作用,是否必须;
  3. 项目引申,如何找出社交网络中相互关注的节点;
  4. 单例模式,策略模式,观察者模式;
  5. MySQL 索引结构;
  6. MyISAM vs. InnoDB;
  7. 聚集索引 vs. 非聚集索引;
  8. Redis 持久化的方式;
  9. RDB vs. AOF;
  10. 提问环节,闲聊。

三面

  1. 自我介绍;
  2. Team 介绍;
  3. 闲聊,提问环节;
  4. 频繁项集发现,Apriori 算法(忘得差不多了);
  5. 系统设计中,如何设计和管理异常;
  6. 算法题:已知函数 f(n) 如何利用 f(n) 构造 F(n),

F(n)

四面

三面之后,面试官说还需要找个同学跟我聊聊,我以为还是技术面,就把前面几轮没有答好的问题复习了一遍。越好的三点,到三点半还没接到电话,有点慌,后来电话来了,过程不表,就是对着简历过了一下,过程大概 17 分钟。


能被百度“捞”起来,是蛮惊喜的一件事,之前一次面试由于缺乏工程经验,遗憾无缘 offer. 几轮面试下来,感觉面试官都很 nice, 如果以后能和他们共事,应该会是比较愉快的。

1.14 腾讯(REJECTED IN SILENCE)

又双叒叕是腾讯,只不过这次是 OMG 了。看到 OMG 腾讯视频的补招消息,果断投;不久之后收到面试邀约,果断前往。

一面

  1. 自我介绍;
  2. 项目介绍,论文介绍,研究相关;
  3. MyISAM vs. InnoDB;
  4. NoSQL:Redis, MongoDB 基础知识;
  5. Lucene vs. ElasticSearch;
  6. Linux 常用命令;
  7. Python 2.x 有哪些坑(编码,GIL,垃圾回收);
  8. Python 爬虫写法;
  9. 如何对爬取的 HTML 进行解析(正则表达式/BeautifulSoup+LXML),聊到 XML 的解析(XPATH);
  10. 如何防止爬虫被封;
  11. 算法题:删除链表节点;
  12. 提问环节,闲聊。

二面

  1. Java 中异常怎么处理,什么时候抛出,什么时候捕获;
  2. JIT;
  3. 策略模式,观察者模式;
  4. synchronized 原理,线程池介绍,引入线程池会有什么问题;
  5. Redis 持久化;
  6. AOF vs. RDB;
  7. 算法题:二叉树转双向链表;
  8. 智力题:给定 a + b + c + d = 100, 求满足 a ≤ b ≤ c ≤ d 这一条件的 a, b, c, d 序列种数;

三面

  1. 智力题:4T 的数据流,有两个分支,这两个分支的数据流中的记录存在相同的字段,如何对整个数据流在某个字段上进行统计;
  2. 设计题:分地区服务器,静态 CDN 分发,Nginx 代理,负载均衡相关;
  3. 提问环节,闲聊。

整个面试过程下来,表现得不是很好,连着面了三轮,感觉收获还是挺大的,面试主要侧重的是分析和解决实际问题的能力,二面侧重基础知识的考察。仍然感谢腾讯能给我这个机会。

2. 校招感受

1. 内推阶段

内推的时候,大家几乎都是把能投的公司都投了一遍,然而收到面试邀约的寥寥无几,一度让人怀疑人生,这样下去,工作不用找了 … 现在看来,绝大多数公司只是在内推阶段打了一下广告,并没有实际动静,以某某街为代表。

2. 校招笔试

内推告一段落,大部分同学并没有斩获心仪的 offer,0 offer 居多。进入笔试阶段,因为笔试比较集中,有可能一天要参加好几场笔试,非常耗费精力,有时候需要做出取舍。

3. 校招面试

笔试之后,陆陆续续收到面试邀约,开始慢慢从面试经历中适应校招的节奏,这个阶段比较痛苦,渐渐地明白运气和缘分在面试中不可忽视的重要性。连续几次失利,也一度怀疑人生,好在坚持下来,反思,查漏补缺,最后收了几个 offer.

4. 一些感悟

  • 有条件的话,尽量去实习,去大厂实习。几乎每一场面试,都会被面试官问到有没有实习经历,没有拿得出手的实习经历的话,就比较被动了。

  • 简历一定要认真对待,尽量写跟岗位 match 的东西。有不下 5 位面试官跟我聊完之后,问我为啥不投算法岗,因为我简历上的项目偏算法,另一方面也可能是因为面试过程中我没有做好技能点引导导致的。

  • 平常心。这个说起来很简单,但是要做到还是很难,以前我不相信运气这个事,直到投 paper 和参加校招。面试确实有一定的运气成分,一定程度看你和面试官是不是合拍。事到如今,不谈运气,个人更多觉得还是自己准备不够充分,经历不够丰富。

3. 校招之后

身边的小伙伴都收获了非常满意的 offer,也第一次感受到自己和周围小伙伴的差距,经过这么多次面试,也找到了自己需要加强的技能点,引导后续学习的方向。

定下 offer,也是时候收收心搞搞科研,水水 paper 了 b( ̄▽ ̄)d

注意!此信息未认证,请谨慎判断信息的真实性!

22条回帖

回帖

帖子还没人回复,快来抢沙发!

牛客网,程序员必备求职神器
QQ群:169195721
微 信:www_nowcoder_com 关注
微 博:牛客网 关注

扫一扫,把题目装进口袋