字节社招一面凉经

项目拷打20分钟

Java八股

HashMap 底层是如何实现的?

HashMap 的键是一个对象,现在修改对象的一个属性,还能根据对象获取到对应的值吗?

String 底层是通过 final 修饰的数组,是不可变的,这种不可变有什么好处?

  1. 安全性:字符串通常用于定义程序中的常量数据,不可变性确保了这些数据不会因为外部修改而发生意外变化。
  2. 线程安全:由于 String 对象是不可变的,它们天然是线程安全的,不需要额外的同步措施就可以在多线程环境中使用。
  3. 性能优化:不可变性允许对 String 对象进行一些性能优化,如字符串常量池的实现。JVM 可以对字符串常量进行重用,减少内存消耗。

JVM 方面有没有做过相关的调优,简单说说

kafka八股

kafka 为什么那么快,怎么做到吞吐量那么大?

  1. 零拷贝:减少数据在内核态和用户态的复制
  2. 分区:可以方便进行水平拓展,提高吞吐量
  3. 顺序写磁盘:Kafka中每个分区是一个有序的,不可变的消息序列,Kafka写数据的时候,Kafka的消息是不断追加到文件末尾的。充分利用磁盘的顺序读写性能
  4. 批量发送:减少IO
  5. 消息压缩:Kafka还支持对消息集合进行压缩,Producer可以通过GZIP或Snappy格式对消息集合进行压缩,压缩的好处就是减少传输的数据量,减轻对网络传输的压力。

消息队列为什么选择kafka, 不用RocketMQ?

了解kafka, 但是不了解RocketMQ ,只能从业务场景进行分析

  1. 首先有公司专门的基建团队对Kafka进行运维支持
  2. 消息顺序性:RocketMQ支持全局消息有序,Kafka 也是分区有序也够用了

不考虑公司基建支持,项目中的消息队列能否用RocketMQ 替换?

消息队列如何保证消息不丢失?

Redis 八股

什么是缓存雪崩,如何避免雪崩?

Redis 的大key 问题?

  • 清理过期数据
  • 有效数据(未过期)根据业务建进行拆分

Redis 实现的延迟队列,假设数据量很大,如何进行拓展?

算法:用数组实现一个栈,并进行拓展

总结

最后的题蛮简单的,害怕是kpi 面,项目准备的还不够,被拷打的汗流浃背了

许愿个二面吧

后续

收到感谢信了,已挂

#社招面经#
全部评论
哪个部门啊
1 回复 分享
发布于 08-07 09:39 北京
答的咋样
点赞 回复 分享
发布于 08-08 12:12 北京
社招几年经验?
点赞 回复 分享
发布于 08-20 05:43 浙江

相关推荐

1 37 评论
分享
牛客网
牛客企业服务