复盘
面试时间大约90分钟左右
- 简单的自我介绍
- 挑一个自己最熟悉的项目,讲解一下
- 我个人讲的是会员项目。千万级的客户会员管理分库分表实现以及登陆注册开放平台设计
- shardingsphere的分库分表规则怎么设置,业务讲清楚
- 你们的mysql每日的QPS大致是多少
开始基础问答
- Map的数据结构,大致说一下put方法的流程,如果key重复map是怎么处理的
- 多线程接触过吧,多线程的concurrentHashMap的size方法怎么统计数量的,你怎么设计一个size统计数量的方法
- 既然提到了volatile关键字,说一下为什么使用volatile吧
- volatile怎么保证可见性以及禁止指令重排的?什么是指令重排?
- 使用什么保证原子性?
- synorized会有什么问题?
- 说到自旋锁,能大致说下自旋锁的实现吗?目的是什么?使用自旋锁会导致什么问题?
- 使用过aop吗?aop的动态代理有哪几种?使用过aspect-j吗?能不能说一下它的原理?
- spring和springboot有什么区别?soringboot和springcloud有什么区别?
- springcloud里面都有哪些组件?
redis方面
- 你们使用到了redis的过期key通知策略,这个通知策略redis是怎么实现的?
- redis有哪些数据结构?
- list数据结构操作都有哪些命令?
- 说到了跳表,那你说下跳表是怎样的数据结构吧,如果要查询某个值,时间复杂度是多少?
- redis的几种数据类型里面,有哪几种使用了跳表?还是都使用了跳表?
数据库方面
- 你们都使用过哪些数据库?
- 说一下mysql的数据结构吧,mysql的索引存储结构,根据主键索引查询数据的时间复杂度?
- 说一下覆盖索引吧,有多个索引的时候数据结构是怎样的?最左前缀匹配原则讲一下吧,说下它的数据结构以及查询顺序。
网络方面
- 说一下常见的http响应码吧
- 300和302有什么区别?
- 三次握手和四次挥手说一下吧
linux服务器方面
- 常用的linux命令?
- 如何查看cpu?如何查看内存?
- 线上环境如何查看java的堆栈信息
jvm方面
- jvm常用的一些命令知道吗?查看堆栈信息的命令?
算法方面
- 说一下快排吧
- 还了解一些别的限流类的算法吗?
解决方案
- 让你设计一个秒杀系统,你怎么设计?前端页面都有哪些?