2016,终入江湖

现在距离签完三方已经过去5个月了,找工作已在16年10月份结束,今天突然心血来潮,想要记录一下找工作的经历,多年以后自己再看此文,未尝不是一种珍贵的回忆。

(纯粹为了记录找工作的经历,不喜绕道,谢谢!)

原普通一本信计(数学)专业,后考研至某985,计院渣硕一枚。(最终拿到华为杭研、腾讯mig、cvte、去哪网offer)

默默准备

15年7月份进入实验室,实验室是做图像处理的,研一的时候基本上都是帮老师看论文,然后写文档,对程序的编写和程序语言的使用基本没有任何的提高,图像处理中的算法倒是了解了不少,但是这对找工作又有多大的帮助呢(研究生的时候基本靠自学)?因此,在空闲的时候只能先把 C++ primer plus 看了一遍(以前对C++只了解皮毛),这本书算是把我领进了C++的大门,后来在找实习之前逐渐看了 C++实践之路、effective c++、深度探索C++对象模型、鸟哥的Linux私房菜、数据结构,算是对C++和Linux有个基本的了解,同时为了提供算法编写能力,还在leetcode上刷题并看了算法竞赛入门

初试江湖,备受打击

日子在阅读论文,写文档和看书中逐渐到了16年的3月份,此时实验室的气氛莫名的紧张了起来,和我们一起找工作的学长(学硕)每天都在讨论这投哪家公司的实习,什么时候做笔试...,是的,已经开始找实习了,找实习的过程和6个月以后找工作的面试流程一样,所以还是有必要参与一下,因此为了准备接下来的实习面试和笔试,以前轻松看书的日子已近远去了。此时,又刚刚把C++ STL看完,leetcode也刚刚刷了50题,虽然很心虚,但是还是要去面试和笔试(此时就像有一双无形的手推着你按照以前学长的路走下去,没那么难也没那么简单)。
实习只投了华为和腾讯,先在学校的机房里做完华为的笔试(华为有自己的oj平台),又过了几天收到了腾讯网上在线笔试的通知,又做了腾讯的笔试,总体来说,华为的笔试比较简单,只有编程,但是要注意输入输出格式,腾讯的有选择题、文字叙述和编程题,编程题难度也不高。经过 半个月的等待后,华为和腾讯都发了面试通知,悲剧的是,华为和腾讯都是同一天面试,腾讯9:30开始,华为10:15开始,早晨从宿舍出发走到凯悦酒店,过了 不久就开始了实习生的第一场面试,开始的时候还是很紧张的,在面试的时候一直在抖,腾讯的面试官还是比较温和有礼的(不像以后面试的某个语音输入法公司),开始先让写了一个字符串拷贝的函数(需注意参数的类型,const、防止地址越界,内存空间的分配,实际字符串长度、‘\0’),然后开始询问最近在看什么书,有什么收获,对C++的理解,C++和C语言的区别,本科学的什么,实验室做什么方向的,做过什么项目,有什么进展,如果给你50亿个整数,如何快速判断某一个整数是否在给定的数中,平时有没有看过开源代码?(其它的记不清了),面试大概进行了40分钟左右,面完走出酒店,我就知道已经gg了,此时的心情无比平静,然后打车,去华美达酒店,面试华为,华为的面试规模比较大,在一个大厅里面,还是先做一个编程题,输出100以内的素数(效率尽量高),面试官首先问了本科有没有学过网络,懂不懂linux后台,由于本科对这些了解不深,研究生期间也是初涉这些内容,所以瞬间就冒汗了,然后又问了操作系统的内存分配(给他扯了一下程序编写中的内存分配,然后就被鄙视了),然后又问了对线程和进程的理解,然后就gg了,临走时面试官还说,回去再好好看看书,准备参加秋季的校招,...........。
实习只面了华为和腾讯,虽然过程是痛苦的,结局是悲惨的,但是,让我认识了自己的很多不足,也给接下来6个月准备校招的生活带来了巨大的动力。

直面江湖

实习面试结束后,了解了自己目前的状态,便老老实实的在实验室继续看书,在接下来的4个多月里(到8月底),陆陆续续把王道程序员面试宝典、计算机网络、深入理解计算机系统、数据库、剑指offer、UNIX网络编程(卷1&卷2)、UNIX环境高级编程、啊哈算法看完,leetcode也刷了160多道题目,也在牛客网做了一些专项练习和模拟笔试。
2016,终入江湖_第1张图片
2016,终入江湖_第2张图片

1.华为

到了8月15号左右华为公司就开始给我们这一届的毕业生发面试短信了(号称优招),当时云计算部门还让我们去参加一个座谈会,一开始的时候听说,如果优招没有通过面试,就不能参加后续华为的校招了,因此就有点不是很想参加优招,不过后来云计算的hr承诺我们优招没过校招还有机会,于是在经过一番犹豫之后,还是报名参加了优招,因为实习的时候参加了华为的笔试,因此优招的时候就不需要参加笔试了,一面的时候,我现在印象最深的是,面试官对我的一个图像算法的优化很感兴趣,在聊的时候,还当场拿出笔和纸让我推导算法公式,和我讨论算法的指标,之后问了我的操作系统和网络方面的内容,然后就让我在大厅里面等待二面,等了大概有半个多小时,就有面试官领着去参加二面,二面面试官主要侧重于问以后想做的方向,对Java是否有了解,Java和C++有哪些不同,不知道面我的面试官是不是做算法的,二面的面试官又让我把算法推了一遍,之后就开始跟我谈华为的各种好....,然后就让回去等通知,之后9月初的时候,通知了一批人去签两方,我没有接到通知,后来,又过了几天华为方面打电话说已被录用,此时华为校招还未开始.....

2.科大讯飞

在8月份的时候投了科大讯飞,然后9月初的时候,科大讯飞发短信让去软件园参加笔试和面试,由于那天比较堵,到了科大讯飞公司的时候已经迟到了半个小时,而科大讯飞是纸质的笔试,没有机试,接过试卷后就开始狂写,有单选题,多选题,填空题和编程题,题目相对比较简单,一个半小时的时间,做完之后,面试官就让在办公室里面等待结果,有过了大概半个小时,面试过抱着试卷过来喊通过笔试的人,喊道名字的留下参加下午的面试,讯飞公司安排了中午的午餐(外卖),下午两点开始面试,一面通过才能参加二面,当天只会有两次面试,一面的时候面试官问了,TCP/IP的四层模型和OSI七层模型,研究生期间做的项目,试卷中的问题,设计模式,还有一些其他的小问题,因为在面试的时候我看到面试官好像不是很友好(面试的时候,两个面试官好像无精打采的,应该不是专业hr,不像tx和hw),我就感觉可能gg了,在最后的时候,他们问我有没有什么问题要问的,我当时想这可能是最后一面了,我就跟他们指出他们出的试卷有错误(确实有错误,这也反应了一个公司的素质...),然后,他们就让我到外面等消息,等了大概有二十分钟,二面面试官过来喊我二面,二面的时候主要问了项目,然后问我对算法研究员感不感兴趣,然后他告诉我,我可能还会有三面(只有算法研究员才会有三面),然后就结束了,等了半个月之后,讯飞打电话让去合肥参加三面,因为不是很想去合肥,然后就谢绝了三面...

3.腾讯

腾讯是在9月份笔试,笔试包括选择题,问答题和在线编程题,题目难度适中,一般不会刷人,笔试通过在面试前一天会发面试通知,腾讯一直是我最想去的公司,一面的时候面试官没有问算法,一直问基础知识,然后问了做的项目相关问题,由于简历中写了一个服务器和客户端socket通信程序,面试官可能对网络通信方面比较感兴趣,然后就一直问其中通信的原理,通信协议如何设计,如何实现并发连接,数据如何存储,如何传输图片和文件,如何解决高并发带来的问题...,到此,一面结束,第三天接到二面通知,一些基础问题以及记得不清晰,只记得面试官问了四次握手和三次挥手的过程及相关问题,然后面试官问如何设计一个网络协议,由于当时比较紧张,这个问题回答的相当不好,事后冷静下来,感觉这个问题应该从,是什么,为什么,然后再回答怎么做,到此我的腾讯校招之路结束,失败.....。但是两个月之后,腾讯又开始校招补录,然后又投了简历,经过三次电话面试后,还是拿到了offer。三次面试主要问了,基础知识如C,C++区别,对C++对象模型的理解,static的作用,动态规划算法,数据统计分析,printf函数的实现原理,网络通信..... 

4.cvte

cvte的面试是我面试过程之中感觉比较累的,面试是在中秋节的下午4点中左右开始,经过了三面(两轮技术面试,一轮hr面试),面试结束的时候已经到了晚上8点多,第一面开始,面试官主要谈了一下项目,然后就出了两个算法题,第一个是输出第n个指定的斐波那契数,该题目虽然简单,但是还是要考虑如何将程序写的更美观,如何使得空间利用率更高..,此时我向面试官提了一个问题,问他n是从0开始的吗,他感觉很诧异,他说之前没有任何一个面试者问过这个问题,看他的表情好像对我主动向他提问很满意,第二个算法是,如何统计一系列数中各数最多的两个数,需输出相应的数和对应个数,这个时候我又主动询问能否使用map,算法的时间复杂度和空间复杂度的要求,最后写出了一个时间复杂度为O(n),空间复杂度也为O(n)的算法。第二面,面试官主要问了对STL的了解程度,然后让自己参照STL中的vector写一个循环队列,然后我使用数组和类模板实现了循环队列的基本 功能,可能当时面试官也赶着回去过节,这个实现后就介绍了二面,后面就是三面,主要询问自己期望和看你对他们公司是否感兴趣,最后还会问你是否有问题问他(这个问几个问题,以表示对他们公司兴趣,每个公司都会这个流程),然后晚上22:00左右,在微信上的状态就已经是面试通过了。(感悟:要主动向面试官发问)。

推荐

刷题网站:

牛客网(各种内推)

leetcode

 

算法推荐书籍:
啊哈算法!

 

 

面试问题:

1.如何统计一个数字二进制形式中01的个数?

2.如何判断字符串中是否存在汉字?

3.C++constCconst的区别?

4.static的作用?
5.如何修改类中的const类型的变量?

6.虚继承是解决什么问题?

7.指针和引用的区别?

8.为什么有了指针还要使用引用,引用与指针相比的好处?

9.几种类型转换关键字、智能指针?
10.如何实现一个不可以被继承的类?
11.C++C的区别?
12.C++中多态的实现原理?

13.C++中的覆盖与隐藏

14.如何实现只能在堆/栈上创建的对象?
15.单例模式?
16.B+树的作用,概念?
17.红黑树的概念?

18.STL中印象最深的?

19.容器的实现原理?

20.二叉树的前、中、后非递归遍历

21.TCP的流量控制和拥塞控制

22.socket通信

23.线程进程的区别

24.图论算法

25.printf函数是如何实现的?(参数)

26.能否在析构函数中释放类对象的this指针?怎么释放,释放后还能/不能访问哪些函数?

27.40亿个整数,如何快速查找某一个整数是否存在?

28.外部排序(大文件,内存不足时排序)

29.类中如何设计一个必须实现的(有定义)函数?

30.TCP的四次握手三次挥手。

31.C++11新标准

32.如何在类中声明常量

 

 

智力问题:
1.跑马问题

2.时间问题

3.商店信息统计问题

4.最近在看什么书?

5.最自豪的一件事?


你可能感兴趣的:(C++)