主题
面试速答(先看这里)
**一句话结论:**哪个模块最熟悉?
60秒标准回答:
211本,985硕,设计模式,mq,中间件,26届
12306 项目,登录,注册,增删改查,车票模块,车票购买,订单模块,支付
哪个模块最熟悉?车票模块。车票查询, redis 存储,城市,车站,查询列车信息,余票,购票,防止超卖、分布式锁(锁列车、锁细分) + 令牌桶, bitmap ?
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**211本,985硕,设计模式,mq,中间件,26届。
- **要点2:**车次、余票、城市等信息是如何存储的?
- **要点3:**余票是如何存储的?
- **要点4:**介绍下 redis 的持久化机制?
- **要点5:**介绍下 redis 的持久化机制?
**记忆锚点:**redis → Redis → key → AOF → synchronized → bitmap
易错提醒:
- 这部分是关于项目,这种项目可以讲,但是不要说所有模块都是你做的,要不然面试官可能会问你各种问题,你可能hold不住,建议是挑其中的重要模块介绍,把一个模块给他吃透了,而不是每个模块都模棱两可,一问细节就不知道了,那肯定就挂了。
- 不能回滚的事务?
加分表达:
- 如果你要加锁,在 syn 和 reentrantLock 之间选哪个?
- 偏向锁为啥别废弃、 线程池执行业务逻辑,如何实现 3 秒钟如果不返回就抛异常结束?
追问准备:
- 12306 项目,登录,注册,增删改查,车票模块,车票购买,订单模块,支付, 哪个模块最熟悉?
- 车票查询, redis 存储,城市,车站,查询列车信息,余票,购票,防止超卖、分布式锁(锁列车、锁细分) + 令牌桶, bitmap ?
- 车次、余票、城市等信息是如何存储的?
- 杭州出发,经过上海,到达南京,如何存储的?
面试者背景
> 211本,985硕,设计模式,mq,中间件,26届。 > > 12306****项目,登录,注册,增删改查,车票模块,车票购买,订单模块,支付, > > 哪个模块最熟悉?车票模块。车票查询,redis存储,城市,车站,查询列车信息,余票,购票,防止超卖、分布式锁(锁列车、锁细分)+令牌桶,bitmap? > > **车次、余票、城市等信息是如何存储的?杭州出发,经过上海,到达南京,如何存储的?存储的key**会不会很大? > > 余票是如何存储的?key是什么?我要查一等座、二等座怎么办?一等座靠窗呢? > > 北京**->杭州->南京,如何实现杭州->南京票售出之后,其他的票都一起-1的?** > > 防超卖是怎么做的?令牌桶是是如何实现的?自己实现的。介绍下实现思路。 > > 余票数量是什么时候扣减的?令牌桶的意义是什么? > > 令牌桶和漏桶的区别是什么?你的场景用漏桶可以吗? > > **JDK 17用了啥新特性吗?** > > Redis的集群模式。主从节点分别是什么?哨兵模式(主观、客观下线、ping/pong),集群模式(hash槽、crc16、)、16384是怎么来的?哪种可能会存在脑裂的情况?脑裂有哪些问题? > > 介绍下redis的持久化机制?AOF、RDB、区别?File在磁盘上吗?AOF的写回策略、 > > Redis****支持事务嘛?不能回滚的事务?过程中某个命令失败了咋办? > > 用的哪个redis客户端?Redisson,jedis, > > 布隆过滤器是啥?缺点是什么?误判、无法删除。怎么解决? > > Redis****除了用来作缓存,还能干啥?排名、消息队列、经纬度。 > > synchronized****是如何保证的原子性、有序性和可见性? > > 如果你要加锁,在syn和reentrantLock之间选哪个?为什么?偏向锁为啥别废弃、 > > 线程池执行业务逻辑,如何实现3秒钟如果不返回就抛异常结束? > > 10个线程模拟赛马,实现功能:所有马ready之后一起开跑,全部到终点之后再宣布成绩?
题目解析
> 12306****项目,登录,注册,增删改查,车票模块,车票购买,订单模块,支付, > > 哪个模块最熟悉?车票模块。车票查询,redis存储,城市,车站,查询列车信息,余票,购票,防止超卖、分布式锁(锁列车、锁细分)+令牌桶,bitmap? > > **车次、余票、城市等信息是如何存储的?杭州出发,经过上海,到达南京,如何存储的?存储的key**会不会很大? > > 余票是如何存储的?key是什么?我要查一等座、二等座怎么办?一等座靠窗呢? > > 北京->杭州->南京,如何实现杭州->南京票售出之后,其他的票都一起-1的?
这部分是关于项目,这种项目可以讲,但是不要说所有模块都是你做的,要不然面试官可能会问你各种问题,你可能hold不住,建议是挑其中的重要模块介绍,把一个模块给他吃透了,而不是每个模块都模棱两可,一问细节就不知道了,那肯定就挂了。
> 防超卖是怎么做的?令牌桶是是如何实现的?自己实现的。介绍下实现思路。 > > 余票数量是什么时候扣减的?令牌桶的意义是什么? > > 令牌桶和漏桶的区别是什么?你的场景用漏桶可以吗?
> JDK 17用了啥新特性吗?
如果你写了JDK 17,那就要做好被问的准备,所以你要了解一点新特性,要不然被问了你不知道就很尴尬,要不然就老老实实写JDK8好了。
> Redis****的集群模式。主从节点分别是什么?哨兵模式(主管、客观下线、ping/pong),集群模式(hash槽、crc16、)、16384是怎么来的?哪种可能会存在脑裂的情况?脑裂有哪些问题? > > 介绍下redis的持久化机制?AOF、RDB、区别?File在磁盘上吗?AOF的写回策略、 > > Redis****支持事务嘛?不能回滚的事务?过程中某个命令失败了咋办? > > 用的哪个redis客户端?Redisson,jedis,
打开文档:✅Redisson和Jedis有啥区别?如何选择?
> 布隆过滤器是啥?缺点是什么?误判、无法删除。怎么解决?
> Redis除了用来作缓存,还能干啥?排名、消息队列、经纬度。
> synchronized****是如何保证的原子性、有序性和可见性? > > 如果你要加锁,在syn和reentrantLock之间选哪个?为什么?偏向锁为啥别废弃、
📄 ✅synchronized是如何保证原子性、可见性、有序性的?
打开文档:✅synchronized是如何保证原子性、可见性、有序性的?
📄 ✅synchronized和reentrantLock区别?
打开文档:✅synchronized和reentrantLock区别?
> 线程池执行业务逻辑,如何实现3秒钟如果不返回就抛异常结束? > > 10个线程模拟赛马,实现功能:所有马ready之后一起开跑,全部到终点之后再宣布成绩?
📄 ✅线程池中怎么设置超时时间?一个线程如果要运行10s,怎么在1s就抛出异常
打开文档:✅线程池中怎么设置超时时间?一个线程如果要运行10s,怎么在1s就抛出异常