一个非科班17届毕业生的求职互联网经历(腾讯、美团、携程等)

个人是2017届某高校自动化专业研究生,正式准备是从二月底开始。因为到四月底还在实习,所以三月四月花的时间也不是很多,主要看书时间是五六七八共四个月。

先总结一下,截止到2016年10月30号,内推收到offer的有,携程、金蝶、科大讯飞、数字政通,校招收到的腾讯、美团。还有两家华为和中兴,因为意向地点是成都,岗位少,还在等结果。

当时9月23号下午,面完腾讯终面,就打定主意不面了,毕竟因为内推拿到几个了,再加上能面得大公司也面了,至于会不会腾讯美团华为中兴这些能不能过,也就没太在意了。算起来,加上内推,也就面了十来个公司。也不用一味追求太多的面试,因为很多时候你简历写好了,别人问的东西都大同小异了,因为每次面试个人简介,介绍项目以及问数据库底层原理JAVA知识等,都是重复的。

一、3月份到6月份实习阶段

1.1阿里实习内推

    一月底被老师派到一个初创公司做一个合作项目,公司项目用JAVA,一直学习C++,大概年后也就是二月二十号,开始转学JAVA。阿里大概是三月底找人投的,把做了十天不到的项目写到简历上了。四月五号接到通知预约时间,约了七号的时间。准时接到面试电话,比较坑的是,当时公司附近房间在装修,一直有点吵,大概18分钟。

1、 介绍下项目的整体流程,以及负责的部分。项目主要是java编写,用到Hadoop平台的HBase,以及mysql。

2、 项目中的难点。

3、 随便解释一个熟悉的排序实现原理。

4、 介绍下HBase和Mysql数据的区别(项目中有用到HBase)

5、 Hadoop平台Map/reduce介绍

6、 java中的接口、抽象类

再加几个java的基础认识,反正当初只学了十多天,基本没答上,再加上项目也不熟悉,一面挂。


1.2阿里实习

    阿里实习招聘,大概是四月二十几号做的笔试,阿里笔试主要是智力题逻辑题概率题等,再加上编程是设计题,很侥幸的通过了。设计题记得一个是:分布式系统设计,我大概按照HDFS的思路写了代码。但是因为后面回武汉学校了,面试地点在成都,就没参加。

1.3其他实习

    网易、腾讯错过笔试,百度笔试过了,一面挂。好未来面试一面挂,远景能源沟通了下让做c++,没面。后面还单独面试了个百度文学的,也是一面挂。

   

    反正实习面试全挂,主要还是JAVA学的时间太短,准备不充分。


二、6月份到8月底内推阶段

    基本上的互联网公司都投了,简历筛选通过也就三四个,简直惨。虽然基础还可以,但是项目太简单,筛选简历太看重项目经历了。BAT、美团、滴滴、京东等内推全挂,网易互联网错过笔试。过了的就五个,一个百度高校技术汇(这个不算校招内推吧,百度正式内推八月多的),一个数字政通(武汉有研发中心),携程,科大讯飞,金蝶软件。


2.1 百度高校技术汇面试

百度六月份在学校举办了百度高校技术汇的讲座,现场投递了简历,意向职位是软件开发和JAVA后台。这个比百度正式内推早两个月。简历筛选通过,分配到云系统平台,约了个时间周日电话面试。内容如下:

1、 项目介绍:介绍了项目电商平台,主要涉及HBase和Mysql 数据库,java语言,ETL处理以及JFinal MVC框架。

2、 TCP的三次握手过程,为何不是四次或者两次。

3、 ARP的是什么协议,是怎样实现arp快速获取的。

4、 Linux中熟悉哪些命令,查看系统cpu和进程的命令。

5、 Linux中,怎么样进入内核态

6、 内核态和用户态的区别

7、 对操作系统哪一块比较熟悉,我说对进程同步和共享和锁熟悉,因为我当时还没看操作系统,看了java并发编程,所以这样说的。

8、 操作系统死锁的条件,以及预防和避免的方式

9、 生产者消费者模型介绍,使用伪代码描述过程(电话面试描述代码,简直醉了),虽然用java代码知道怎么写,可电话面试啊,我写好java读给他听,反正不知道听懂么,就没问了。

10、算法:求二叉树中,节点距离的最大值,伪代码描述。(我就无语了,电话面试就不能说说思路就好么)我先说了思路,用JAVA代码写了念的(念的太难受了)。

11、算法:二分查找,伪代码描述。我说了思想,他说谁都知道思想,我想看看边界处理是否正确。又用java念的,不过好像很不满意。

12、算法:删除某个链表的倒数第n个节点。说了思想,我说的是一个指针h1,先走n-1步,设置h2指向头,然后一起走到末尾,最后改变将h1指向h1的下下个指针。我觉得是没问题的,他一直问,确不确定是先走n-1个,我说确定,反正面试官很怀疑。下来思考了,确实是对的,至于是不是n或者n-1,和实现有一定关系。

总结下来:四个代码题,现场面的话肯定能写,都是见过的题目,但是电面这个过程真是难受,面完后特别不舒服。没收到后续,挂了。

 

2.2 数字政通内推

时间八月中旬吧,投了无数公司没反应,同学说bbs上有个武汉本地的公司在招人,就投简历。第二天就收到电话,预约现场面试。

两点到,发了笔试题,让一个小时交,四五十分钟做完交了。

笔试:

1、 计算1/1!+ 1/2! +1/3! +…+ 1/n!。当1/n! 小于某个值就不计算后续项了。题目是流程图,有5个空,蛮简单的。

2、 找到无序数组的最大k个数,也是流程图填空。

3、 数据库查询语句编写,五个空。

总的15个空,面试的时候大概看到了,错了三个左右吧。

一面二面:

1、 项目的简单介绍

2、 抽象类和接口区别

3、 Java多线程实现方式

4、数据库查询:查询某个表里某门课程最高的成绩。当时不熟悉,用limit实现的,后面提示用聚合函数,才想起来。

5、HBase数据库和Mysql数据库区别

6、mysql数据库的索引等

    能想起的大概就这些,反正比较注重JAVA语言本身和Mysql基础,连虚拟机也没问到。如果熟悉这两块,应该就没太大问题。

三面总经理面:

    问了地点意向,为何选择留着武汉,以及未来的规划,有没有女朋友等等,就和普通的HR差不多。

 

2.3 携程内推

八月二十号左右,收到携程的电话,简直高兴坏了,终于有一家互联网公司给面试机会了。立即说,可以现在面。

一面:

1、 项目介绍,主要网HBase和Mysql数据库引。

2、 项目中具体负责的部分,有没有用到比较难的算法,我说没有,就是一些简单的转换处理,算法部分专门有人负责。

3、 项目没啥东西,他觉得没啥可问。就问了数据库的问题:mysql数据库中索引的级别有哪几种,以及mysql数据库默认的隔离级别。

大概七八分钟,应该是简历面,还好数据库比较熟悉,他就预约下一次视频面试时间了。

二面:

1、 视频面试,用的是牛客网的系统。题目:一句话中单词顺序反转,单词本身不反转,“Iam Tom”得到“Tom am I”,可以在线测试结果正确性。大概十五分钟写完调试正确。

2、 定义二叉树节点,先序遍历打印二叉树,用递归方式和非递归方式。提前一天准备了下非递归方式,很顺利写完了,博客中也有总结。因为写出来的非递归方式很简洁,面试官感觉不可信,怀疑了一波,我就详细解释了几分钟,好像他没明白,就跳过了。

3、 HashMap实现原理介绍。有没有看过hashmap源码,我说没有,我说了解原理。

4、 HashMap冲突时,是怎么插入的元素,是插入在链表头部还是尾部。确实没看过,就按照自己理解说是头部,解释了理由,蒙对了。

5、 Hashmap并发出现什么情况,为什么。并发导致死循环,原因没答上来。(并发扩容导致)

6、 ConcurrentHashMap实现原理介绍

大概四五十分钟吧,代码题很顺序,二叉树非递归遍历应该加分不少(可能他也没这么写过),hashmap源码没看,但按照理解答对了一些。就死循环的原因没回答上。

大概一周左右,发了录用通知书的邮件,没有标注实习录用。应该是面得不错,给了直接录用通知,看牛客网很多人说拿到实习录用通知,还让九月份去实习。反正算是很幸运。

 

2.4 科大讯飞内推

科大讯飞我是六月份就投了,一直没有消息,直到八月二十几号才收到通知,让去武汉研发中心,现场笔试和面试。

笔试:大概一个小时的题目,单选20个,多选10个,填空5个,编程2个。题目非常基础,但涉及的内容很广。100多人笔试,最后笔试通过人数35个左右,刷人还是蛮厉害的。除了编程肯定是正确的,好多选择都没底,最后幸运的通过了。

一面(二对一):

1、 项目经历

2、 项目中的最大的困难,怎么解决的

3、 怎么优化一个服务器的性能(主要说了优化程序本身,如JVM等;优化数据库查询语句性能;以及负载均衡等)

4、 负载均衡怎么实现(说nginx可以实现),nginx实现原理(懵了)

5、 有没用使用过缓存软件,服务器性能可以用缓存解决(不知道)

6、 HBase和Mysql区别

7、 Mysql索引,什么情况下不会使用索引

8、 Mysql事务,以及隔离级别

反正JAVA语言本身问得很少,主要是围绕项目,问了很多性能优化相关的,以及数据库原理相关的。虽然项目很简单,但是项目涉及的HBase和Mysql数据库看了底层实现,做了很多对比,基本没有太大问题。

    二面(二对一):

1、 常用的排序算法,以及快速排序的实现原理

2、 快速排序的最差情况分析,如何避免

3、 意向工作地点排序,武汉和合肥,果断先武汉后合肥

4、 假如你所在小组,有人的程序bug很多,你会怎么做?以及如果那个人是你会怎么做?

5、 期望工资…

二面基本不问技术,反正就是各种HR面的问题。说是一周后给通知,当时没抱太大希望的。不过一周后,收到录用通知了,很意外。

 

2.5 金蝶软件内推

公司规模不大,内推的,还有个笔试在八月十五号左右,一个小时,全是选择问答好像,没有编程。笔试完了,预约的电话面试,技术就一面。

一面:

1、 抽象类和接口区别

2、 Hashmap实现原理

3、 Concurrenthashmap实现原理

4、 Java并发了解哪些

5、 ThreadLocal是什么,如何实现的

6、 Spring 的IOC和AOP介绍

7、 Hibernate中,如何实现每个getConnection获取的连接不一样,并且下次获取时返回的还是他原来的那个?(没答出来:面试官说是ThreadLocal)

8、 数据库查询语句相关

都是非常基础的问题,反正面试中很顺利,几天后就通知过了预约了HR面。HR面都差不多,也是大概在九月初收到录用通知书了。

    总的说来,内推阶段面试了五个,四个拿到offer了,这是自己完全没有想到的。


三、9月份正式校招阶段


3.1 华为面试

    一面:

    1、项目介绍,问到最后面试官觉得项目很简单,我说主要是通过项目了解了数据库底层的东西,就让我讲讲Mysql的索引和加锁知识。

    2、你熟悉计算机网络,说说计算机路由信息是怎么获取的。

    3、熟悉设计模式是吧,说说工厂方法模式吧。

    4、熟悉数据结构和算法,讲一个红黑树的使用场景,以及为何使用。

    5、你以前考过二级C++,那你看下这段代码输出什么。大概意思是,在一个函数里面,给一个形参指针malloc空间,但是这个分配的空间不能传递到实参中。依稀记得是这样,反正就是蒙对了。

    总体来说,华为的四个题目还是有一定难度,都回答出来了。面试官最后还跟我瞎聊了几分钟,说我测评没过,并好心提醒测评的一些注意事项。

    二面:二面没啥说的,基本没问技术,问意向地点,回答说成都。面试官说成都只有云计算云存储,看你做过Hadoop和Hbase相关的,那只要还有岗位,就安排过去。

 

3.2 美团面试

    美团面试挺效率的,准时去的话,等待时间十分钟左右,非常赞。一面过了,马上二面,然后当晚通知第三天复试。复试当天,三面面完马上四面,反正很快就搞定了。

    一面二面:

1、栈和队列的区别

2、手写代码:删除一个链表的倒数第n个。

3、手写代码:用基本数组实现栈。注意几点:扩容;使用泛型;设置容量最大值,不能无限扩容;栈初始化大小应在构造函数中可以设置。(尴尬,只考虑了扩容这一点,后面三点是面试官看了后要求的)

4、List和set区别

5、Mysql索引原理和特点

6、垃圾收集算法,CMS的缺点(内存碎片化,大对象需要压缩紧凑)

7、Https和http的区别

8、Https实现细节,如何加密的,发送时本地需要加密么(不了解,没回答上)

9、解释什么是二叉查找树

10、解释什么是堆

11、哈夫曼编码的期望长度,四个的概率分别是0.4,0.3,0.2,0.1。

12、Maven和Gradle分别用什么语言配置(简历写有用过,说了语言后又讲了这两个的优缺点)

13、说说常用的linux命令

14、怎么优化数据库的性能

15、1G的数据,如何使用100M的内存进行排序。(外排归并的思想)

   

三面四面:

1、项目中遇到的问题,怎么解决?

2、项目中,意识到自己薄弱的地方?

3、暑假为什么没去实习,在做什么?

4、你对HBase和Mysql比较熟,讲一讲这两个最原理的实现、特点(讲mysql技术内幕和learning HBase中的拉出来,讲了十多分钟)

5、HBase和Mysql是怎么学习的?

6、个人博客中的内容,怎么自学的?

7、为什么意向地点是上海?

8、对美大有什么了解,生活中常用美团的什么功能?

9、如果拿到美大的offer,你觉得是什么原因?

10、平时的爱好(最好分学习方面、生活方面)

11、为自己前三次的面试打分

 

3.3 腾讯面试

    一面:

    1、自我介绍,项目介绍、项目中的难点。

2、你以前学过C++,为何转做JAVA,以后想不想做C++(能进当然想了),我说我学了很多语言无关的东西,并且C++之前也用过一年,因此没有问题。

    3、代码:实现linux命令的cd和pwd功能,保证不会有非法输入,十分钟写完。刚开始要我用c++写,五六分钟好多东西实在想不起来,就让用JAVA写了。细节蛮多的,只写了大概十来行代码,没写完,讲让我讲了思路。(挺惨的)

    4、代码:有两个字符串数组a,b,长度为n,m,查找b中的所有字符是不是在A中出现了。时间复杂度要求O(m*n)以下。

    5、两个文件中,分别有很多字符,内存放不下任何一个文件,判断有多少相同的字符。内存和时间尽量小。(我回答:先外排,再根据归并的思想逐一比较。最后问面试官答案:用hash,将hash相同的放在一个文件中,再进行比较)

    6、HBase底层原理和优势

    7、Hadoop和Spark比较,shuffle过程区别(只写了了解,按照记忆随便说的= =)

    8、觉得比较经典的数据结构(我说了红黑树、字典树)

    面完了,没抱有太大希望,当晚十二点睡觉时没有收到通知,想肯定挂了,就睡了。结果早上起来,一点发的二面通知,上午十一点面。

 

    二面:

    一个题目:0 – 40亿个连续的QQ号,QQ号的资料随机分布在北上广深四个地点的机房里。用户每次请求一个qq号时,需要从他qq号对应的机房去获取数据。现在只有一台机器,配置为内存32G,硬盘位SATA盘600G,要求设置一种方式,使得用户请求服务器时,能快速的给用户返回qq号所在的机房位置,要求响应满足2万条/s。(我知道硬盘访问速度是ms级别,咨询了具体的时间回答是10ms)

    反正从最开始用硬盘,面试官提示硬盘肯定不行,后面不用硬盘想出字典树的方式,但不是最优的,又再次提示,最后想出来了。整个过程40分钟,做完就叫下一面HR面了。整个过程很懵,能过也是侥幸吧,毕竟面试官引导了两次。

 

    三面:HR面,和美团的三四面差不多的。

 

3.4 其他面试

    中兴面试太水,没什么说的。

    五八面试,一面太简单了,面了一面让马上二面,第一当时有事,第二是不想去北京,放弃了。

    京东一面,面试官毫无诚意,问的概念性问题,IOC、AOP介绍,并发介绍等等,并且我项目毫无兴趣,具体问题和代码没有问,面了就觉得没戏。一面挂。

    百度一面,等了四个多小时才面。面试官一女的,上来就问,原因转语言不,像PHP,我说没做过,但愿意试试。问的全是具体场景题和数据库题目,反正很难,有的题目也没明白。一面挂。


四、总结和建议

后面仔细回想下,优势应该在以下方面:

    1、项目虽然很简单,但里面涉及到Mysql和Hadoop的HBase,我看了四本书《深入浅出Mysql》、《Mysql技术内幕:InnoDb存储引擎》、《Learning Hbase中文版》、《Hadoop权威指南》。前两本书看两遍以上,保证问底层和原理都要答上来,后两本不是很必要,我面试的岗位都是软件开发或者后台开发,很多面试官也不一定了解Hadoop和HBase。

    2、JAVA基础知识。所有可能问到的基础知识都有所涉及,《JAVA编程思想》、《JAVA并发编程实战》、《JAVA并发编程的艺术》、《深入理解JVM虚拟机》、《Spring实战》、《Head First设计模式》。

    3、数据结构和算法。严蔚敏的《数据结构》是上课学的,复习时看了《剑指offer》、《程序员面试金典》、《程序员代码面试指南》三本书,第三本买的晚,没有完全看完。这些题目最好先在牛客网尽量刷完一遍,再看书。除外,牛客网的算法直播课也基本看了一遍。

    4、其他基础知识。《操作系统教程(第四版)》、《TCP/IP协议详解》、《鸟哥的Linux私房菜基础篇》。

    如果求职意向是软件开发和后台开发,在时间分配上,个人觉得,数据库占1/3的时间,数据结构算法占1/3的时间,语言基础及其它占1/3时间。因为,语言不是最重要的,后台主要涉及数据库和算法,这个基础一定要好。这可能也是为什么我拿到腾讯的offer,语言方面一个没问。

 

你可能感兴趣的:(求职经历)