Skip to content

面试速答(先看这里)

**一句话结论:**哪个模块最熟悉?

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好了。

📄 ✅JDK新版本中都有哪些新特性?

打开文档:✅JDK新版本中都有哪些新特性?

> Redis****的集群模式。主从节点分别是什么?哨兵模式(主管、客观下线、ping/pong),集群模式(hash槽、crc16、)、16384是怎么来的?哪种可能会存在脑裂的情况?脑裂有哪些问题? > > 介绍下redis的持久化机制?AOF、RDB、区别?File在磁盘上吗?AOF的写回策略、 > > Redis****支持事务嘛?不能回滚的事务?过程中某个命令失败了咋办? > > 用的哪个redis客户端?Redisson,jedis,

📄 ✅介绍一下Redis的集群模式?

打开文档:✅介绍一下Redis的集群模式?

📄 ✅什么是Redis的数据分片?

打开文档:✅什么是Redis的数据分片?

📄 ✅介绍下Redis集群的脑裂问题?

打开文档:✅介绍下Redis集群的脑裂问题?

📄 ✅Redis 的事务机制是怎样的?

打开文档:✅Redis 的事务机制是怎样的?

📄 ✅Redis的持久化机制是怎样的?

打开文档:✅Redis的持久化机制是怎样的?

📄 ✅RDB和AOF的写回策略分别是什么?

打开文档:✅RDB和AOF的写回策略分别是什么?

📄 ✅Redisson和Jedis有啥区别?如何选择?

打开文档:✅Redisson和Jedis有啥区别?如何选择?

> 布隆过滤器是啥?缺点是什么?误判、无法删除。怎么解决?

📄 ✅什么是布隆过滤器,实现原理是什么?

打开文档:✅什么是布隆过滤器,实现原理是什么?

📄 ✅布隆过滤器有什么缺点,如何解决?

打开文档:✅布隆过滤器有什么缺点,如何解决?

> Redis除了用来作缓存,还能干啥?排名、消息队列、经纬度。

📄 ✅除了做缓存,Redis还能用来干什么?

打开文档:✅除了做缓存,Redis还能用来干什么?

> synchronized****是如何保证的原子性、有序性和可见性? > > 如果你要加锁,在syn和reentrantLock之间选哪个?为什么?偏向锁为啥别废弃、

📄 ✅synchronized是如何保证原子性、可见性、有序性的?

打开文档:✅synchronized是如何保证原子性、可见性、有序性的?

📄 ✅synchronized和reentrantLock区别?

打开文档:✅synchronized和reentrantLock区别?

📄 ✅为什么JDK 15要废弃偏向锁?

打开文档:✅为什么JDK 15要废弃偏向锁?

> 线程池执行业务逻辑,如何实现3秒钟如果不返回就抛异常结束? > > 10个线程模拟赛马,实现功能:所有马ready之后一起开跑,全部到终点之后再宣布成绩?

📄 ✅线程池中怎么设置超时时间?一个线程如果要运行10s,怎么在1s就抛出异常

打开文档:✅线程池中怎么设置超时时间?一个线程如果要运行10s,怎么在1s就抛出异常

📄 ✅10个线程模拟赛马,所有马就绪后才能开跑,所有马到达终点后裁判宣布赛马成绩

打开文档:✅10个线程模拟赛马,所有马就绪后才能开跑,所有马到达终点后裁判宣布赛马成绩