还记得去年这个时候自己正在疯狂找实习,而牛客网上丰富的面经贴给了我很大的帮助。后面经过提前批和秋招,也比较顺利地拿到一些offer,感谢牛客!如今毕设告一段落,趁着这段时间开一贴,希望能给非科班自学C++方向的同学一点帮助。
自身情况
楼主985非科班硕士,通信方向,教研室偏硬件,但是楼主一心想去互联网,所以研一暑假开始自学C++,并往后端方向准备。提前批拿到了字节、百度、美团、华为等(可惜没有at),最后去了华为。按照时间先后顺序,大致说一下整个找工作进度,20年1月之前,拉通学习了C++基础,操作系统、数据结构与算法、计算机网络、Linux网络编程,期间还看了实验室的交换机软件项目,20年3月之前又看了C++服务器项目、设计模式、 mysql数据库,STL。然后3月开启提前批,开始花更多的精力刷网上的面经,整理自己的笔记,7月开始提前批,到9月找工作就基本结束,整个过程一直刷力扣的算法题,包括剑指offer、各个公司的高频算法题等。
面试题
楼主的笔记有点繁杂,再加上时间有点久了,所以仅贴春招+秋招楼主每次面试完的一些记录吧。
美团:
一面:
1、innoDB结构
2、如何查询
3、B树、B+树的区别
4、reactor模型是什么?
如果只是事件分发和事件处理,和普通的又有什么区别呢?
5、进程、线程的区别
6、linux如何查看已用端口号
7、线程在内存中的大小,2M?
8、进程的结构?
9、用户态的线程和内核线程
10、epoll、select、poll
11、流控和拥塞控制
12、服务器端套接字实现
13、服务器如何提高吞吐量
14、你对自己的项目做过测试嘛?时延和传输速率是多少?
15、linux中AWK
16、wireshark抓包怎么看TCP超时
17、线程间通信
18、为什么使用线程池
19、写一个快排
2、如何查询
3、B树、B+树的区别
4、reactor模型是什么?
如果只是事件分发和事件处理,和普通的又有什么区别呢?
5、进程、线程的区别
6、linux如何查看已用端口号
7、线程在内存中的大小,2M?
8、进程的结构?
9、用户态的线程和内核线程
10、epoll、select、poll
11、流控和拥塞控制
12、服务器端套接字实现
13、服务器如何提高吞吐量
14、你对自己的项目做过测试嘛?时延和传输速率是多少?
15、linux中AWK
16、wireshark抓包怎么看TCP超时
17、线程间通信
18、为什么使用线程池
19、写一个快排
二面:
1、意向地在哪
2、将两个有序链表合并为一个有序链表
3、讲项目
4、reactor模型是什么
5、项目中为什么设置4个线程
2、将两个有序链表合并为一个有序链表
3、讲项目
4、reactor模型是什么
5、项目中为什么设置4个线程
字节:
春招:
1、写了一个观察者模式2、链表反转
3、字符串不重复最长子串长度
4、单例模式,一个加分问题是,双检查锁会出现什么问题?
5、reactor模式的应用场景
6、查看进程内存占有率用什么命令?如何查看指定进程?如何查看指定文件夹的大小?
top看占有率(动态,可以看线程),进程加在后面参数中
直接:ps auxw --sort=%cpu | grep WebServer(静态看进程信息)
https://blog.csdn.net/m0_37615398/article/details/85717680关于文件磁盘大小的命令行查询
7、查看端口占有情况,其中包含端口所在进程PID,可用于后续top查看指定进程信息(用ps更专业)
8、https用的非对称加密还是对称加密?
9、HTTP/2.0特征
10、contend-type
11、挥手的时候可以接受发送数据吗
TCP协议中的三次握手和四次挥手(关闭连接时, 当收到对方的FIN报文时, 仅仅表示对方不在发送数据了, 但是还能接收数据, 己方也未必全部数据都发送对方了。相当于一开始还没接上话不要紧,后来接上话以后得让人把话讲完)
12、服务器fd有数量限制吗?
13、linux如何限制进程CPU占比?
14、mysql四种隔离级别
15、innodb特点
16、注意CPU资源与内存资源
17、innodb通过什么实现事务
提前提:
编程题:
1、LRU 146. LRU缓存机制
2、二叉树转双向链表 剑指 Offer 36. 二叉搜索树与双向链表
3、字符串转整数 剑指 Offer 67. 把字符串转换成整数
4、翻转有序数组找k值下标(最小时间复杂度) 33. 搜索旋转排序数组
基础题:
1、float是如何存储的,补码反码相关问题
2、内联函数可以跨文件使用吗
3、进程就绪队列是如何安排的,cpu如何分配时间片?
4、进程优先级如何实现?
5、主从线程的通信如何实现?
6、tcp如何保证可靠性连接?
7、页面置换算法?
8、const/define
9、哈希表的底层是如何存储的?如何扩容?
10、跳表
11、构造函数可以是虚函数吗?
12、各种排序的时间复杂度,最坏最好平均,稳定性
13、stl中unordered_map是如何解决hash冲突的?
14、用B+树为什么不用红黑树
15、优化二叉树数据结构,快速找到二叉树中序遍历的第k个节点
16、TIME_WAIT的作用
一步步分析为什么B+树 适合作为索引的结构
百度:
1、LRU 146. LRU缓存机制
2、二叉树转双向链表 剑指 Offer 36. 二叉搜索树与双向链表
3、字符串转整数 剑指 Offer 67. 把字符串转换成整数
4、翻转有序数组找k值下标(最小时间复杂度) 33. 搜索旋转排序数组
基础题:
1、float是如何存储的,补码反码相关问题
2、内联函数可以跨文件使用吗
3、进程就绪队列是如何安排的,cpu如何分配时间片?
4、进程优先级如何实现?
5、主从线程的通信如何实现?
6、tcp如何保证可靠性连接?
7、页面置换算法?
8、const/define
9、哈希表的底层是如何存储的?如何扩容?
10、跳表
11、构造函数可以是虚函数吗?
12、各种排序的时间复杂度,最坏最好平均,稳定性
13、stl中unordered_map是如何解决hash冲突的?
14、用B+树为什么不用红黑树
15、优化二叉树数据结构,快速找到二叉树中序遍历的第k个节点
16、TIME_WAIT的作用
一步步分析为什么B+树 适合作为索引的结构
腾讯:
一面:
1、session与cookie区别。session一些具体的知识。关于分布式服务器session同步的问题
2、用过什么linux命令
3、send数据之后返回0什么情况,send("hello")返回5,接收端接收到了数据吗?
4、tcp快重传
5、拥塞控制和流量控制解决什么问题?
6、关于负载均衡,ip-hash会出现什么问题,如何解决?
7、介绍下muduo库,如果解析json,服务器应该怎么做?
8、算法:写一个翻转链表,需要建链表,打印结果
9、40亿个整数,怎么去重,输出去重的数字。用bitmao需要的内存大小
10、算法:实现一个bitmap
11、linux查看磁盘信息的命令是什么?
12、unordered_map与map区别及应用场景
13、为什么做后台开发?
14、说一下使用过的开源软件
二面:
1、数据库连接池
2、服务器故障会出现什么问题?故障分为网线断和服务器宕机,这两种情况有啥不同
3、怎么判断二叉树相等
4、最长连续子序列
5、为什么要用多线程,用多进程如何?
6、vector、unordered_map
7、mysql容灾、主从复制、读写分离
8、http2.0特性,http3.0
9、c++11新特性
1、session与cookie区别。session一些具体的知识。关于分布式服务器session同步的问题
2、用过什么linux命令
3、send数据之后返回0什么情况,send("hello")返回5,接收端接收到了数据吗?
4、tcp快重传
5、拥塞控制和流量控制解决什么问题?
6、关于负载均衡,ip-hash会出现什么问题,如何解决?
7、介绍下muduo库,如果解析json,服务器应该怎么做?
8、算法:写一个翻转链表,需要建链表,打印结果
9、40亿个整数,怎么去重,输出去重的数字。用bitmao需要的内存大小
10、算法:实现一个bitmap
11、linux查看磁盘信息的命令是什么?
12、unordered_map与map区别及应用场景
13、为什么做后台开发?
14、说一下使用过的开源软件
二面:
1、数据库连接池
2、服务器故障会出现什么问题?故障分为网线断和服务器宕机,这两种情况有啥不同
3、怎么判断二叉树相等
4、最长连续子序列
5、为什么要用多线程,用多进程如何?
6、vector、unordered_map
7、mysql容灾、主从复制、读写分离
8、http2.0特性,http3.0
9、c++11新特性
春招:
1、百度搜索过程,如何返回页面
2、从十几亿网页链接获取最活跃1000个,代码实现 秒杀99%的海量数据处理面试题
3、判断是否有环,代码实现
4、muduo相对于其他网络库的优势
5、软连接、硬连接
6、如何限制服务器的cpu占有率
7、查看8000-9000端口使用情况
8、问了下epoll
2、从十几亿网页链接获取最活跃1000个,代码实现 秒杀99%的海量数据处理面试题
3、判断是否有环,代码实现
4、muduo相对于其他网络库的优势
5、软连接、硬连接
6、如何限制服务器的cpu占有率
7、查看8000-9000端口使用情况
8、问了下epoll
1、打印从叶子节点到头节点路径值和为sum
2、海量数据求中位数
3、c++异常处理
4、unordered_map如何处理hash冲突
2、海量数据求中位数
3、c++异常处理
4、unordered_map如何处理hash冲突
提前批:
1、什么是IO多路复用?
2、异步怎么实现?
3、B、B+树各自优缺点?
4、平衡树左旋、右旋
5、什么是线程?
6、消息队列,MQ什么的了解吗?
算法:判断有无环及找到环的入口
1、什么是IO多路复用?
2、异步怎么实现?
3、B、B+树各自优缺点?
4、平衡树左旋、右旋
5、什么是线程?
6、消息队列,MQ什么的了解吗?
算法:判断有无环及找到环的入口
华为:
京东:
春招:
1、打印从叶子节点到头节点路径值和为sum
2、海量数据求中位数
3、c++异常处理
4、unordered_map如何处理hash冲突
提前批:
2、海量数据求中位数
3、c++异常处理
4、unordered_map如何处理hash冲突
提前批:
1、交换机项目中,如果可以作为主交换机节点晚开机,会发生什么?
2、四种强转类型
3、构造函数有哪些
4、8种关联容器
5、线程同步的方式
2、四种强转类型
3、构造函数有哪些
4、8种关联容器
5、线程同步的方式
1、epoll中的红黑树的结构有什么作用?
2、epoll写事件如何触发?
3、epoll如果一直有事件触发,怎么读取?像是问EPOLLHUP?
4、拥塞控制、流量控制
5、epoll就绪队列满了怎么办? 直接拒绝
6、a.c b.h c.c a,c如何共用全局变量
算法:二叉树中给定节点的距离
2、epoll写事件如何触发?
3、epoll如果一直有事件触发,怎么读取?像是问EPOLLHUP?
4、拥塞控制、流量控制
5、epoll就绪队列满了怎么办? 直接拒绝
6、a.c b.h c.c a,c如何共用全局变量
算法:二叉树中给定节点的距离
阿里:
1、如果头文件定义了一个static变量,两个cpp文件去访问时,会出现什么错误,在同一个线程中。
2、平衡二叉树插入、删除、查找的时间复杂度:都是O(logn)
3、什么时候会出现内存泄漏
4、sizeof(class)
5、在10001~10100之间找到缺失的两个数字
6、比较不同的锁
3、什么时候会出现内存泄漏
4、sizeof(class)
5、在10001~10100之间找到缺失的两个数字
6、比较不同的锁
春招:
1、http与https
2、协程
3、浏览器访问服务器的资源如何实现
4、项目定时器如何实现
5、动态与静态编链
6、TCP如何保证有序
7、虚函数实现细节
1、介绍了下项目
2、虚函数原理
秋招:
2、协程
3、浏览器访问服务器的资源如何实现
4、项目定时器如何实现
5、动态与静态编链
6、TCP如何保证有序
7、虚函数实现细节
1、介绍了下项目
2、虚函数原理
秋招:
1、网络五层模型
2、讲讲epoll
3、tcp连接步骤
4、static关键字作用
5、linux中用过的命令,网络命令
6、排序算法的性能指标,介绍归并排序
7、数据库四大特性
8、c与c++区别,介绍面向对象特性
跟谁学:
2、讲讲epoll
3、tcp连接步骤
4、static关键字作用
5、linux中用过的命令,网络命令
6、排序算法的性能指标,介绍归并排序
7、数据库四大特性
8、c与c++区别,介绍面向对象特性
跟谁学:
一面:
1、工厂方法的目的是什么,为什么不直接new一个?说说观察者模式。
2、关于论文的问题
3、算法:k个节点翻转链表
二面:
1、动态库是如何加载的?每一个需要调用的程序都要拷贝库到内存吗?
2、压测情况,服务器性能优化
3、你最大的弱点或者缺陷是什么?
三面
1、说单例的实现
2、优点、缺点,及其事例
3、对事业成功的一些想法
1、浏览器输入一个URL会发生什么
2、HTTPS是什么,其原理?
3、客户端如何验证证书的合法性? 根证书验证
4、TCP、UDP区别,应用场景
5、介绍主键、外键、索引
6、两张表,一张表的主键要作为另一张表的外键,需要检查什么?问题没明白
外键至少要是unique约束?
7、联合索引是什么原理?
算法:由数组创建链表、计算链表第二大节点值、计算第m大节点值的方法及解释其时间复杂度
二面:
1、页表的问题
2、递归的时间复杂度、空间复杂度如何计算
3、epoll为什么用红黑叔不用hash的结构呢
1、工厂方法的目的是什么,为什么不直接new一个?说说观察者模式。
2、关于论文的问题
3、算法:k个节点翻转链表
二面:
1、动态库是如何加载的?每一个需要调用的程序都要拷贝库到内存吗?
2、压测情况,服务器性能优化
3、你最大的弱点或者缺陷是什么?
三面
1、说单例的实现
2、优点、缺点,及其事例
3、对事业成功的一些想法
虾皮:
一面:1、浏览器输入一个URL会发生什么
2、HTTPS是什么,其原理?
3、客户端如何验证证书的合法性? 根证书验证
4、TCP、UDP区别,应用场景
5、介绍主键、外键、索引
6、两张表,一张表的主键要作为另一张表的外键,需要检查什么?问题没明白
外键至少要是unique约束?
7、联合索引是什么原理?
算法:由数组创建链表、计算链表第二大节点值、计算第m大节点值的方法及解释其时间复杂度
二面:
1、页表的问题
2、递归的时间复杂度、空间复杂度如何计算
3、epoll为什么用红黑叔不用hash的结构呢
网易云:
一面:
1、关于项目,遇到的问题,收获了什么
2、手写LRU
3、纯虚函数,虚函数,多态
4、智能指针
二面:
1、关于项目,遇到的问题,收获了什么
2、手写LRU
3、纯虚函数,虚函数,多态
4、智能指针
二面:
1、对工厂模式的理解
2、关于析构函数要为虚函数的原理
3、互斥锁的原理
算法:判断字符串整型是否合法
2、关于析构函数要为虚函数的原理
3、互斥锁的原理
算法:判断字符串整型是否合法
拼多多:
一面:
1、B数与B+树
2、全双工、半双工、单工模式
3、如何保证对unordered_map线程安全的访问
4、说一下TCP
5、关系型数据库与非关系型数据库
6、说一下哈希表
7、算法:
二叉树给定两节点的距离,只遍历一遍树
二面:
1、一致性hash
2、hash冲突时不同解决方法的优劣势
3、https关于证书的问题
4、项目的很多细节问题
算法:序列中有点元素出现一次,有的元素出现两次,返回出现两次的元素,O(n)时间复杂度,O(1)空间复杂度。1<=ai<=n,如{1,2,3,7,4,8,2,3},返回{2,3}。
442. 数组中重复的数据
招银:
1、B数与B+树
2、全双工、半双工、单工模式
3、如何保证对unordered_map线程安全的访问
4、说一下TCP
5、关系型数据库与非关系型数据库
6、说一下哈希表
7、算法:
二叉树给定两节点的距离,只遍历一遍树
二面:
1、一致性hash
2、hash冲突时不同解决方法的优劣势
3、https关于证书的问题
4、项目的很多细节问题
算法:序列中有点元素出现一次,有的元素出现两次,返回出现两次的元素,O(n)时间复杂度,O(1)空间复杂度。1<=ai<=n,如{1,2,3,7,4,8,2,3},返回{2,3}。
442. 数组中重复的数据
招银:
一面:
1、valgrind,内存泄漏如何追踪
2、智能指针
3、交换机项目----最短路径、lsr帧、运行环境、怎么加载程序
5、new\malloc
6、deque实现原理(stack\queue)
stack\queue都是通过deque实现的
7、c与c++区别
8、c可以实现类的功能吗?
9、设计模式会什么,问了单例
10、数据库用过吗
11、拷贝构造函数何时调用
算法:IPV4合法性判断
遇到遍历字符串,取其中某段子字符串首先考虑用双指针
二面
1、项目的优化做了什么,压测的情况,与同样别人做的项目的优势有哪些?
算法:单例模式
关于实习
对于要不要去实习这个问题,楼主当时很是纠结,特别是拿到一家离学校特别近的大厂实习offer,说不心动是不可能的,但是最后因为种种原因还是没有去。当时是考虑到自己的基础并不扎实,实习可能影响复习从而错过提前批,再加上导师这边很难放人(主要),现在看来,对于楼主自己来说,当时没去实习或许是对的。关于要不要实习,可以根据自身情况决定,包括自己的基础、实习offer的含金量,如果选择实习,就要做好转正+提前批秋招两手准备,肯定会幸苦一点,如果放弃实习,就全力准备提前批秋招吧。
1、valgrind,内存泄漏如何追踪
2、智能指针
3、交换机项目----最短路径、lsr帧、运行环境、怎么加载程序
5、new\malloc
6、deque实现原理(stack\queue)
stack\queue都是通过deque实现的
7、c与c++区别
8、c可以实现类的功能吗?
9、设计模式会什么,问了单例
10、数据库用过吗
11、拷贝构造函数何时调用
算法:IPV4合法性判断
遇到遍历字符串,取其中某段子字符串首先考虑用双指针
二面
1、项目的优化做了什么,压测的情况,与同样别人做的项目的优势有哪些?
算法:单例模式
关于实习
对于要不要去实习这个问题,楼主当时很是纠结,特别是拿到一家离学校特别近的大厂实习offer,说不心动是不可能的,但是最后因为种种原因还是没有去。当时是考虑到自己的基础并不扎实,实习可能影响复习从而错过提前批,再加上导师这边很难放人(主要),现在看来,对于楼主自己来说,当时没去实习或许是对的。关于要不要实习,可以根据自身情况决定,包括自己的基础、实习offer的含金量,如果选择实习,就要做好转正+提前批秋招两手准备,肯定会幸苦一点,如果放弃实习,就全力准备提前批秋招吧。
关于算法
楼主的算法题刷得并不多,只在力扣上刷了260道左右。楼主觉得算法题在精不在多,一定要有针对性,比如剑指offer、各个公司的热门题都是一定要刷的,而且还要能不忘。当然,如果时间充足算法题越多越好。
以上肯定会有不全面的地方,仅供参考。如果有其他的问题可以留言,楼主尽量回复。
最后祝大家都能拿到理想的offer,加油啊!!
全部评论
(8) 回帖