你的努力 值得你拥有(C++方向)
- 56天+42家公司+29场机试+37场面试
- 一天最多做过四家公司的机试题
- 一天最多面过四家公司
-
连着两个礼拜的面试,早上七点钟起床,参加宣讲会、做笔试、面试,晚上再回来有时候继续机试(最后已经分不清星期几了)
这些数字大概可以总结我的秋招之路了
0. 写在前面的话
- 找工作其实就是不断的升级打怪的过程,刷经验,打装备,你会发现其实自己正在一步步变强。
- 现在回头看看自己找工作过程,该经历的也都经历了,什么简历挂、测评挂、机试挂、一面挂,技术群面、传说中的玄学面试....也算是完整了。印象挺深的一个是刚开始内推时候,电面四连挂,确实很受打击,外表故做坚强,其实心里的小失落只有自己知道。这个时候重要的是心态不能崩,反思自己是哪里出问题了,基础问题还是表达问题,发现问题就改,别拖。
- 有一点遗憾就是没有找实习,在三四月份周围同学开始准备找实习的时候,总觉得自己什么都没准备好,找也是白找。其实当你准备好的时候,大家也早就准备好了,还不如提前早点开始。
- 现在公司的招聘都开始的特别早,什么内推,提前批,优招一个比一个早,不提前准备怎么能跟上大部队。
1. 一些感想
下面算是一些小小建议,仅仅表示个人想法,看看就行。
a. 运气 + 实力
-
这两个五五分吧,但为什么把运气写在前面,因为面试时候决定你过不过的正是你对面的面试官,他有可能因为一句话挂掉你,也有可能因为一句话让你过,或者其他各种原因,变数太大。所以有时候会发现面试时候聊的很好的,出门就挂,聊的一般的还过了。(当然不排除有大佬可以完全主导面试,让面试官跟着你走)
-
硬实力没的说,自己的水平自己多少还是清楚的,差哪里补哪里,早点准备,肯下功夫这个不是问题。
-
还有就是软实力,面试时候的表达,能否把你自己知道的清楚的表达出来,让面试官感兴趣,这些自己也都可以提前准备,预演熟悉下。
b. 早早准备,找找实习
找实习真的有n多好处,找到了最好,简历加分不说,如果是心仪的公司,有很大概率是可以转正的;就算没找到,也是提前督促自己,进入状态,熟悉面试的套路。
c. 简单规划,做好笔记
- 做个简单的规划,刷题,复习知识点。
- 分类做好笔记(博客,云笔记都可以)
- 每一场面试,不管好坏,及时总结,有没有还可以完善的,说不定下次就又遇到了。
d. 看面经
- 面经里面基本是问题,看的时候自己模拟一下,看看能答对多少,不熟悉的地方最好及时查查资料,因为有可能你面试的时候会遇到。
- 回答问题时候可以分点说,123这样子;也可以尝试从定义-原理-实现-应用这个方向说,实在不了解的就跟面试官表示自己目前对这方面还不熟悉,之后还需要再学习。
e. 准备一个求职进度表
写上公司,机试,面试,及相应的时间。
因为最后当面试逐渐增多的时候会有很多冲突,有的面试官可能会跟你约时间,自己规划好,尽量减少冲突。
f. 不要和别人比
每个人岗位方向、基础都是不一样,可比性不大,你需要做的是和自己比,确保每次面试都有进步,每次面试完及时总结分析,哪里回答的有欠缺,哪里还可以说的更完美。
g. 心态不能崩
2. 面经
好多已经记不太清楚了,公司之间没有什么顺序。。。
腾讯
- 先确认了工作地点和部门
- 自我介绍
- 做题,提前准备好的一张纸
- 只知道数组名,求数组长度
- struct 和 指针偏移问题
- 内存拷贝
- 多线程、多进程通信
- select和epoll
- 场景题,领导交给你一个你不熟悉领域的任务,你只有一晚上时间,第二天要出报告,你怎么做?
- 有什么想了解的吗?
二面:
- 打了招呼,自我介绍也没有,给了一张纸,开始做题
- AB两个文件各50G,每一行存放一个QQ号
- 找出重复的QQ号
- QQ号排序
- 统计QQ号个数
- 写代码,全排列问题
- 写代码,体现多态
- 智力题,有十箱酒,每箱十瓶,每瓶1斤,其中有一箱是每瓶9两,问只允许称一次如何知道哪这箱是9两的?
- TCP和UDP区别?
- 怎么保证TCP可靠性
- 什么是死锁?刚说完死锁的定义,正准备说死锁的四个条件,面试官就说今天面试就到这。。。
去哪儿
- 自我介绍
- 内存分配方式
- 虚函数,怎么实现的
- 面向对象的理解
- 内存泄漏的例子
- 数据结构(一对一:数组、链表,一对多:树,多对多:图)
- 最短路径(Dijkstra算法)
- 判断链表是否有环(说了双指针法,还让再想,说复杂度高的也可以。。)
- TCP UDP区别,这么保证TCP可靠性
- http报文格式
- 数据库了解吗
- 进程线程
- 然后把每个项目大概问了下。。。
感觉就是C++、数据结构、网络、数据库、操作系统、项目大概都过了一遍,问的很基础。
二面:
- 自我介绍,顺带说了项目
- 设计题,给你一块内存,实现插入,查找元素功能,请你设计数据结构,或者用到什么数据结构,尽可能高效?
- 写个快排
写完后,讲了一下思想,顺便说了优化,基准的选择。。
然后就完了。。让问问题,这速度,十几分钟
三面:HR面
问了基本情况之后,HR小姐姐说,给你发个offer?(还是反问的语气,真逗。。)
不得不说去哪儿效率真高,前一天晚上做完机试,第二天就通知面试,然后一早上连着三面。
好未来
- 自我介绍
- 写代码
- 字符串反转
- 求幂,a^b
写了个基本的不满意,让优化,递归。 - 问项目,聊天
然后说,你通过了,等下给你写评语,说然后是HR面
二面:
- 自我介绍
- 写代码,大数相乘
先在纸上写,完了笔记本上跑测试(说好的HR面呢。。。) - 聊天 聊的挺久。
中兴
- 自我介绍
- 讲项目
- 还有没有其他项目?(比赛算不算)
- 工作地点?
- 有没有拿到其他公司offer,都什么状态?
- 有什么想了解的?
二面:
- 工作地点是西安吧?是,优先考虑西安。。
- 自我介绍
(中文英文?)中文,谁说要英文介绍了?(邮件里说有英文考察。。)那行,英语待会再考察(自己把自己坑了)。。 - 有什么爱好
- 怎么规划一天的时间,具体
- 实验室里面是什么样的角色?
- 怎么策划一个活动,比如出去骑行,需要考虑什么?
- 讲一下考研的过程?
- 职业规划
- 用英语总结下这次面试(自己挖的坑,自己填。。。)
- 提问题
终面:
- 自我介绍,说项目
- 说说联合体,枚举,结构体区别。。
- 指针
- 问了成绩
- 家庭,工作地点,
- 还有什么想问的?
华为
上来也没自我介绍。。
- 在学校有什么社团活动经历吗?
- 讲一个你熟悉的项目,感觉面试官听清楚是做什么就行了,后面也不让说了。。
- 然后又聊了下其他的项目
- 写一段你项目里面的代码,随便写
- 这个有点简单,再写一个。。
- 提问题
二面:
- 自我介绍
- 说自己熟悉的项目,遇到什么问题,怎么解决的?
- 写个堆排
- 说说自己优点缺点
- 意向工作地点是哪里
- 意向岗位
- 意向部门
- 你还有什么问题?
平安科技
- 自我介绍
- 大概聊了下项目
- 数据结构了解吗?(了解)问实现过吗?(底层实现?)不是,就是用过吗,比如树啊,堆啊,怎么构建(我说这个有,经常用到),那你写一个(准备开始写堆)不着急,待会在写
- 聊天,成绩排名,offer情况等等
- 写个代码吧,简单的,机试最后一题,约瑟夫环,写一下。。
- 写完了,讲了一下。
- 面试官点点头,我这边没问题了,你有什么问题吗?
- 我愣了一下,不是还有个堆没写?
- 你想写?那就写一下,讲讲思想也可以。
- 我说还是先写,吧啦吧啦写完了,大概说了下思想,应用
- 还有什么想问的?
二面:
二面也没问题技术,就是聊天,当时感觉像HR面。。。
- 一面感觉怎么样
- 项目基本过了一遍
- 平时怎么学习
- 有什么offer
- 了解平安吗
.....
海康威视
- 自我介绍
- 聊项目
- TCP文件传输改为UDP
- 进程线程,通信
- 写代码,分割字符串
- C++11特性了解吗,说几个熟悉的
- 你有什么问题?
完了说在外面等二面HR面,人比较多,到我的时候1V2,正好另一个孩子是测试,中间还让模拟了一下开发和测试的日常。其他的就是了解下个人情况,完了等通知。
美团点评
一面是电话面,接到电话就听见说“你好,我是美团外卖的。。。”,当时还楞了一下,哈哈哈。
- 自我介绍
- 讲项目
- c和C++对比
- 数据结构
- 树、哈夫曼树
- 常见排序算法,复杂度
- 面向对象特点
- 问问题
最后面试官还给了些建议,职业发展什么的,说如果真想去北京发展,可以抽空去北京,电话面试多少有点弊端。当时就有种不祥的预感,不要C++的么?要跪。
时隔一个月之后突然接到美团电话,复试现场面,很惊讶啊,然后约了时间。
去了之后在签到处竟然找不到我,然后又打电话,上去之后被告知我们这一组的技术面试官已经打飞机回去了,需要另外安排面试官,但是要到下午,又说既然你来了要不先面个HR。
HR面:
正常聊天
综合面试:
- 自我介绍
- 聊项目
- 写代码,找第K大数,如果数中有重复元素呢?
- 有什么想问的?(这时候才知道面试官是前端,临时面我的。。。)
- 完了说今天两面完了,回去等通知,可能要补一轮电话面试。感觉自己来就是走一过场。。。
小米
- 面试官先是介绍了下部门情况
- 自我介绍
- 说项目,说了好久,拓展了好多东西
- Linux启动过程说一下
- 常见排序算法
- 三次握手
- 三类IP地址
- B+树 B树
- 性格优点
- 想问的问题
二面:
大概也就是先说下项目,然后问了基础问题,面向对象,数据结构,操作系统,计算机网络都问到了。
百度、滴滴、360、迅雷
当时记的有些乱,搞一块了。。
- 写代码,打印斐波那契数列
写了个递归,然后让改非递归 - Dijkstra 和Floyd算法对比
- Floyd怎么实现的
- 实现多并发,IO复用,epoll使用线程吗?
- 服务器端改为epoll,怎么改?
- TCP建立断开连接 三次握手 四次挥手
- 手写 堆排序
- 手写 mapreduce 模型
- 手写 生产者消费者模型
- 哈希表,指定长度100,模拟LRU
-
数据结构了解么?
:基本的都熟悉
:说一下堆?
:说了堆的定义(大小顶堆)
:有什么应用?
:可以解决TopK问题。
:怎么解决呢?
:使用堆排序,建立一个k个元素的小顶堆,然后维护这个堆,可以找出前k大的元素。
:讲一下堆排序?
:初始化堆,然后......
:初始化时间复杂度,为什么?
:O(n)
:排序呢?
:O(nlogn)堆应用 堆排序 复杂度
优先级队列的实现
大数据的处理(TopK)
堆排的实现 -
三次握手 为什么三次 四次挥手 为什么要等待2MSL的时间?
- 构造一个哈希表(默认是只有根据key查value 的功能),现在加入一个功能,根据插入数据的顺序,能把里面的数据都遍历出来,怎么设计这个数据结构?
- 一亿个数据,堆排和快排那个快(空间足够大)?
快排快,因为在快排中是相邻区域做比较,计算机中高速缓存是一次读入一片相邻的区域的数据,所以说对于快排的时候,相邻数据比较在高速缓存中命中率很高;而堆排做不到这一点,堆排比较的是父子节点数据,跨度比较大,高速缓存中数据命中率低。 - 内联函数 优点和普通函数相比
- 多态 虚函数 原理
- 死锁 条件 怎么预防
- 多线程 socket监听过程
- 设计模式 单例模式
- 比较两个struct相等,值比较和 memcopy,是否等价?
- abcd四个点判断是否是矩形,说了对角线法,感觉出乎面试官意料了,想举反例,最后说你这种方法好像也行。
- printf函数怎么实现变长输出的,printf("%d %d", 1);输出有什么问题?
- memcpy(&a, "abcd"),操作系统做了哪些工作?
- C++中静态成员函数和普通成员函数有什么区别?
- fork ab两个进程 同时写文件会出现什么情况,如果用线程呢?
- 手写代码,分割字符串