一面:
-
离职原因;
-
Zookeeper 在项目中的使用及原理;
-
Springcloud 的一些组件介绍;
-
分布式锁:
Redis 实现方式:
redis:为什么使用 setnx,或者说 set 和 setNx 有什么区别;
setNx:系统在 10:05 设置一个值,并给出 5 分钟的过期时间,系统刚刚 set 完之后 redis 集群崩溃,10:11 分系统重启成功,那么 redis 中 set 的值是否还存在?
考察点:
1、redis 的持久化:刚 set 完是否能够被持久化到快照或者 binlog 日志中;
2、假设 redis 被持久化,且系统重启时间超过了 redis 设置的过期时间,那么 key 是否会被清理;
zookeeper 实现方式:
-
多线程的创建方式:
1、继承 thread 类;
2、实现 runnable 接口;
3、实现 callable 接口;
4、线程池方式进行创建及每个参数之间的逻辑关系;
-
服务器 CPU 数量及线程池数量的关系;
1、服务器 cpu 数量(n);
2、是 IO 密集型(2n 个线程)应用还是计算密集型(n+1 个线程)应用;
-
Mysql 的 sql 优化
优化方向:
1、 Mysql 使用过程中走索引的语句:
2、 索引的优化:
3、 亿级的数据必须使用 like 进行查询,如何优化?
-
如何做一个秒杀系统;
1、MQ 做限流:保证只有 1000 个人可以访问系统;
2、使用 redis 做缓存;
3、redis 往 mysql 中进行持久化
-
自己认为自己的技术怎么样?
二面:
-
Mysql 是集群还是单节点;最大的表中数据量大约是多少?3000w-4000w;
-
Mysql 主从配置是 DBA 去做还是自己去做?mysql 主从同步的机制的原理?mysql 主从复制主要有几种模式?
-
Redis 持久化方式:rdb、aof;redis 中哪个版本开始可以对分布式使用;
-
Nginx 的使用场景;
1、请求转发;
2、负载均衡;
-
Spark 主要用来做什么的?
第三面至第八面所有面试题
1.ConcurrentHashMap 底层原理
2.手写一个 LRU
用 LinkedHashMap
3.HashMap 底层数据结构
4.为什么用红黑树不用普通的 AVL 树
5.为什么在 8 的时候链表变成树
6.为什么在 6 的时候从树退回链表
7.线程池 7 个参数,该怎么配置最好
8.说一下 volatile
9.volatile 的可见性和禁止指令重排序怎么实现的
可见性:缓存一致性协议
禁止指令重排序:JMM 模型里有 8 个指令完成数据的读写,通过其中 load 和 store 指令相互组合成的 4 个内存屏障实现禁止指令重排序
10.CAS 是什么
11.PriorityQueue 底层是什么,初始容量是多少,扩容方式呢
最小堆,
11,若原始大小<64,则扩容为原来的 2 倍+2,不然就扩容为原来的 1.5 倍
12.HashMap 的容量为什么要设置为 2 的次幂
13.你知道跳表吗,什么场景会用到
ConcurrentSkipListMap,用在多线程下