记录一次面试的题和自己的一些理解,通常一般都是自我介绍,项目介绍,问问业务以及后面就是吧拉吧拉的技术细节,反正一句话 “面试过程都是一连串的连环 Q”。如果大家觉得这些问题都能够游刃有余的回答大家出去拿一个高级的 title 问题不大。
分布式锁部分
- redis 分布式锁超时后,第二个线程进入过后会有什么影响?
- 分布式锁锁超时如何实现?
- 2000 个线程持有锁如何续期呢?
- 锁不设置过期时间有什么问题?
- 分布式锁如何实现锁重入?
J.U.C 部分
- ReentrantLock 公平和非公平?
非公平加锁过程
- 直接加锁 (加锁)
- 无锁加锁,判断重入 (加锁)
- 入队前加锁(加锁)
- pack
- 无锁加锁,判断重入 (加锁)
- 入队前加锁(加锁)
- pack
- ReentrantLock 解锁过程?
- synchronized 锁升级过程 ?
- 偏向锁如何升级为轻量级锁?
- volatile 如何保证可见性?
- 内存屏障怎么加的?
- 读写屏障怎么加的?
Redis 部分
- redis 过期策略?
- lru 优化 , lru-1 ==> lru-k 就是说一个历史队列,和一个缓存队列 冷热数据分离,优先清理冷数据
- lfu 存在问题,就是会有一个引用计数,内存占用很高。
- key 失效策略?
- redis 高可用集群
- 集群的区别?系统中如何选择?(什么时候用 redis sentinel? 什么时候用 redis cluster?)
- redis cluster 如何重新选举,选举过程中,需要考虑那些因素?
- 如果 salve 发现 master 不可用
- id 增加 记录集群的 currentEpoch + 1, 广播 FAILOVER_AUTH_REQUEST 信息
- **客户端应答(主节点参与选举):**收到其他其他的节点信息,每个节点都发一个 ack
- 过半机制,确认选举成功
- 最后广播到所有的节点
- redis 集群模式下,如何指定两个 key 在一个槽或者节点中。
MySQL 和索引
- 复合索引 a,b 列,查询命中两条数据索引中数据查询过程?
- mvcc 机制?
- binlog, redo log undo log 发生的顺序。
文章图片
参考:zhuanlan.zhihu.com/p/213770128
- 如果事务提交了 binlog 没有记录成功会怎么样?
Spring 部分 mybatis 的 bean 如何被注入的? 其实会更具 spring-starter 机制在 spring-boot 启动的时候,初始化配置类。
@mapper 注解如何被是转换为 bean 的 其实这里主要是通过 MapperFactoryBean 生成一个代理对象,然后注入进去。
原文链接:https://juejin.cn/post/7096838452636811272
推荐阅读
- Java|字节面试复盘(大厂究竟会问些什么呢())
- ctf|第二届“网刃杯”网络安全大赛 部分writeup
- java|2022版Java多线程&并发面试题总结(108道题含答案解析)
- 面试|软件测试面试题合集
- 移动开发|谷歌的 I/O 2019,究竟推出了什么新特性()
- springboot|java 基于springboot邮箱找回密码功能
- 人工智能|ai形状生成工具机器人_这是一个不存在的人的人工智能生成的艺术品
- 用Java实现远程帧缓冲服务器
- Redis实时发布/订阅