【宇宙条】-后台开发面经
秋招总结 & 面经分享总贴
一面 80min
项目web服务器
定时器容器
压测结果,瓶颈在哪
事务特性
持久型数据库怎么实现的
数据库有哪几种日志
分布式下还能满足ACID吗
数据库有哪几种锁
联合索引知道吗
进程和线程的区别
协程有了解吗
每个连接分配一个协程,开销会不会很大?要是每个连接分配一个内核级线程,可不可以
内核级线程切换的开销
手撕:LeetCode 下一个排列 这题以前没碰到过,做了好久还是想不出来,本以为就这样凉了。面试官还说我笔试成绩不错...然后国庆之后居然收到二面通知了
二面 45min
IO模型
进程线程的区别
进程间的通信方式,无名管道和有名管道的区别
进程的状态转换
死锁及必要条件
产生死锁的原因
预防死锁
银行家算法流程,怎么检测不安全状态
TCP连接的建立和释放
2MSL时间内收到了服务器的报文会怎样
2MSL时间内,除了服务器的连接释放报文,还可能收到其他报文吗
MySQL的查询流程(一面后刚好看了Redis和MySQL的原理,就模糊的打出来一些)
MySQL的日志系统
Redis的字符串怎么实现的
Redis的持久化机制
手撕:最长上升子序列 因为不久前做过,很快就写出来了。然后面试官问了时间复杂度,算法的思想,状态是什么意思。
二面完之后被通知说部门没hc了,也算是挂了吧,感觉一面手撕没做出来影响很大。那时候都不想面了,后面还是换了个部门鞭尸...
一面 56min
介绍项目中的session功能
Sessionid的生成规则
大量连接时sessionid可能重复?
讲一下C++的继承和多态
虚函数
动态绑定的底层原理
析构函数是虚函数吗
指针和引用的区别
Const和define的区别
源码到可执行文件的过程
静态链接和动态链接的区别
多线程怎么实现同步
死锁条件
介绍一下虚拟内存
进程调度算法
TCP和UDP的区别
TCP的可靠传输
拥塞控制算法
快恢复会进入哪个阶段
事务特性
数据库的索引是什么结构,为什么不用哈希表
手撕:分糖果,一个数组表示每个小孩的得分,要求给每个小孩至少分一个糖果,且得分高的小孩比相邻的小孩糖果数更多,求最少需要的总糖果数
(没做过,讲了好几次思路都错了,后来面试官说了正确的思路,然后让我写出来了)
二面 58min
Epoll和其他两个IO复用的区别
多线程的IO复用和单线程的IO复用有什么区别,为什么要用多线程呢
Redis为什么高效,为什么它不用多线程呢
水平触发和边缘触发的区别和使用场景
C++的多继承,怎么解决钻石模型
虚函数
写了一个sql语句,问是否会走索引,整个语句的执行过程
Update关键字(不了解)
事务特性,解释一下一致性
事务的隔离级别
innodb可重复读级别要想解决幻读问题该怎么办(我答读是MVCC,写是加锁)
写的时候是只加锁吗,加的什么锁
写了sql语句,问会加什么锁(我答行独占锁和间隙锁)
间隙锁的策略是什么,前开后闭?
讲一下操作系统的内存管理
地址转换
CPU的缓存,为什么要设置L1 L2 L3缓存(面试官想考察程序的局部性原理)
手撕:实现阻塞队列(生产者消费者模型),且要求取的时候先取优先级最大的我先直接用优先队列,后面面试官让我再实现最大堆
三面 46min
进程和线程的区别
多线程怎么通信
条件变量
多线程之间怎么保证安全,用过哪种
两个线程能在cpu中同时运行吗
滑动窗口
如果一直没收到确认报文会怎样
如果收到重复报文怎么办
手撕:输入一链表,将奇数位的节点升序排列放在链表前面,偶数位的节点降序排列放在链表后面,输出新的链表
字节的面试体验应该是面过的所有公司中最好的,包括前期通知,面试和后期的对接,都很舒服和及时。
面试了这么多次,很多问题开始重复了,网络、操作系统,数据库问的是在真的多啊,我一开始还觉得sql有个印象就好,压根没去了解原理,后面才去根据问题搜原理。
字节的面试还是挺有难度的,有固定问题也有深挖,尤其是算法题,都挺难的,要是没见过,我都是想不出来的。




