【25暑期总结】面经/面试知识点梳理&腾讯OC
这段时间高强度面试,腾讯、字节、阿里和快手总共十几轮,最终幸运地拿下了腾讯的 Offer,今天得空整理一下面试中出现的知识点(拿 AI 总结了下,要点基本是全的)
一、技术类问题
(一)数据结构与算法
- 二叉树相关:如何用递归和迭代求二叉树的最大深度,对应的时间复杂度和空间复杂度是多少?
- 字符串处理:给定一个字符串,输出所有合法的 IP 地址;求最长非重复子串
- 其他:四点构成正方形的边界条件判断;
个节点的二叉树总共有多少种;在
范围内的
个数,统计每个数出现的频次(要求时间复杂度
,空间复杂度
)
(二)编程语言
- C++:
string
底层实现,了解短字符串优化吗;设计一个string
模板类的思路;sizeof
字符串大小;是否了解span
;智能指针相关知识;写代码实现类型转换操作(如子类转父类)及使用频率;如何将头文件拆分并使用g++
命令行编译运行;几种 cast 的区别;Debug 模式和 Release 模式的区别,Release 的优化措施 - C 语言:static 关键字的作用
(三)操作系统
- 进程,线程和协程的区别
- 系统调用的概念及实现方式(如
mmap
) - XV6 的进程调度类型,能否自定义按优先级进行调度
- 进程间互相交互的方式,进程间通信的方式
- 系统调用相关机制,是否所有系统调用都使用相同的中断,系统调用表包含的内容
- 触发系统调用的中断与其他中断(如定时器中断、键盘鼠标中断)的区别,系统中的中断向量表
- 缺页中断的原理,页表大小
(四)计算机网络
- HTTP 协议通信原理,HTTP/2 相比 HTTP/1 的优势
- TCP 和 UDP 的区别,UDP 的特点,粘包拆包问题
- 网络劫持的方式(如中间人攻击、DNS 劫持)
- HTTPS 的安全传输机制
- 网络编程相关八股(从 socket 多线程到 IO 多路复用,epoll 实现方式,主从 Reactor,可以看看 Nginx 如何建立新连接)
- 了解哪些网络测量、优化算法等方面知识,最近关注的网络领域前沿动态
(五)数据库
- 常见数据库(如 Redis、MySQL、PostgreSQL、MongoDB 等)的特点及数据结构
- Redis 实现过期的策略,Redis 系统扩容的操作
- MySQL 支持的引擎及特点,查询语句中判断索引是否被执行的方法
- JOIN 的语意和分类
- 数据库文件存储格式,
SEQSCAN
和INDEXSCAN
的实现及区别 - Copy-On-Write Trie 的目的和好处,HyperLogLog 的实现原理,LRU-K 页面置换算法基本原理及用到的数据结构
- 缓冲池插入数据时已满和未满的情况处理
- 可扩展哈希的实现、扩容及与其他哈希的对比
- 数据库优化实验中发现性能瓶颈的方法
(六)分布式系统
- ZooKeeper 服务注册原理和负载均衡原理,部分服务节点出现问题时客户端的调整策略
- 负载均衡的一致性哈希算法,是否存在并发问题,一台机器挂了流量的分配情况
二、项目类问题
- 介绍项目中做得不好需要改进的地方
- 项目中遇到的问题及解决方法(如 HTTP 协议解析耗时问题、时间轮处理长连接问题等)
- 项目的目的和背景,与市面上现有框架相比想要实现的目标
- 项目中使用某些技术(如 Protobuf、协程、ZooKeeper 等)的原因
- 口述项目中的设计思路(如 RPC 事件处理模型、数据库相关设计等)
- 项目是独立完成还是与他人合作完成
三、通用类问题
- 了解 Linux 常用命令吗
- 自我介绍
- 本科没有实习的原因
- 自身优点、困难挫折经历
- 平时是从哪些渠道学习新技术的
- 职业规划
- 家庭情况
- 读博还是工作的想法,导师情况,科研体系,毕业论文准备情况
- 如何了解到投递团队并决定投递的原因,对该领域感兴趣的原因及难点
- 实习时间、实习地点要求,已进行面试的次数,是否有心仪的公司
四、反问
- 可以介绍一下部门做的是什么业务,有什么分工吗
- 可以评价一下我的面试表现吗?我还有哪些地方可以提升
- 可以问一下咱们组对于新人的入职培养是怎样的
五,腾讯面试 Timeline
- 简历投递:2025/02/21
- 一面:2025/02/28
- 二面:2025/03/10
- 三面:2025/03/14
- HR 面:2025/03/21
- 云证:2025/03/21,HR 当天发云证
- OC:2025/03/25,隔了一个周末
整体面下来,感觉还是需要好好巩固基础知识,希望我总结的这些点能够帮到大家。最后祝愿大家都能顺利拿到 Offer!