字节面试复盘

一面
1. 对象在年轻代和老年代的移动方式

2. ClaaLoader了解吗, 主要是做什么的? 
   不同的classloader加载同一个字节码是同一个类吗
在JVM中,即使这个两个类对象(class对象)来源同一个Class文件,被同一个虚拟机所加载,但只要加载它们的ClassLoader实例对象不同,那么这两个类对象也是不相等的,这是因为不同的ClassLoader实例对象都拥有不同的独立的类名称空间,所以加载的class对象也会存在不同的类名空间中。
3. Spring的IOC和AOP
4. 了解ThreadLoacl吗?
5. MySQL的ACID特性,事务的隔离级别
6.  聚簇索引,非聚簇索引
7. binlog和redolog 了解吗?
8. 写sql语句: 
获取成绩排名前8的学生姓名
找出表中有两条记录的人的名字
select name from Persons group by name having count(id) = 2; 
select name from Persons group by name having count(name) = 2; 
9. 分布式事务的概念,一个数据库里的两张表能做事务吗? 不同的库的两张表能做事务吗? 【https://www.cnblogs.com/mayundalao/p/11798502.html
10. TCP拥塞算法:流量控制,拥塞控制
11. 三次握手,四次挥手,为什么要这么干
12. Redis了解多少? 数据类型, 持久化策略
13. 一致性hash
14. 算法题: 旋转数组的最小值

二面:
1. 消息队列, 如何解决消息被重复投递?
   先说为什么会重复消费:正常情况下,消费者在消费消息的时候,消费完毕后,会发送一个确认消息给消息队列,消息队列就知道该消息被消费了,就会将该消息从消息队列中删除;但是因为网络传输等等故障,确认信息没有传送到消息队列,导致消息队列不知道自己已经消费过该消息了,再次将消息分发给其他的消费者。
   解决思路是:保证消息的唯一性,就算是多次传输,不要让消息的多次消费带来影响;保证消息等幂性;
在消息生产时,MQ内部针对每条生产者发送的消息生成一个inner-msg-id,作为去重和幂等的依据(消息投递失败并重传),避免重复的消息进入队列;
在消息消费时,要求消息体中必须要有一个bizId(对于同一业务全局唯一,如支付ID、订单ID、帖子ID等)作为去重和幂等的依据,避免同一条消息被重复消费。
   这个问题针对业务场景来答分以下几点:
如果消息是做数据库的insert操作,给这个消息做一个唯一主键,那么就算出现重复消费的情况,就会导致主键冲突,避免数据库出现脏数据。
如果消息是做redis的set的操作,不用解决,因为无论set几次结果都是一样的,set操作本来就算幂等操作。
如果以上两种情况还不行,可以准备一个第三方介质,来做消费记录。以redis为例,给消息分配一个全局id,只要消费过该消息,将<id,message>以K-V形式写入redis。那消费者开始消费前,先去redis中查询有没消费记录即可。


2. Redis用到过Hash,set 和 sorted set吗? 介绍一下sorted set,sorted set怎么实现的?
3. Redis怎么实现高效缓存,过期控制? 
4. Redis setnx了解过吗?介绍一下setnx,setnx在做什么? setnx, get,getset  

5. 进程处于的状态; 从运行到就绪发生了什么? 从运行到阻塞发送了什么?资源能够获得了,从阻塞到什么状态?


6. 进程死锁发生在什么情况下,编程时可以破坏哪个条件来避免死锁
7. 输入一个域名,会发送什么?IP地址怎么能找到物理位置? ping ip地址, arp -a 显示物理地址
8. 计算机网络里的路由相关的知识
9. 了解过的数据结构
10. B+树和B树的结构,索引使用的哪种树? 范围查询的时候B+树有什么优势?
11. 判断两个链表是否交叉? 
12. 求数组的三个数字相加为0的所有组合













全部评论
请问你是校招的还是社招
点赞
送花
回复
分享
发布于 2020-07-19 07:54

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务