字节跳动(广告部)一二面面经
字节广告部,9.17一面,9.18二面;
基础知识问题:
1.tcp和udp的区别是什么?哪些场景下会使用udp?
2.select的缺陷有哪些?epoll的优势是什么?
3.为什么要使用缓存?缓存的更新策略有哪些?怎么进行选择?
4.如果更新db成功但是更新缓存失败引发数据不一致,怎么解决?
5.redis的缓存穿透怎么解决?redis缓存雪崩了怎么办?有哪些具体的策略?
6.redis的缓存删除策略有哪些?你知道哪些变种的LRU方案,简单讲讲?
7.TCP是怎么保障数据的顺序?
8.为什么TCP握手要四次,而挥手需要四次?TCP的第三次握手做了什么?可以把一些其他的数据和第三次握手的ACK一起发送给服务端吗?
9.TCP的拥塞控制方法有哪些?TCP的重传机制有哪些?
10.为了提高系统的并发量,可以从哪些方面改进?
11.死锁是怎么产生的?举个例子?怎么避免出现死锁?
12.乐观锁和悲观锁的区别?数据库的MVCC实现原理?
13.mysql的主从同步是怎么做的?
14.redis的持久化是怎么做的?两种方式各自的优缺点有哪些?
15.想起来再更新。
算法题 和 代码题:
1.写一个死锁;
2.写一个高并发环境下的单例类;
3.快排和归并排序实现;
4.给一个链表,2个一组进行反转,并写测试用例;
场景题:
微信的pc app server端的通信问题:app已登录,接下来你要登陆PC微信,微信的二维码里包含什么信息?整个扫码到PC端微信上线的过程中,交互逻辑是什么?
另外很大一部分时间在讨论我项目和论文相关的问题。