得物2026春招 | 后端开发 | 面经 | Java面试

一、Java基础

1. HashMap底层原理
数组+链表+红黑树,JDK1.8后引入红黑树。初始容量16,负载因子0.75,扩容为原来2倍。线程不安全,多线程推荐使用ConcurrentHashMap。

2. ConcurrentHashMap 1.7和1.8区别
1.7:Segment分段锁+数组+链表,锁粒度较大。
1.8:CAS+synchronized,数组+链表+红黑树,锁粒度更细,性能更高。

3. ArrayList和LinkedList区别
ArrayList:动态数组,查询快,增删慢。
LinkedList:双向链表,查询慢,增删快。

4. String、StringBuilder、StringBuffer
String不可变,线程安全。
StringBuilder可变,非线程安全,效率最高。
StringBuffer可变,线程安全,效率较低。

二、并发编程

5. synchronized底层实现
修饰方法:ACC_SYNCHRONIZED标识。
修饰代码块:monitorenter、monitorexit指令。
锁升级流程:无锁→偏向锁→轻量级锁→重量级锁。

6. ReentrantLock和synchronized区别
ReentrantLock:手动加锁解锁,支持可中断、超时、公平锁。
synchronized:自动加锁解锁,使用简单。

7. 线程生命周期
新建、就绪、运行、阻塞、终止。

8. 死锁四个必要条件
互斥、请求保持、不可剥夺、循环等待。破坏任一条件即可避免。

三、JVM

9. JVM内存模型
堆、方法区、虚拟机栈、本地方法栈、程序计数器。

10. 垃圾回收机制
对象存活判断:引用计数法、可达性分析法。
回收算法:标记清除、标记复制、标记整理。

11. 常见垃圾收集器
Serial、ParNew、Parallel Scavenge、CMS、G1。

四、计算机基础

12. TCP三次握手、四次挥手
三次握手:建立可靠连接。
四次挥手:断开连接,保证数据传输完成。

13. HTTP和HTTPS区别
HTTP明文传输,端口80。
HTTPS加密传输,端口443,基于SSL/TLS。

14. MySQL索引
底层B+树,分为聚簇索引和非聚簇索引。遵循最左匹配原则,避免索引失效。

15. MySQL事务ACID
原子性、一致性、隔离性、持久性。

五、项目与场景

16. 接口限流方案
计数器、漏桶算法、令牌桶算法。

17. 分布式锁实现
Redis分布式锁、Zookeeper分布式锁。

18. Redis缓存问题
缓存穿透:布隆过滤器。
缓存击穿:互斥锁、热点数据永不过期。
缓存雪崩:过期时间随机、集群部署、服务降级。
#面经#  #得物#  #后端#
全部评论
得物春招笔试还没开始 怎么就有面试了?
1 回复 分享
发布于 03-20 11:02 黑龙江
【内推码】H4HSD9J(内推简历优先筛选,流程问题欢迎联系)
点赞 回复 分享
发布于 03-23 10:05 湖南

相关推荐

03-27 12:07
已编辑
北京中南海业余大学 Java
全程追问,压力很大(不过给的也确实多,可惜鼠鼠没把握住机会...哎),没有手撕,但是面试官会给场景让你说思路。面试官人也挺好的,引导式提问,不是纯刁难。只会八股确实不够用,着重考查实际能力。很多东西确实没有准备到,只能说好好复盘思考吧!1:讲一下你实习经历里,做的比较好、或者对你来说最有挑战的部分。2:你用 Redis 分布式锁的时候,锁的超时时间是怎么确定的?设置的多大?3:如果业务执行时间超过了锁的超时时间,会发生什么?4:加锁的执行过程中,服务宕机了,会有什么问题?对应的解决方案是什么?5:旁路缓存模式(查询先查缓存,无则查库写缓存;更新先更数据库,成功后删缓存),什么极端场景会出现缓存与数据库长时间不一致?6:上面这个长时间不一致的场景,有什么解决方案?7:一张表有 a、b 两个字段,分别建了单列索引,查询语句 where a=x and b=y,MySQL 是怎么决策用 a 索引还是 b 索引的?8:Java 服务线上发生内存溢出 OOM,你会怎么排查定位?步骤是什么?9:JVM 进行 GC 的时候,怎么判断一个对象是不是垃圾,能不能被回收?10:Java 并发的组件 / 类你有用过哪些?举一个实际开发中使用的具体场景。11:设计一个场景:异步发起 100 个任务请求外部接口,每个接口返回一个 int 值,并发执行后,统计这 100 个结果中的最大值,你会怎么设计?
查看11道真题和解析
点赞 评论 收藏
分享
评论
9
14
分享

创作者周榜

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