51天+41家公司+31场笔试+22场面试
一天最多做过四家公司的笔试题
一天最多面过三家公司
二本本科
这些数字大概可以总结我的秋招之路了
【前言】
2018年校招,比以往来的要早一些。7月底就已经有公司陆陆续续开始内推了,8月初就有了提前批笔试面试。那时候我还在实习,每天完成mentor交给的任务,基本每晚都要加班。因为忙不过来,也没时间复习,所以就放弃了走内推流程。我参加的所有笔试面试走的都是大流程校招。
【面经】
G-bits
【时间】2017.8.31
【岗位】游戏研发
【形式】视频一面-1个半小时
【结果】一面挂
1.自我介绍
2.聊项目(简历上的每个项目都问了一遍,聊得时间很长)
3.笔试中第二个编程题如何去解(是一道DP问题)
4.C++多态实现原理
5.如何避免内存泄漏
6.智能指针原理,如果让你实现如何去做
7.看过Effective C++吗?讲其中两个条款说一下
8.sin1度如何计算
9.进程同步的方法
10.同步和异步的区别
11.UDP和TCP的区别,为什么项目中要用UDP?
12.UDP如何进行广播
13.网络场景题
14.堆排序原理,时间空间复杂度
15.证明建堆的时间复杂度
16.知道哪些游戏算法?碰撞算法了解吗
17.渲染管线流程
18.平时如何学习的
19.对未来的规划
20.对G-bits的了解
21.有什么要问我的
G-bits是我感觉秋招里态度最好的公司,面试官和HR都非常好。线上笔试两天后就出来了结果,没过的人都发了拒信,处理效率非常高,起码不让人一直干等着。面试官也非常好,很负责,非常耐心地听着我讲,还给我些建议,所以一面时间就大概持续了1个半小时,这也是我经历过最长的一轮面试。因为实习耽误了很多时间,也就准备了不到一天,所以很多问题答得也是模棱两可,当然结果也是没过,第二天没过的人都收到了拒信。不管G-bits的待遇如何,我都觉得他们很重视校招,面试官也很有耐心,技术水平很高;HR们的效率非常高,不得不赞
大疆创新
【岗位】PC开发
【时间】2017.9.17
【形式】电话一面-30分钟
1.自我介绍
2.static的作用
3.为什么类中的成员函数可以访问类中的数据成员(不知道想考什么,我简单答了下C++类的内存模型,后来想了想答了this指针)
4.C++中的调用约定
5.函数中的可变参数是如何实现的?为什么参数要从右到左压栈
6.函数的返回值是在哪个寄存器中
7.堆和栈的区别
8.系统清空堆栈是怎么实现的?(不知道)
9.C++多态性怎么体现
10.见我投的工作地点在北京,考虑过上海和深圳吗?(只要能拿Offer,工作地点我说全国均可)
11.问面试官问题(难道这么快就结束了?问了一下如果进去会负责什么内容)
12.项目中遇到过什么问题?如何解决?
以为要结束了,然后开始问网络和操作系统:
13.进程和线程的区别
14.同步的几种方式,说区别
15.并发和并行的区别
16.计算机网络的模型,每层都干嘛(答了七层和四层,并说了每层的功能,说到会话层,见我背的挺熟叫停了)
17.TCP如何保证可靠性
18.滑动窗口和拥塞控制原理
19.说一下红黑树的几个性质(太可惜了!!忘记复习红黑树了,只好说忘了)
20.让我挑一个数据结构内容他来提问,我说图论。面试官好像挺尴尬,一时想不出什么问题。。
21.还是我想了一下,介绍了最短路原理,BFS广搜、Dijkstra、Floyd适用场景,解决什么问题。重点说了一下Dijkstra的原理。
这次一个项目都没问,全是基础知识。其实基础知识大部分都能答出来,但主要是答得要条理,最好有逻辑性,不能卡壳,要做到这点是不容易的,只能多背吧。尤其是操作系统和网络那块要背熟,C++一些也要熟背,但更多还是要理解。然后过了两天收到二面通知。
【时间】2017.9.19
【形式】电话二面-40分钟
1.自我介绍
2.讲一个主要的项目,项目干了啥,遇到什么问题,怎么解决的。
3.因为项目中用到多线程,问了一下哪些地方用到多线程,为什么要这样做
4.面向对象的三个特性
5.解释一下多态是什么意思,C++中如何体现多态
6.带有虚函数的多继承下子类的内存布局
7.虚函数表在哪个地方
8.菱形继承会有什么问题?如何解决
9.模版有什么作用,它的好处是什么?什么时候适合用模版
10.回调函数有什么用,举个回调函数的例子(我说Windows窗口创建的时候)
11.lambda表达式如何实现函数回调(不太了解)
12.如何避免内存泄漏
13.上一个问题说到智能指针,说一下智能指针有哪些。BOOST中还有哪些
14.详细说一下weak_ptr的作用,能解决什么问题(还以为要问shared_ptr)
15.设计模式有了解吗?说一下单例模式是干嘛的,如何编程实现?
16.单例模式有哪些实现方式,介绍两三个实现,哪些是线程安全的
17.如何使单例模式线程安全
18.上一问说到锁,问了一下死锁的必要条件
19.如何避免死锁的发生
20.TCP如何保证传输可靠性
21.URL解析的过程
22.HTTP和HTTPS的区别
23.数字签名证书的一个问题(不知道,没了解过)
24.开放题:现在要设计一个新系统的SDK,软硬件都有结合,可能要不断地增加新模块,如何设计这个SDK?(有点懵,没了解过这方面的知识,举了个QT SDK中类继承关系图的例子,按自己想法答了下,一般般吧。面试官很好,还说不要紧张,能想到什么说就好了)
25.平时怎么学习的,看过哪些书
26.有什么问题要问我的
感觉大疆这轮的面试官很好,问题由浅入深,直到问到我不会为止,尤其是那道开放题,说我还不错了解过QT,中途还说不要紧张。顺便每次面试都是查缺补漏的过程,把不会的知识点都查了一遍。
【时间】2017.9.24
【形式】现场三面(终面)-20分钟
1.自我介绍
2.项目细问
3.介绍红黑树,和BST、AVL的区别,适用场景
4.介绍map和unordered_map区别,适用场景
5.C++11特性
6.智能指针有哪些,每个的区别
7.思考题:海量数据处理相关问题(64MB内存限制,1亿个数要如何如何...)
8.有什么问题要问的所有问题都答上来了,面试官对我评价不错,还算满意,说结果应该没问题的。所有人都只安排了一面,HR说让我们安心等结果就好。(国庆节后发现官网状态已变,挂了,有缘无份吧)
涂鸦移动
【岗位】游戏研发
【时间】2017.9.18
【形式】电话一面-20分钟
1.自我介绍
2.介绍一下FPS游戏的项目,很简单说了一下,也没问啥
3.C++多态是怎么实现的
4.最长回文字串的算法,要说明算法过程和时间空间复杂度
(1)暴力枚举
(2)动态规划,要解释转移方程的含义
(3)中心扩展方法
(4)Manacher算法,简单介绍了下原理
5.Dijkstra算法的原理,详细过程。说明应用场景
6.对公司有什么了解吗
7.有什么要问我的
涂鸦移动是做海外手游的,目前还在创业,游戏类型大部分是休闲类。这轮面试答得还算满意,幸好复习过算法,没有被问住,所有问题都答出来了。
【时间】2017.9.19
【形式】电话二面-20分钟
1.自我介绍
2.问了下我平时刷题经验(OJ经验)
3.介绍三种最短路算法:BFS、Dijkstra、Floyd,我自己又补充了SPFA
4.说下最小生成树Kruskal 算法
5.上一道题目引出了并查集,问了下并查集是干什么的,怎么实现
6.并查集中的路径压缩是怎么回事,有什么好处
7.学过哪些课程?图形学了解吗?(图形学不太会,我说自己了解图像处理,面试官没追问)
8.问实习
9.在学校有哪些印象深刻的事(这不是应该HR面问的么?)
10.自己在技术方面有哪些优点,和哪些缺点
11.自己有没有开发小游戏的经历
12.平时怎么学习的,看过哪些技术书籍(重点说了C++的一些书)
13.上一道题目引出《Effective C++》,让我介绍其中两个条款
14.向面试官提问
感觉公司好像很重视算法,面试也一直在问算法,还问我刷题经历。面试之前看了一些游戏相关的算法,但没被问。这次问的算法比较容易,都是数据结构的东西,信手拈来。可惜图形学不是我的强项,没太多了解。
【时间】2017.9.26
收到Offer-所有流程结束
三七互娱
【岗位】游戏研发
【时间】2017.9.19
【形式】电话一面-15分钟
没想到第一面是HR,和HR姐姐聊了会儿天,聊实习,平时的学习情况,目前有无Offer等
因工作地点和岗位没能达成一致,卒。。。所以就不安排面试了。过了很久,国庆节后又接到面试电话,要去上海现场面,因地域原因无法参加,所以放弃了后续面试。
【时间】2017.10.17
【形式】现场一面
HR要求去上海面,因为地域原因放弃面试
欢聚时代
【岗位】C++研发
【时间】2017.9.2
【形式】现场零面-15分钟
1.自我介绍
2.介绍项目
3.问平时如何学习
4.对未来的规划
5.聊天
我投的是C++岗位,可是把我安排到了音视频编码解码算法的房间,我还以为HR把我安排错了,其实是面试官把我简历看中了(当时心里暗自窃喜,没想到我简历还有被看上的一天)。面试官想先了解我一下,就把这个当成零面吧。面试官重点问了一下项目,因为他见到我做过音视频相关开发,所以问的稍微深入一点,可惜这方面了解的也不多,被问的有点惨,很多东西没听过。中途还看了我的博客,给了我一些很好的建议,他说我了解的知识面挺广,深度涉猎还有欠缺,更合适去做集成开发。我说自己喜欢做C++前端,面试官也说前端可能不好找,毕竟市场越来越小,YY的一部分产品使用QT,他说这方面我还是挺适合的。面试官对我评价也很好,见我虽然是本科,但水平还是不错的。
【时间】2017.9.25
【形式】现场一面-40分钟
1.自我介绍
2.inlie关键字有什么用
3.static关键字有什么用
4.RAII是什么(忘看这个了,没答好)
5.仿函数是什么,有啥用,和函数指针区别
6.进程间通信的方式,它们的区别
7.知道哪些锁,说一下互斥锁和自旋锁
8.TCP三次握手过程
9.SYN Flood攻击(一下子想不起来了,大概说了下,面试官说你说的这个对也不对)
10.算法题,要讲思路+手写伪代码
数组中只有1,2,3这三种数字,要进行排序(其实就是荷兰国旗问题),O(N)解决,给面试官画图讲思路,他听的很认真,我的算法也得到认可
11.再来道算法题,讲思路+手写伪代码
将一个数组分成两部分,使两部分和的差值最小(01背包变形问题)当时想了好长时间,用各种方法去尝试,但转移方程写错了,虽然没解出来但思路还是得到了认可
12.项目简单问了一下
13.向面试官提问
面试官:MXD,先做一下自我介绍吧!
我:呃...我叫FXL(尴尬,今天已经是第二个把我名字叫错了)
面试官还是挺严肃的,问我问题一直盯着我看,讲算法的时候要把每一步都讲清楚,想蒙混过关估计是不可能的。可惜的就是第二个算法题没答上来,还有几个C++的知识答得不太好。
最后问他问题,我最关心的还是岗位方向的问题,问他们是否会招C++前端的开发。
没想到反被面试官问:“你投简历的时候见上边有写C++的职位描述吗?”
我:“我记得上边有写Windows客户端...”
“嗱,说明就招呗~”
略显尴尬。。感觉这个面试官技术上很严肃,聊天还是挺有趣的,哈哈。
【时间】2017.9.26
【形式】现场二面(BOSS)-20分钟
1.自我介绍
2.项目细问
3.对音视频编码解码的了解
4.进程同步方式
5.网络编程方面(问了我一个不知道的东西,忘了是啥了)
6.聊人生
7.为啥想做PC不想做server
二面是BOSS,感觉资历很深,岁数也比较大。BOSS说他们主要招server的,前端开发这块很难说,形势一直不好,而且基本成熟了,项目可能也不合他胃口,感觉我对多媒体方面这块还是有些欠缺,GG了~
迅雷
【岗位】C++研发
【时间】2017.9.25
【形式】现场一面-20分钟
1.手写冒泡,问优化
2.面试官在纸上写了段程序,让我求类的sizeof
3.同上题,问构造函数、析构函数相关问题
4.同上题,多态、虚函数相关问题,画内存分布图
5.C++11了解哪些
6.内存池是干啥的?如何自己去设计,从哪些方面考虑?
7.上一问提到STL,问了STL几个相关的问题
8.TCP三次握手四次挥手
9.拥塞控制原理,窗口大小如何确定的
10.SYN Flood攻击
11.HTTPS加密过程
12.HTTP和HTTPS区别
13.向面试官提问
迅雷和YY面试地点都在同一个酒店,人非常多,等了好长时间。面试官也是开门见山,估计人比较多直接给我一张纸,问我知道哪些排序算法,我说基本的排序算法都了解,你让我写哪个都行~以为要写快排堆排啥的,结果让我写了个冒泡...后边让我进行优化。C++问题都没难住,主要是网络答得不太好。我感觉对自己发挥有点失望,面试官很nice,说不要妄自菲薄,对我基本满意。
【时间】2016.9.26
【形式】现场二面-20分钟
1.聊项目
2.项目中有网络,问了网络编程的一些问题
3.TCP三次握手四次挥手
4.拥塞控制原理
5.问TCP相关问题,出了个场景题,问中间可能传输什么报文、发生什么现象等
6.又出了一道思考题,和网络相关(并发的问题,细节记不清了)
7.聊人生
迅雷不愧是做数据传输的精英,几乎全程问的我网络......其实感觉答得一般般,能不能过看命了。另外做交流会的时候,发现很多都是名校,大家在一个桌子上,说自己拿了几个Offer、嫌哪家给的低拒了、哪家不好哪家钱多诸如此类问题。我就静静坐着看大佬们秀Offer......
【时间】2017.9.27
【形式】现场终面(HR)-20分钟
【结果】Offer-流程结束
HR该问的那些问题,此处略
据说有HR面挂的...我运气不错,发了Offer然后和其他一起拿了Offer的小伙伴一起吃了饭,加了好友~之后其他小伙伴要去面美团(美团我没投),另外我也去了剩下两家的面试地点。
好未来
【岗位】C++研发
【时间】2017.9.27
【形式】现场一面-30分钟
1.聊项目
2.MFC消息映射原理是什么
3.QT中的信号和槽有哪几种类型
4.模态对话框和非模态对话框的区别,可以将非模态转换成模态吗
5.控件如何随窗口大小缩放
6.有没有自绘过控件
7.进程间通信的方式
8.进程的几种状态,如何转换,画图
9.同步的几种方式和区别
10.手写二叉树非递归后序遍历,解释过程
11.手写堆排,解释过程
之前打听到好未来要手撕算法,还好临阵磨枪看了一下,都能写出来。就是刚开始QT的几个问题没答好。另外面试的这家酒店挺有趣,坐电梯要找保安刷卡才行,我刚进去按楼层没反应还以为电梯坏了。
【时间】2017.9.27
【形式】现场二面-50分钟
1.聊项目
2.音视频相关知识(尴尬,因为项目中有这块,面试官正好是搞这个的,被问了很惨)
3.有一个几M的大文件,里边存放了很多数,找出最小的K个数...在面试官电脑上编程实现TOP K,要跑出来结果
4.我上一问用的优先队列,面试官说再让我自己实现一个堆,所以把TOP K问题自己用堆又实现了一遍
5.在纸上写了段程序,类之间复杂的继承关系,让我找里边的错误(答得不好,好多没找出来)
6.聊人生
刚进门就感觉气氛有点不对,昏暗的房间里一台电脑亮着...面试官问了我项目,见我做过音视频开发问了几个问题,他就是搞这个的,所以被问的有点惨。然后开始考算法,要求上机编程实现TOP K。面试官电脑上已经打开了各种IDE:Visual Studio、QT Creator、eclipse...还有虚拟机(还有人用vim写么)。花了点时间写完TOP K,我用的优先队列,面试官说可以。但他还希望我用堆自己实现一遍,我捯饬了20分钟还是没写出来,把堆的一些思路和操作给面试官讲了一遍,他也认可。后边就是聊人生了,面试官对我印象很好,告诉我如何如何学习,C++该看哪些资料,确定我未来的学习方向~给面试官点赞。
【时间】2017.10.13
【形式】电话终面(HR)-15分钟
发Offer,HR该问的那些问题,流程结束
同花顺
【岗位】C++研发
【时间】2017.9.27
【形式】现场一面
本来还要在西安面这个的,因为时间原因,没能参加面试。网上评价不太好,对这个公司并无好感。
CVTE
【岗位】C++研发
【时间】2017.10.10
【形式】电话一面
已放弃面试
面试官在电话那头叹了口气:"唉……"。CVTE可以招人到明年,网上评价不太好,对这个公司并无好感。
盛大游戏
【岗位】游戏研发
【时间】2017.10.11
【形式】现场一面
HR要求去杭州面,因为地域原因放弃面试。
搜狐畅游
【岗位】游戏研发
【时间】10.11
【形式】视频一面-20分钟
1.自我介绍
2.聊游戏经历
3.聊人生
4.聊如何学习
5.聊实习
6.问C++看过的书
7.聊项目
8.向面试官提问
【时间】2017.10.13
【形式】视频二面-10分钟
1.自我介绍
2.聊游戏经历
3.聊人生
4.向面试官提问
(面试时间之短出乎我预料,原来面试官是总监,但不是技术出身,所以没问技术问题)
【时间】2017.10.19
【形式】视频HR终面-30分钟
1.自我介绍
2.聊游戏经历
3.聊人生
4.聊实习
5.向面试官提问
HR姐姐很好,因为是视频面,我在宿舍,室友在睡觉...被她看见了:“哎,你后边那个人是不是在睡觉...我刚才看见他动弹了一下...哈哈哈”。
【时间】2017.10.25
拿到Offer,所有流程结束。
【C/C++方面要准备的工作】
先说点别的:我主要学的C++方向,准确的说是PC开发,也就是C++前端。这个方向很难找工作,因为很多公司都投不了,比如今日头条、滴滴、美团、京东都投不了,他们不需要这个岗位。自从移动端火起来后,PC就已经是夕阳产业了,机会非常少。有人说C++不好找工作,以我的经验来看是的,C++最多的岗位是后台,也就是服务器开发,虽然大部分公司都会招,但假如你去面试,十个面试官八个是Java,你和面试官聊什么?通过了还可能被劝要不要转Java\PHP之类的。另外C++也确实不好学,因为在上学时,很多东西不知道该怎么学,或者说该学什么才能去找工作。
一、要看的书
《编程之法》,七月算法CEO的书,还是可以的,题目多,但讲解比较少
1.《C++ Primer》,面试必看,至少看一遍,除了语法部分要大部分看懂,重点看C++11的介绍
2.《Effective C++》,面试必看,是一本C++面试前的快速复习书,面试官也爱问这里边的问题
3.《深度探索C++模型》,面试必看
4.《STL源码剖析》,面试必看
5.《More Effective C++》,可以看一下,但不是必须
6.《C++编程思想》,可以看一下,但不是必须
7.《C和指针》、《C专家编程》、《C语言陷阱与缺陷》,可以看一下,但不是必须
以上是找C++方向都要看的书,不管是找服务器开发、游戏开发、PC开发都要看的。
接下来就是按方向分了,
A.服务器开发方向:《UNIX环境高级编程》、《UNIX网络编程卷一》、《UNIX网络编程卷二》、《Linux多线程服务端编程—使用muduo C++网络库》、《TCP/IP详解卷一》
B.游戏开发方向:这部分比较杂,《计算机图形学》必看,常用游戏算法也要会。如果是引擎方向,D3D和OpenGL要经常用,Windows编程;如果是客户端开发,Unity要会熟练用,最好有demo。
C.PC开发方向:这部分也很杂,我也不知道该怎么准确地去定义,我就说一下我看过的吧:《VC++深入详解》、《QT Creator快速入门》、《QT Creator与QT Quick开发实战》、用到其他技术:ffmpeg、OpenCV、OpenGL去看别人博客。
算法一定要看的书:
《剑指Offer》,必看不解释,代码最好都实现过一遍
《程序员面试代码最优解—左程云》,牛客网知名讲师,书里的代码都是Java版,都非常好
《编程之美》,偏理论,里边有些不好懂
其他方面最好要看的书:
《计算机网络:自顶向下方法》:最好看一下
《TCP/IP详解卷一》:有时间就看
《图解TCP/IP》:浅显易懂
《图解HTTP》:浅显易懂
《现代操作系统》:有时间就看
《Head First设计模式》:有时间就看
《深入理解计算机系统》:有时间就看
《程序员的自我修养》:有时间就看
个人认为重要程度:基础知识>算法>网络>>操作系统>数据库。前三个一定要重点看,操作系统和数据库知识够用就好。
二、校招准备的项目
A.服务器开发方向:HTTP Server、FTP Server、高并发聊天室等
B.游戏开发方向:游戏引擎、各种游戏demo等(卡牌、RPG、MMORPG、文字剧情型、FPS、休闲类)
C.PC开发方向:聊天室、note book、输入法、多媒体播放器、ERP、小型GUI引擎、小工具、插件等,尽情发挥自己想象。最好做的美观点,毕竟是前端当然这是校招准备的项目,做简单点能体现自己水平就行,和实际工作项目是不能比的,只要是自己认真做的,肯定和面试官是有的聊的。
三、可以体现优势的地方
1.基础扎实,这已经是不能叫优势的地方了,只要认真看过书,认真复习背过书,项目自己做,基本都可以达到这个水平。
2.阅读开源项目:比如muduo、libevent、Linux源码、OpenCV源码等
3.个人博客:平时多写点文章,最好有自己的开源项目,GitHub STAR数量
4.算法FLAG:不是ACM金牌一般做不到,大部分人在这方面无能为力
5.名企实习:很重要,不解释
【校招常识】
1.关于简历:一页纸就够了,1/3写个人信息和教育经历,1/3写项目,1/3写技术栈+奖项
2.简历最认可的奖项是ACM类(至少拿个铜),然后是名企比赛(天池大数据,百度之星,GCJ等),然后是电赛,最后是一个比较水的数学建模。其他比赛基本不认可
3.等级证书只要四六级就够了,有些大公司对四六级还没要求,最好有个四级吧。千万别把计算机二级写上去,否则你会被笑死
4.能体现优势的地方:第2条里的奖项,双985学历,名企实习,个人博客,优秀项目(访问量大、下载量高、star多)
5.关于笔试:笔试是个坑,能跳就跳,个别公司内推是免笔试的(如阿里)。有些时候笔试感觉非常好,编程AK,但还是没面试。我也和很多人讨论过这个问题,得到的答案如下:
一方面是看自己能力,一方面是看公司筛选标准。有的公司是严格按照笔试成绩排名筛选进面试的,有些公司是提前根据简历判断,如果简历优秀,笔试成绩不是太差也能进面试试。如何评估简历优秀呢?包括你的学历:是否双985?拿过ACM奖牌吗?是否有名企实习经历?项目是否和需求对口?如果以上什么都没有,那么就很困难了,如果不找内推你很可能面临简历被刷的情况;如果参加了笔试,需要比别人做的好很多才可能进面试。
6.面试\笔试完很久没消息就当默认被挂了吧,赶紧去找下家
7.如果面试时听到这些话:“你觉得自己还有什么优势没表现出来”、“我觉得你该适合去考研”,那人家多半是不想要你了
8.有些面试是一站式的,如果别人一天连续三面,而你只面了一两面,那多半不是挂了就是备胎;如果大部分人三面,而你是四五面,那么恭喜你,可能是SP
9.如果是HR现场面,最好早点去,Offer先到先得
10.口头Offer不靠谱,一定要拿到正式Offer再停止找工作,否则就一直投简历一直找工作,千万别停
【其他】
2018校招薪资爆炸的公司:今日头条、滴滴、大疆创新......直接秒杀BAT
2018校招最大的梗:建议去华为实习(微笑)
================================================================
以后想到什么再补充,先写这些