大家好,我是小贺。
考虑到最近校招已经开始了,最近会多分享一些校招秋招经验!
前段时间有位研二师弟经过自己的努力终于拿到了腾讯微信的实习 offer,跟我分享了他春招过程和实习感悟。
我看了感觉还是挺有意义的,特意整理出来跟大家分享一波!
本次分享主题:第⼀次实习面试感悟以及面试经历,分享⼀些踩坑的点。
面试感想
现在互联网大厂的面试主要分两个部分:八股文和算法。
八股文,我认为无非就是计算机专业基础课程,具体不细说,各种面经都有说,取胜关键在于对每个知识点要透彻,有自己的见解,不要为了面试而面试。
这样的好处是经得住问,能让面试官看到深度。有深度,喜欢钻研的话会得到面试官的青睐,也是以后工作中需要的。
举个例子:TCP 的三次握手,除了大家常说的三次报文的标识位信息、客户端和服务端状态码,还需要知道为什么要三次握手。
如果最后一次握手不成功会怎样,如果会重发报文的话是怎么样一个机制,以及最终无法建立连接,服务端会如何断开连接。
以及和第一次握手相关的 SYN 泛洪攻击导致什么结果,TCP 等待队列满了会如何处理后续 SYN 请求等等。
算法,除去思维能力因素,我认为就是见多识广。很多题的确是如果没有刷过就没有很好地解决方案。
所以平时有部分题是需要 coding 来练手感的,但更多的题即使没有时间刷,也可以看一下解题方案,拓宽自己的思路。
下面是师弟的面经。
面经
2021.3.3阿里电话面(阿里云流量产品事业部)
- vector 底层实现
- set 底层实现
- map、mutimap、unordered_map 底层实现
- C++ 多态的实现方式
- C++ 重载的方式(const)
- 流量控制
- 拥塞控制
2021.3.3蚂蚁金服电话面( oceanbase 分布式数据库团队)
- 引用和指针的区别
- 进程间通信的方式
- new/delete 和 melloc/free 的区别
- 死锁产生的场景
- 构造函数里 new 自己
- 算法题:寻找两个节点的公共祖先
2021.3.4蚂蚁金服视频面( oceanbase 分布式数据库团队)
- 数据库的特性
- 数据库的隔离级别
- 算法题:花园(二分)
2021.3.6阿里云电话面( PolarDb )
- 10w 个数求 3 个数的和的绝对值最小
- n 个小于 1000 w 的数(每个数只出现一次)进行排序
- 两个字符串的公共子序列
- 求两个链表的公共节点
- struct 的对齐
小贺bb:看来阿里云面试喜欢注重底层源码,电话面直接就开始问各种容器的底层实现。
如果没有深入了解过,这谁 hole 住,但不用慌!
如果对 C++ STL 相关源码不太了解的话,小贺为你量身准备了 STL 源码剖析系列,助你起飞!
2021.3.5百度一面(搜索架构部)
- 项目
- C++11的特性有哪些
- 智能指针如何实现的
- 右值引用
- 指针和引用的区别,什么时候用引用不用指针
- C++ 的默认函数有哪些
- 什么时候生成这些默认函数
- mysql 的引擎有哪些
- 索引的底层实现是什么
- B+ 树的特点
- 内联函数是什么,内联函数和宏定义的区别是什么
- mysql 随机查询和排序的优化
- 算法题:从根节点到叶子结点的路径和为m的路径
2021.3.7百度二面(搜索架构部)
- 哈希冲突的解决办法
- 一致性哈希
- 内存置换算法
- 线程通信的方式
- 多态,重载,重写
- TCP 和 UDP 的区别
- 数据结构是用来解决什么问题的
- 算法题:aaabbccccddd->a3b2c4d3
2021.3.8百度一面(智能办公平台部)
- TCP 和 UDP 的区别
- C++11 的新特性
- 智能指针 delete 的是指针还是指针数组
- Lamada 表达式
- Reactor 和 Proactor的区别
- Epoll 的使用过程
- 删除链表中的节点(释放内存)(添加头节点)
2021.3.10百度二面(智能办公平台部)
- 介绍项目点播
- 手写智能指针
- Reactor 和 Proactor的区别
- sql 建表,查询数据库有多少表
- 命令模式
- 微服务的优点
- ET 模式的优点
- Redis 的数据类型
- 其他非关系型数据库
小贺bb: 百度的搜索架构部属于百度搜索的核心部门了,想当年,小贺面试百度的也是这个部门。一面就手撕四五道算法题!
2021 .3.13奇安信一面和二面
- HTTP 相关的安全问题
- Cookie 和 session 的区别
- 路由选择算法
- 一亿个浮点数排序
- 基数排序的过程
- 建表的 sql 语句
- 数据库的索引的实现场景
- Linux 查询文件中字符串的命令
- Linux 查询进程的命令
- Ngnix 底层
- Redis的命令设置传输五个数
- Epoll 的实现
- TCP 和 UDP 的区别
- 模板为了解决什么问题
- C 里面的函数:int 转字符串
- 单例模式场景
- 数组的内存模型
- 进程间通信的方式
- 本地套接字和远程套接字通信的区别
- 输入一个 URL 过程
- 作品项目遇到的问题
- 重载和重写应用的场景
- 线程池是解决什么问题的
- Linux 的文件系统的位运算
- 函数指针怎么用
小贺bb:奇安信的前身为 360 企业安全集团,2019 年更名为奇安信集团,主要是做互联网安全相关的。
2021.03.17腾讯 一面二面
- map、unordermap 区别,适用场景
- vector 的扩容机制,扩容以后原来的迭代器是否有效
- Lamda 表达式的传入所有的变量
- vector 的 push_back 和 emplace_back 的区别
- 手写 LRU
- 手写 String
- TCP 的四次挥手
- Reactor 模式如何解决 IO 密集型问题的
- Epoll的机制
- 多态的底层
- Linux 下如何查看 CPU 使用过多的情况(top 、top -H -P 进程ID、jstack -l 进程ID |grep 线程ID -A10 )
2021.03.19腾讯 三面
- Epoll 的 ET 模式需要注意什么,如何确保缓冲区的数据被读完
- Reactor 模式是什么
- 协程是什么,和线程的区别
- 线程调用了 exit(0)后发生了什么
- 线程同步的方式除了加锁还有什么
- 信号量和 mutex 的区别
- 进程通信的方式
- 算法题:寻找两个子节点的最近公共父节点
- C++ 新特性中的哪里用到了协程
- IO 多路复用
- 线程变量
- 线程安全如何实现
看得出来,腾讯的面试比较重视基础,计算机基础真的要一定要重视,基础不牢,地动山摇。
2021.03.18字节 边缘计算部门一面
- Http 请求的过程
- 乐观锁和悲观锁的区别
- 算法:找到无序数组中第一个缺失的自然数
- 数据库索引的分页如何实现
2021.03.22 字节DATA 部门二面
- 手写智能指针、指针给了智能指针原指针还能用吗
- 命令模式解决了什么问题,和策略模式的区别
- 当前主流 Linux 系统的 CPU 调度的时间复杂度
- 创建线程的方式,创建线程是否可以传入调度算法
- new delete、malloc free 类型转换
- C++11 新特性
- TCP 保证可靠性的机制
2021.03.22 字节DATA 部门三面
- 算法:大数加减法
- TCP 如何实现零次握手
- TCP 三次握手过程
最后师弟选了腾讯微信部门的后端实习,祝福他!
也希望这些分享对你有参考作用。
我是小贺,我们下期再见。
·················END·················
你好,我是 herongwei,一个普通的宇宙中心五道口程序小哥,热爱编程,热爱生活,热爱分享,在平凡的人生中追求一点不平凡