抖音上海后台开发提前批一二面面经(已约三面)
1
用到了什么rpc框架(coral,亚马逊的rpc框架),
那coral是基于什么协议的?(http协议),
http协议的header是什么结构的?(请求行,请求头部,请求包体)
2
TCP和UDP的区别(巴拉巴拉巴拉)
TCP怎么保证可靠传输的?(三次握手、四次挥手、确认机制、重传机制、滑动窗口、拥塞控制)
如果tcp连接断了(比如server宕机),client如何处理?
3 链表
介绍一下链表(ArrayList LinkedList)
单链表和双链表的区别及应用场景
4 MySQL索引(B+树)
5 操作系统和数据库了解么?(不是科班出生回答说不是很了解就不怎么问了)
6 HashMap的底层实现?
数组存储的元素是什么?(链表头的指针)
详细介绍一下 put这个方法的执行流程
1 .hashcode 返回32位的 int 结果
2 .hash 前16位和后16位按位异或(减少空间开销,并能保存所有位数信息)
3 与数组长度取模(按位与),计算出index,插入index下的链表(忘记头插还是尾插了)
7 valatile的作用(防止指令重传、 保证可见性)
如何保证可见性(变量更新会直接同步到主存,并另其他线程的变量无效)
8 算法题
输入一个数据流(4,3,10),请依次输出当前数据的中位数
声明一个链表去存储这些数据,并返回链表的中位数(ON)
包括两个方法:
1 insertList
2 findMedium
一面结束,面试官让我等一下看是否有二面,结果等了十分钟还没有结果,我都准备躺床上休息了,面试官打电话过来让我二面,惊喜。
1 Java的hashmap
2 Java中用到的锁(synchize, Lock)
一个class 中有两个加锁的方法,可以同时分别被不同的线程调用么?(当然可以)
3 Redis 缓存
如何保证缓存与数据库读写一致性?
针对千万次每秒的访问,分布式缓存如何实现?主从换从如何保证一致性。
4 Git操作
Git rebase 与 Git merge的区别
5 算法题
打印二叉树的左边界(层级遍历, 打印每层的第一个节点)