字节跳动 飞书 java后端一面
1. 项目:
- 如何做主从数据备份的,从节点是备份了二分之一主机就可以了,还是需要全部备份完。
- 如何做主从切换的,参考raft,哨兵机制。
2. hashmap说一下
3. 说一下hashmap的扩容
4. 修改hashmap,如何在有业务并发访问的时候,保证访问数据的正确性,对业务层屏蔽掉底层的扩容。
5. 说一下tcp的三次握手四次挥手。
6. tcp如何保证可靠性
7. 数据库的索引的底层实现
8. 说一下你是怎么理解ACID中的一致性的(这个问题总共被问到了三次,我自己找不到正确答案,希望有仁兄能告诉我。)
w: 事务前后的一致性限制不能被打破,程序员写代码的时候需要注意不写出打破一致性的代码,
例如+100,其他的地方就需要-100,不能-50。 转钱的时候,保证加钱和减钱一起完成,或者一起不完成。
m: ACID不是应该是由数据库保证的嘛,为什么要由程序员来保证。
m: 一起完成不是原子性嘛,为什么和一致性有关呢。
w: ......
9. ACID一致性和CAP一致性是一样的嘛。
10. 说一下什么是脏读什么是幻读。
11.如何解决脏读幻读不可重复读。
12. 如果让你自己实现数据库连接池,你会怎么实现。
13. 数据库的同一个连接能够同时连接多个线程嘛。
算法:
找数组中第K大的数字。(堆解法,说一下复杂度,好像复杂度还蛮高,用快排的方式实现一下。)