双非本科的秋招之路
写下我的双非本科的秋招之路。
在秋招过程中拿到以下几个offer
美团sp后台开发、网易互娱 游戏研发工程师、360服务器开发、深信服 c++开发、多益网络 游戏研发工程师
在准备期间也读了一些书籍
细读的有《TCP/IP网络编程》,《Linux高性能服务器编程》,《后台开发》,《图解HTTP》,《图解TCP/IP》,《剑指offer》。
泛读的有《STL源码剖析》,《深度探索c++对象模型》,《effective c++》,《深入理解计算机系统》,《程序员代码面试指南》,《TCP/IP详解卷1》,《大话设计模式》,《计算机网络》。
在面试过程中,对于一个知识点面试官可能会一直追问你,直到你不会为止,所以这就要看你对一个知识点的了解深度了。如果某个知识你知道怎么去使用它但不熟悉它的原理,可以说你对这个知识一窍不通。比如c++种常见的stl库中的vector。它是是一个可变数组。但它实际是用一个固定的数组储存的,并且用size和capacity来计数,size表示储存元素的大小,capacity表示数组的大小,当size>=capacity时会重新申请内存并释放旧的内存,拷贝是通过浅拷贝实现的,以1.5-2倍的大小扩容,而为什么以这个倍数也可以通过数学推导算出来...详细的可以具体百度。原理很重要,原理很重要,原理很重要。推荐书籍《stl源码剖析》
C++主要问的是基本的语法操作,有时会考几个字符串的函数,比如内存拷贝函数,写这个需要注意内存覆盖问题。虚函数是问的最多的,它的基本原理需要搞懂,推荐书籍《深度探索c++对象模型》。内存泄漏怎么来的,怎么解决;STL中的各种库,map与unordered_map的区别;vector和list的区别;内存池怎么实现;深拷贝浅拷贝等等;
操作系统:进程与线程、IO多路复用、内存管理、Linux基本命令。阻塞与非阻塞,异步与同步;ET和LT的区别;进程和线程的通信方式;查看系统各种属性的命令,出现频率最高的前十个IP的命令等等;
计算机网络:HTTP、HTTPS、TCP、UDP、IP、arp、rarp等常见协议,应用层、传输层、网络层这三层是必须要掌握的。TCP/UDP是必问的,为什么会有TIME_WAIT状态,为什么不是两次握手,为什么需要四次释放,什么是半连接状态;UDP怎么保证可靠;session和cookies的区别。在浏览器中输入URL后的流程等等。
海量数据处理,对于海量数据的处理会经常问到,这些在Skill-Tree项目里都有介绍。
数据结构和算法,这个对于ACMer来说,复习起来就轻松些,但需要注意一些细节问题,问的时候往往会问一些细节问题。LRU缓存设计建议写下(LeetCode146),问到三次了。其它的话多刷刷剑指offer,然后把数据结构复习下。
下面写下一些面试后写的面经,记得不是很详细,所以会缺很多。
美团点评:
美团点评一面:
编程题:
[4,5,6,7,0,1,2,3]...之类的数组查找一个target值
多线程和多进程
TCP/UDP
哪些场景使用TCP
内存管理,虚拟内存,为什么虚拟内存开2倍
Linux常用命令
为什么会查看cpu的信息,主要查看哪些
拿了哪些offer
建议换java吗
算法论文
二面:
忘了
三面:
ET和LT
阻塞,非阻塞,异步,同步,使用场景
编程题问题忘了,但记得是用线段树写的。
网易互娱:
一面:
数组al[0,mid-1]和al[mid,num-1]都分别是有序的,将其merge成有序数组al[0,num-1],要求空间O(1),时间O(N)。
N个人都有一个权重,随机选取m个人。怎么取?
二面:
上来就问学过图形学吗?没有
C++变成可执行文件的过程
New,malloc,delete,free的
堆和栈(然后往外扩展问了二十多分钟,怎么设计一个效率高的内存分配)
10万个ip段,每个ip段对应一个城市,给定一个ip,快速找到对应的城市
一副扑克牌,随机打乱它,可以用rand()函数
360:
一面:
构造函数能否是虚函数,为什么
拷贝构造函数和赋值函数。拷贝构造函数有什么缺点
空类的sizeof大小。
类A空,类B继承A,B中有一个虚函数,sizeof大小
类A空,类B中有一个虚函数和一个类A对象,sizeof大小
函数重载。如果返回值不同或者参数位置不同是否是重载
虚函数是否可以是内联函数
函数指针和泛函数
局部变量,全局变量,静态局部变量和静态全局变量
进程的三种状态,就绪有那些
Cpu调度方式
Vector的扩容,如果数据量很多扩容会怎么样,怎么设计更好的
map和unordered_map的区别
TIME_WAIT讲一下,为什么要这个
TCP三次握手建立完后客户端突然断网后的情况
流量控制讲一下
如果接收方数据处理不过来会发生说明情况
ping有没有端口
二面:
父进程fork一个子进程,子进程申请4k的内存,它们的内存分布
写时复制讲一下
多进程和多线程的区别
海量数据每行一个IP,求出现次数最多的5个ip
编程题:
中序遍历
单链表中的中间节点
深信服:
C++一面:
编程题:
每次走一楼或者两楼,到n楼有几种方法。
用define写一个结构体类型的偏移地址
常见的基础问题
C++二面:
问了笔试中的编程题
写了一个dfs问题。
问了项目
算法一面:
KMP,AC自动机。
匹配允许错一个怎么匹配
算法二面:
忘了
算法三面:
一维坐标n个点中选m个点,使的相邻两个点的最小距离最大化
n*m的方格,当前位置种了数,上下左右就不能种树
10万以内的素数,选取某个子集,子集之和也是素数的有多少种
长方形,判断某个点和长方形的位置
多益网络:
自我介绍
有没有项目经验
竞赛中印象最深的是什么题目
编译性和解释性语言的区别
桶排序和跳跃表排序
哈希冲突
不用递归实现斐波拉系数
对象的生命周期
淘宝购物栏的推荐怎么实现
游戏的排行榜怎么实现(如果每一个用户都能看到自己的排名,当修改时又怎么实现。如果显示的排名很少有怎么实现)
操作系统中编译和链接是什么
操作系统中系统调用和用户调用
数据库了解吗(不了解)
空闲时间的安排
如何看待互联网加班
如果已经回家了的话出现的bug怎么办
还投了哪些公司
当前的求职情况
十分钟编程题:有一个产生n个数的随机函数;请写一个函数ChooseKey,在给定的权重表中,根据"权重"随机抽取一个"字符"并返回