7.21 极氪java后端面试

电话面试(第一次电话面试,一般都是视频) 30-45分钟左右。面试官超级好,不会的会和你讲解。
常规八股起手,由浅入深

1 看我简历里写了RocketMQ,问我为什么项目里为什么用RabbitMq, 我分析了一下区别,说RabbitMq和spring集成更好,方便实现。RabbitMq速度好,能达到微秒级,就是吞吐量不如RocketMQ。RocketMQ适合分布式。 然后问我为什么速度快?没答出来。和我解释了一下 (Erlang 实现+异步写)。

2 RocketMQ 组件,问我他们之间怎么连接 ,我只知道他们连接NameServe,不知道他们是长连接,然后聊了一下webSocket,短链接之类的。

3 Jvm内存回收,直接八股开始吟唱 可达性分析+垃圾回收算法+分代回收。 被打断了,问我 elden区与suivival区内存比(我晕),Jvm启动时配置属性有哪些(寄 ),和我解释了 垃圾回收器(GC)配置+内存配置+日志与监控(懵了)

4 看我项目用了redis ,怎么用: 缓存 + 分布式锁, 分布式锁怎么实现,为什么要有分布式锁,锁过期了怎么办(看门狗机制)。什么情况下会发生缓存雪崩、穿透、击穿,怎么解决 (参数校验+布隆+返回空值),(锁+设置合理过期时间),(随机设置过期时间)。上面我都举了我项目中的实际例子。

5 设计模式 单例模式中双重校验锁怎么实现, 关键字, valatile+syncronized  valatile作用(防止指令重排序+可见性),new 对象三步( 分配内存+初始化零值+引用赋值) valatile防止指令重排序导致返回未初始化对象(我回答时往可见性方向走了 什么内存屏障,强制读取主内存什么的)。 类加载过程 ,双亲委派机制,类加载器在哪个包下(直接懵了)

6 问了我Netty(听成了 .net 还以为c#呢) ,看我完全不懂,没问了。 

7 看出我是八股战神了,后面什么Mysql 索引为什么失效,索引过程什么的我就说我都会背,面试官就没问了。

8 springboot启动过程,面试官直接说没看过源码说不清楚过程。直接说干了什么 。(导入bean @ SpringApplication启动实例,自动装载 META-INF/spring.factories 中配置的自动装配类,@EnableAutoConfiguration、@Configuration导入装配默认的 Spring Bean。@ComponentScan:自动扫描指定包及其子包中的 Spring 组件。)简而言之一句话,导入需要的bean。

面试的过程中,对于我不懂的东西面试官会耐心的讲解,我有想法了也会直接反馈给面试官。整个面试过程不是单方面输出,更像是聊天。

面试官说我没啥实际经验,不过实习生就是写写接口,不需要太会,基础够就行,面试官希望我能接触真实业务场景,也希望我能提高自己,不要仅限于八股。
#牛客AI配图神器#
全部评论
学长好强啊!!
1 回复 分享
发布于 07-21 16:57 浙江
很好的面试题
点赞 回复 分享
发布于 08-26 10:58 北京
我这有很多有含金量的大厂项目可以包装,有兴趣的同学可以看下我简介中的项目地址
点赞 回复 分享
发布于 07-24 16:26 江苏

相关推荐

10-10 23:04
门头沟学院 C++
1. 移动语义的适用场景是什么?2. 内存泄露通常有哪些原因?3. (追问)除了未释放和循环引用,还有哪些原因?4. 多线程如何处理并发(变量)问题?5. 防止并发有哪些方式?(追问锁以外的机制)6. 除了锁,还有哪些方式?(再次追问)7. 信号量是如何进行管理的?8. 多进程间通信有哪些方式?请讲几个。9. 你做的流媒体服务器是单进程多线程架构吗?10. 一对一聊天和群聊(多对多)在架构上有什么不同?为什么群聊可能需要多进程?多进程具体做什么?11. 同步和异步的区别是什么?能否举一个异步的业务场景例子(比如你项目中的异步日志系统)?12. 异步日志系统的大致实现思路是什么?13. 这个日志系统是自研的还是使用开源组件?14. 你的项目里用到了哪些设计模式?15. 单例模式是线程安全的吗?16. 除了工厂和单例,还了解或使用过其他模式吗?(如观察者、策略模式)它们的使用场景是什么?17. 你在项目中遇到的最复杂或最难的问题是什么?是如何解决的?(引申出加密解密问题)18. 加密解密问题具体是什么原因?最终如何解决?19. 从1000万条记录的数据集中找出分数最高的Top K个记录,你会用什么算法?时间复杂度是多少?20. (追问)该算法对内存有要求吗?21. 快速选择(部分快排)算法的时间复杂度是多少?22. (深入探讨)为什么快速选择算法的平均时间复杂度是O(N)?23. TCP和UDP有什么区别?24. 为什么TCP需要三次握手?25. 什么是I/O多路复用?26. epoll的边沿触发(ET)和水平触发(LT)模式有什么区别?你的项目是如何支持和选择这两种模式的?27. 边沿触发(ET)模式是否可靠?在什么情况下可能存在问题?28. 什么是死锁?在什么情况下会发生?如何避免或解决死锁?29. 如果发现数据库查询效率很低,你会通过哪些方式来排查和优化?30. (追问)除了优化SQL、索引和分库分表,还有哪些优化思路?31. 项目是在什么操作系统上开发的?32. 是否使用过GDB进行调试?如何调试程序崩溃(如使用core dump文件)?33. 在项目开发中,除了GDB,还使用了哪些调试工具和方法来排查BUG?34. 你最近在看什么技术书籍?有什么心得或启发?
点赞 评论 收藏
分享
评论
8
25
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务