前几天,有读者给我发信息,让我帮他看一下offer的选择:
字节、腾讯天美、阿里云,随便一个都是羡煞旁人的offer,这家伙一下拿了三个,我都开始酸了起来。
于是我让他总结一下面试过程中考察的知识点,给大家分享一下,这不秋招快到了,给大家复习提供一些参考。这里非常感谢这位反斜杠号同学(没错,他的微信名就是反斜杠号\)的分享。
面试经历
拿到offer:
字节跳动今日头条后端
腾讯天美服务器后台开发
阿里阿里云C++研发
Momenta Deep Learning
大疆自动驾驶 测试开发
被调剂:
微软苏州SDE
挂掉:
网易雷火笔试
知识点总结
计算机网络
TCP相较于UDP的优点,为什么有这些优点
设计一个FPS游戏联网服务器架构(分布式,同步方式,包的选择传输,主从模式容灾)
TCP头部组成,分别是干什么的
HTTP1.0、2.0、3.0的区别是什么
HTTP和HTTPS的区别
HTTPS的加密过程
操作系统
操作系统一页的大小是多少
为什么一页的大小是这么多
类似内存页大小这些计算机中的常量,设计的时候考虑哪些因素
进程间通信方式,详细介绍一下
对linux有多了解
C++
虚函数的实现方式
static关键字的多种用法
智能指针的了解和实现(boost或者C++标准库,我答的C11标准库)
多线程库
STL底层实现
map为什么用红黑树不是B+树
constructor和destructor是否使用virtual,为什么
四大cast转换
struct和class的区别
C++的编译链接过程和实现原理
inline function
inline和define的比较
函数默认值的实现
Name Mangling
数据库
MySQL为什么用B+树做索引而不是红黑树
MySQL的引擎,为什么要有这两种,主要有什么区别
索引的实现原理
事务ACID和隔离等级
算法与数据结构
(可能是因为我是搞ACM的,问的不是特别多
大部分是思维题,难度不高,涉及到几个很基础的二叉树
设计redo/undo功能使用什么数据结构
LIS,普通三维dp等基础的dp
基础图论算法,最短路和最小生成树
项目经验
大一写的一个Unity3D的FPS游戏
一个CV+AI的项目
聊几句
总的看来,在校园招聘中,各个大厂都是非常看重大家的基础知识掌握情况的。
像计网、操作系统、数据结构与算法、数据库,这都是必考的东西,这几门课程建议要全面复习一遍。
除此之外,不同语言方向的同学,对各自所学的语言方面的知识点也要进行全面的梳理,像文中的同学是C++方向的,对C++方面的基础细节考察的还是非常细的。
很多同学戏称面试题是背诵八股文,不过我不建议大家像高中那样死记硬背这些知识点,我的建议是多动手,因为我的经验是只有自己动手去验证过的知识点,自己在面试遇到的时候就会立刻想起来,回答的时候有理有据,更加自信!
像计算机网络方面的知识点,就多抓包分析,在抓包软件下面学习数据包,理解协议的交互流程比看书更深刻有效。
像操作系统、C++相关的知识点,就写一些代码去验证,什么虚函数实现原理,inline函数原理,写个代码在调试器下看一下就知道了,这些都是不用去死记硬背的东西。
像算法与数据结构相关的知识点,就多刷一些题,比如牛客网、LeetCode都去刷一刷,刷的多了就摸准了套路,一看到题目就知道要考察什么了,专业面试的时候感觉自然就来了。
除了复习和刷题,还有个很重要的环节就是去看面经,多看看别人的经验,查漏补缺,看得多了,心里也就不虚了。
复习+编程+刷题+刷面经=Offer
最后问一句,这位同学遇到的题目,你能答出百分之多少?