研二师弟拿下微信 offer
大家好,我是公子龙。
考虑到最近校招已经开始了,最近会多分享一些校招秋招经验!
前段时间有位研二师弟经过自己的努力终于拿到了腾讯微信的实习 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 的数据类型 其他非关系型数据库
2021 .3.13奇安信一面和二面
HTTP 相关的安全问题 Cookie 和 session 的区别 路由选择算法 一亿个浮点数排序 基数排序的过程 建表的 sql 语句 数据库的索引的实现场景 Linux 查询文件中字符串的命令 Linux 查询进程的命令 Ngnix 底层 Redis的命令设置传输五个数 Epoll 的实现 TCP 和 UDP 的区别 模板为了解决什么问题 C 里面的函数:int 转字符串 单例模式场景 数组的内存模型 进程间通信的方式 本地套接字和远程套接字通信的区别 输入一个 URL 过程 作品项目遇到的问题 重载和重写应用的场景 线程池是解决什么问题的 Linux 的文件系统的位运算 函数指针怎么用
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 三次握手过程
最后师弟选了腾讯微信部门的后端实习,祝福他!
也希望这些分享对你有参考作用。
我们下期再见!