work hard work smart

专注于AI+Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Java 面试1

Posted on 2026-09-15 22:48  work hard work smart  阅读(4)  评论(0)    收藏  举报

1、HashMap原理,线程安全?

数组,链表,红黑树。 非线程安全


2、Java如何进行线程同步

同步锁 synchronized

ReentrantLock锁

Semaphore 信号量

 


3、CAS原理

Compare And Swap 先比较再交换

有三个操作数 内存位置,预期值A,修改值B,如果内存位置和预期A取出的值相同,则把值替换成B,否则不做处理。


4、JVM垃圾回收之GC算法

标记-整理

标记-清除

标记-复制

 

5、Mysql索引原理以及查询优化:

B+Tree索引

查询优化:explain  最左匹配

 

 

6、TCP,拥塞控制


7、算法:给定一棵二叉树,找到这棵树最中最后一行中最左边的值。


9、电商平台中订单未支付过期如何实现自动关单?

定时任务,定时检查订单是否过期


10、如何设计一个秒杀系统

限流 , MQ异步下单,  商品数据缓存到Redis,Redis扣库存并防止超卖

 

 

11、如果你的系统的 OPS 突然提升 10 倍你会怎么设计?

限流降级,扩容,加缓存,异步化 分库分表


12、如何设计一个支持 10 万 OPS 的会员系统

缓存 + 分库分表 + 异步写入 + 集群


13、关于索引的底层实现,为什么选择 B+Tree而不是红黑树?

对比红黑树,他的分叉是2,这样整体树就高,磁盘IO次数就多。

对比B树,B树非叶子节点也存数据,这样分叉就变少,树变高,磁盘IO次数就多。

B+树, 数据存储在叶子节点,非叶子节点存储索引,叶子节点数双向链表,这样就更容易支持范围查找

参考:

为什么选B+树,而不是红黑树或B树?

对比红黑树:红黑树是二叉树,分叉只有2。数据量大时树太高,磁盘IO次数多;而B+树非叶子节点不存数据,分叉大、树矮,IO次数少。

对比B树:B树的非叶子节点也存数据,导致分叉变小,树变高,IO变多;且B树范围查询需要频繁中序遍历。B+树非叶子节点不存数据、节点大小固定,有利于磁盘预读;叶子节点通过双向链表连接,支持高效的范围查询和排序。

总结:B+树把数据全放叶子节点,内部节点只做索引,这种设计最大化地利用了一次磁盘IO能读取的数据量,把树高降到了最低,完美契合数据库磁盘存储的特性。

 


14、介绍HashMap,与TreeMap区别

HashMap是无序的 O(1),

TreeMap是有序的,红黑树 O(logn)


15、用HashMap实现一个有过期功能的缓存,怎么实现

value 是一个对象,包括创建时间和过期时间,获取key的时候,判断value是否过期
还有定时任务,检查是否过期