映客-提前批-服务端开发
一面 50 min
- 指针和引用的区别
- 野指针(定义、原因、解决方式)
- 多态
- 智能指针(定义、底层实现)
- Linux 内核态、用户态
- MySQL 引擎
- MyISAM 和 InnoDB 的区别及各自应用场景
- MySQL 索引及底层
- Redis KV 如何建立
- TCP UDP 能否访问同一个端口及原因
- Docker 底层实现
- 线程和进程的区别
- 死锁的四个条件
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 占有且等待:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3)不可强行占有:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之
一不满足,就不会发生死锁。
- OSI 模型
- 四次挥手,能否两次挥手,原因
- Qt 信号槽机制
- Redis MySQL 配合使用一致性怎么保证
- Redis 和 memcached 区别
- Url 的解析过程,包含哪些层和协议
- 对于 Go 语言的看法,为什么学习 Go 语言
- Python 和 Shell 会用么
- 算法 1:一个数组里只有一个数字出现 1 次,其他出现 2 次,找到这个数(hash 或者 xor)
- 算法 2: 一颗二叉树,从右向左看(右视图),按照层打印节点值(BFS 最后节点 或者 DFS + 记录打印层数)
二面 60 min
- 算法 1: 手写二叉树 BFS
- MySQL 索引底层实现
- 数据库中,1 - 1000 w 行数据,如何设计查找
- 算法 2: LRU 实现
- std::mutex
- Shell(查进程 pid,并且 kill)
- kill -9 底层
- Redis 持久化
- Go 做一个云盘,如何设计数据库表,上传下载删除操作会怎么操作表
- 内存泄漏,如何 debug
- 想去什么样的公司
- 拿了什么 offer
- 看过一些语言或者框架源码么
HR 面 15 min
- 聊一下研究所
- 说一下对映客的认识
- 拿了什么 offer
- 有什么问题
OPPO-提前批- C++ 开发
一面 30 min
- 自我介绍
- 讲一下 Redis MySQL 的项目
- MySQL 索引
- Redis 底层实现、持久化,单机内存不够怎办
分布式部署
- 纯虚函数
- C++ 三大特性
- 虚继承
- 虚函数表
- 能有虚构造函数么
- Python 和 Shell 了解多少
- 成绩怎么样
- std::mutex
- 机器学习和深度学习论文看的多么
- 有什么要问的
二面 30 min
- 自我介绍
- 挑一个项目讲一下(讲了深度学习比赛的,面试官比较关注分工、方法、创新点和解决问题的思路)
- CMU 15-445 LAB 讲一下
- Redis MySQL 项目
- 团队合作分工有没有分歧,如何解决
- LRU 及其他调度算法
- OS 数据结构等是否了解
- 有什么要问的
腾讯-提前批(WXG)- C++ 开发
一面 60 min
- 算法 1: 从字符串 A 中剔除字符串 B 中出现的所有字符
- 算法 2: 二叉树路径和为某一值的路径数量
- 算法 3: 二维数组,行从左到右递增,列从上到下递增,查找 target 数字
- 算法 4: 输入 N,找到比 N 小的数字中,数字每一位相乘最大的数字
- 算法 5: 矩阵内,随机3个点最短路径和
- 为什么用 Redis 而不是 memcached
- MySQL 索引
- Redis MySQL 一致性
- MySQL 操作成功,但是 Redis 操作失败,怎么判断怎么解决
- Redis 持久化
腾讯-提前批(PCG)- C++ 开发
一面 50 min
- 自我介绍
- 智能指针
- 右值引用
- std::move
- 代码量
- 异步服务器如何实现
- Redis 底层
- 进程切换成本(DRAM/SRAM/MMU/TLB)
- 红黑树、hash table 底层
- DFS
- I/O 多路复用
- 如何自己封装 TCP
- 给定 RTT,计算 TCP 建立传输之后理论传输速度
二面 60 min
- 自我介绍
- 面试官介绍项目组(腾讯文档)
- C++ Go 了解多少
- Linux 启动的过程
- 计算机网络了解多少
- TCP UDP 应用场景
- 设计一个支持读多写少业务的高并发查询架构
- Redis 类型
- TopK 问题
- 有向图最短路径算法
- 对于数据库的理解
腾讯-提前批(CSIG)-云存储
一面 65 min
- 自我介绍
- 算法 1:升序数组,查找距离 target 值距离和最近的长度为 N 的数组
- 智力题:2个鸡蛋,100层楼,最少多少次可以测出刚好摔坏鸡蛋的楼层
- CMU 15-445 LAB
- 数据库加锁、MVCC
- RR(Repeated Read)举例
- Redis 数据结构底层
- Redis 持久化
- 设计一个微信登录查询缓存架构
- Paxos、Raft是否了解
作业帮-提前批- C++ 开发
一面 40 min
- 自我介绍
- 对于 Go 的熟悉情况
- Go 里面 init 和 import 加载顺序
- Go sync 包使用问题
- Shell 的问题
- 二叉树前后中序
- 两道智力题,找规律和赛马问题
虎牙-提前批- C++ 开发
一面 60 min
- 自我介绍
- MySQL Redis 项目,一致性问题等
- Go 项目,为什么做这个项目,涉及的知识点
- CMU 15-445 项目
- C++ 基础问题
- 进程和线程
- 能否来实习
百度-提前批-测试开发
一面 30 min
- 自我介绍
- 项目简单介绍
- 算法 1:字符串匹配问题,返回第一次匹配下标
- 算法 2:判断字符串组成是否一致
二面 50 min
- 自我介绍
- 项目
- url 输入之后,各层协议
- 快排思想
- 百度搜索框,从哪些角度测试
- Go 项目
- C++ 基础问题
三面 20 min
- 自我介绍
- 项目问题
- 对于测开的看法
- 测开和开发的对比
- 聊天
百度-提前批- CDN 开发
一面 60 min
- 自我介绍
- Go 项目,断点续传如何实现
- 网络编程了解多少
- 多态、虚函数、动态绑定、虚函数表、虚函数指针、虚表位置、构造函数能否是虚函数
- 模板编程
- 对 STL 的了解(容器、空间配置器、迭代器、适配器等)
- 代码:map 删除 key 为质数的迭代器如何实现
- hash table 中链表过长如何解决(RBTree或者扩容)
- RBTree
- BTree B+Tree
多叉平衡树
- 网络编程,select、poll、epoll(LT/ET)
- epoll 底层模型
- 进程通信方式
- esocket
- MQ 特点
- 共享内存
- 线程同步方式
- 进程和线程
- 虚拟内存
- 线程是否拥有资源,拥有哪些资源
- Url 输入之后
- DNS 查询的方式(迭代、递归)
- TCP 三次握手四次挥手,2MSL
- 客户端掉线服务端如何处理
- 算法 1:开根号
- 算法 2:洗牌算法
二面 50 min
- 自我介绍
- Redis 相关知识点(持久化、hash、超大hash表删除如何加速、hash底层如何扩容)
- STL(容器、空间配置器、迭代器、适配器等)
- RBTree AVL
- resize、reserve
- 代码:set 删除大于 100 的 key 如何操作
- 一致性哈希
- 智能指针
- new/malloc
- map 中 key 可以为 double 类型么
- LRU
- TCP UDP
- 有什么问题
百度-提前批-SRE开发
一面 60 min
- 自我介绍
- Redis MySQL 项目架构等项目相关问题
- 进程线程
- TCP 三次握手
- I/O复用
- 算法 1:手写堆排插入
搜狗-GeekDay- C++ 开发
一面 60 min
- 自我介绍
- Redis MySQL 一致性
- MySQL 索引
- Redis 持久化
- CMU 15-445 LAB
- std::mutex
- Go 项目中所有涉及的知识点
- 堆的删除和插入
- 代码:手写堆插入
- 聊天
HR面 20 min
- 自我介绍
- 工作、生活中扮演的角色
- offer 情况
- 能否来实习
- 对于搜狗的印象
猿辅导-正式批-服务端开发
一面 60 min
- 自我介绍
- 项目中数据库如何设计
- ACID、事务锁、索引
- go-micro
- MQ
- vector、list底层实现
- 宏
- TCP UDP
- 算法 1:合并 k 个有序链表
- 算法 2:严格递增数组,旋转后,查找 target 值
二面 40 min
- 自我介绍
- 线程调度
- 线程的状态
- rpc 的组成
- rpc 中 TCP 和 HTTP 对比
- 算法 1:多叉树层次遍历
- 算法 2:输入一个数组,输出所有子数组
终面 40 min
- 自我介绍
- 介绍所有项目
- 算法 1:实现 STL 中 next_permutation 方法
- 算法 2:多叉树层次遍历
阿里巴巴-提前批- C++ 开发
一面 50 min
- 自我介绍
- 能否接受转 JAVA
- 对于 JAVA 的了解
- 堆栈用什么数据结构实现比较好
- 对于树的了解(二叉树、查找二叉树、AVL、RBTree)
- 为什么 map 用 RBTree
- 指针和引用
- int func(int *a, int *b) 和 int func(int a, int b) 的区别
- C++ 虚函数
- UDP 实现可靠传输
- CMU 15-445 LAB
- MySQL 主从复制底层实现
- 一致性哈希
- 项目问题
- 反问环节
京东-正式批- C++ 开发
一面 30 min
- 自我介绍
- Redis MySQL 项目
- 读写队列高并发优化
- 进程线程
- C++ 虚函数
- CMU 15-445 LAB
- 算法 1:链表相邻节点值交换
- k8s
- Go 项目
- 反问环节
二面 30 min
- 一面面试体验如何
- 面试官介绍组里方向
- std::move、右值引用、lambda
- 英语怎么样
- 项目
- 开源社区、开源项目讨论
HR面 20 min
- 自我介绍
- 对于京东的看法
- 选择一个公司最看重哪些
- 项目情况和收获
- 对于加班的看法
- 毕业时间
- 反问环节
小米-提前批- MIUI系统优化
一面 60 min
- 自我介绍
- char *p = 100; p + 2 结果是什么
- malloc 和 new 的区别,手写一下如何用
- 进程线程通信方式区别等
- 项目中问题
- CMU 15-445 LAB
- std::mutex
- TCP IP
- ipv4 ipv6
- 算法 1:倒数第 k 个链表节点值
二面 30 min
- 算法 1:手写快排
- Go 项目中各种详细问题
- hash 碰撞如何解决
滴滴-正式批- C++ 开发
一面 40 min
- 自我介绍
- Redis MySQL 项目
- CMU 15-445 LAB
- 服务器数据库读多写少,但是 CPU 使用率很低,如何定位问题及如何解决
- Go 项目
- 算法 1:递归二叉树前序遍历
- 算法 2:非递归二叉树前序遍历
二面 50 min
- 自我介绍
- 介绍深度学习比赛
- C++ 多态、虚函数
- STL
- 算法 1:实现 vector push_back 函数
- git 了解多少
- 图算法了解多少
- TopK问题
三面 40 min
- 自我介绍
- Redis MySQL 项目
- 主从复制实现
- 图算法了解多少
- 算法 1: 二叉树层次遍历
- 反问环节
网易互娱-正式批-游戏研发
一面 50 min
- 自我介绍
- 聊项目
- std::mutex
- 线程通信
- 智能指针
- C++ 多态
- 虚函数实现
- 钻石型继承虚函数表内存分布
- 四次挥手
- 线程安全、可重入
- 算法 1: Rand(int M) 函数,随机返回 0 - M-1,利用函数实现从 M 个人等概率挑 N 个人(洗牌算法)
- 对于网易游戏的看法
- 对于编译原理、网络、数据库、OS、计算机图形学、图像处理的熟悉程度
二面 90 min
- 自我介绍
- Redis MySQL 项目展开
- 设计高并发低延迟的数据架构
- 算法 1:洗牌算法
- 数学证明洗牌算法等概率
- 图形学渲染问题
- 玩过什么游戏,介绍一下
- 如果让你设计实现一个这样的游戏 demo 要多久,怎么分配时间
- 反问环节
拼多多-寻梦批-服务端开发
当时没有太注意记录拼多多面试的面经,然后看了一圈其他同学发的面经,难度大致相同,然后算法难度的话大概是 leetcode medium 这样。
BIGO-正式批-C++
BIGO 面试的时间很尴尬,已经拿了互娱和拼多多的,所以就试探性的面了一面,感觉比较简单,也不想耽误面试官于是就拒绝了二面,所以面经也没来得及记录。