校招经历

因为春招的失败,于是从暑假就开始准备秋招,从各个方面开始全面的复习。

暑假参加了网易的内推,结果以失败告终,详情可看:网易内推Java开发工程师(一面+二面+HR面)

其他的内推均没有回复。

于是9月开始参加正式的校招。一共投了24家互联网公司,都是一些比较常见的公司。其中参加了5次面试,剩下的直接放弃,下面就大概写一下经历。时间顺序有点不太记得了。

 

滴滴(一面)

滴滴是在线视频面。当时面滴滴的人太多了,本来是安排在下午的,之后又被重新安排在第二天了。

这次面试基本就是项目+代码。

先介绍自己的项目,让后问做了哪些东西,然后就开始问能否优化。之后说了一些优化方法,面试官并不满意。

接着开始写代码,让实现Linux的tail命令,就是输出一个文件的最后几行。对文件的输入输出不太熟悉,于是GG

滴滴止步于一面

 

CVTE(一面,二面)

一面是电话面,一面就是问一些Java基础,因为之前复习得不错,于是顺利通过。

之后二面上来先在leetcode开两道题,难度是easy级的, 之后出了一个大表联查的SQL题,然后就聊了下以后的职业规划。最后出了三道凑24点的题。期间面试官态度极其恶劣。

之后HR面因为面试冲突调成了电话面试,不过现在已经拿到了其他offer了,也不准备面了。

 

京东(一面)

京东一面在一个大房间里,很多人在面试,面试官的话都听不太清楚。

一面就问了一些最基础的概念题。不过因为看的时间比较早了,回答都不太标准和完整,于是顺利的挂掉了,并没有发挥的空间。

 

去哪儿(一面,HR面,Offer)

当天有三场面试,一场调开了,上午是去哪儿,下午是百度二面。

去哪儿面试极其迅速。从面试开始到拿到offer大概就一个半小时。

一上来面试官看我搞过ACM,于是问我最擅长的算法,于是拿出线段树,吹了20分钟左右。

之后看简历上写着了解网络协议,于是问了解TCP多少,于是又吹了20分钟,说了下TCP的差错控制,流量控制,拥塞控制。。。

然后看简历上写着了解JVM,于是问我垃圾回收,这不是送分么,于是又说了20分钟左右。

最后问我了解离散数学么,举个例子,于是我把矩阵快速幂说了一发。(后来想起这是线性代数23333)

整个面试过程1个多小时,基本是我在说,于是轻松通过。

在等待间等了一会就HR面了,随便聊了下便发了offer

貌似看别人都是2面技术面+HR面,不懂为什么。。。

 

百度(三面技术面,Offer)

一面

一上来就让写代码,题目如下:

有高度为n步的台阶,每次可以走1步或者2步,从最低处开始走,有多少种走法,但是可以在任意位置退后几步,整个走法中退的总步数不能超过k

一开始听完前半部分,就觉得稳了,不就是斐波拉契数列么,然后听到后面的条件,就懵逼了。不过一想肯定是dp,于是边写边想,最后还是顺利的想出来了。

之后开始问多线程的问题

怎样快速停掉一个线程池

怎样快速停掉一个线程

怎样保证一个线程在另一个线程结束后开始

接着问java集合类的底层实现,比如

ArrayList怎么扩容

HashMap怎么插入和查找

接着问Spring

Spring怎样管理Bean

@Autowired怎样实现

Bean的生命周期

之后是TCP

TCP三次握手和四次挥手全过程,详细说明

然后问了JVM

垃圾回收

最后出了一个SQL题

给一个学生-课程-分数表,查出所有成绩在90分以上的同学,并按平均分排序

 

二面

上来面试官就说,我们直接点,然后就开始写代码。。。真够直接,不过我喜欢

单链表找倒数第k个结点

剑指Offer上的原题。然而我当时想不起来了。于是说了几个不是最优解的解。

给一个由0和1组成的矩阵,求最大的全1方阵

一开始用前缀和写了个 \(O(n^3)\) 的,后来又用dp写了个 \(O(n^2)\) ,顺利过关

给一颗二叉搜索树,现在让你将每个结点值变为初始树中大于等于它的值的和

这道题考察的就是二叉搜索树的中序遍历。一开始没想到,还sb的用了一发线段树,不过面试官一步步提出更高的要求。于是顺利想出正解。

设计一个秒杀系统

先问的多线程的实现细节,然后问大并发量下的系统设计。因为之前看过《大型网站技术架构 核心原理与案例分析》中的案例,于是按照记忆大概设计了下,不过并没有很完美。

给一个标准表A,其中有订单项,如订单id,用户id,金额,一个错误表B,皆为表A中的数据,不过有缺失或者金额错误,问怎么找出缺失和错误的项

小数据量时用两个HashMap即可解,之后改为大数据量。

先提出用外存排序的方法,之后面试官一步步加强限制,最后改为用hash将表A,B分段,然后对每个小段利用小数据时的方法解。

给单独一个表A,数据量很大,格式同上一个问题,然后让求出消费总额最大的前600个用户,做一个排行榜

一开始没听到是总额,于是说用堆排,之后面试官又重说了一遍问题。。。

于是参考上一题的解法,按用户id对表A进行分段,之后分段统计,再对每段进行堆排,取前600个,最后再合并,合并的时候参考归并排序,每次取每段堆顶最大值。

二面基本全是算法,所以很顺利的通过了,之后问面试官,他说他是搞搜索的。

 

三面

一上来先闲聊

说说你了解的百度

用过百度哪些产品(期间说了贴吧)

之后第一个技术问题就让我懵逼了。

设计一个贴吧

想了一会,就按我项目的结构设计了一发,之后开始问数据库的细节,哪些表可以拆分,怎么拆。还出了个SQL题

之后问了下一面最后的SQL题,让再写一遍。

然后问二面的秒杀系统,现在有没有更好的设计方案,还好我二面回去之后就重新看了一下案例,于是按书上的方案设计了一发

之后又开始闲聊模式

什么时候可以来实习

你认为你有什么优势

你最有成就感的一件事

你有什么想问的

两天后便接到签offer的通知。

 

百度通过了之后,我也就提前结束了我的校招。之后的公司都没有再去面试了。一些公司通知我去面试我也没去,想想也有点不好意思。

 

Categories: 随笔