探探
一面
项目相关
算法
-
输入一个不含相同整数的整数集合,输出所有子集
输入:[1,2,3]
输出:[[],[1],[2],[3],[1,2],[1,3],[2,3],[1,2,3]] -
有三十瓶水,十个桶,每个桶能放0-10瓶水,有多少种方案
-
一个整数数组,只有一个数字出现一次,其余都是出现两次,找出只出现一次的数字
Java基础
- HashMap实现,扩容机制
- ConcurrentHashMap 如何实现线程安全
MySQL
- B树和B+树区别
- 聚簇索引和非聚簇索引的区别
- MySQL主从同步如何实现
- MVCC有什么作用
- 数据库组合索引,最左匹配原则,组合索引B,C,D 查询D,where条件使用B是否会回表
Redis
- Redis单线程为何能支撑高并发
- Redis string 和 zset的实现
- Redis I/O多路复用如何实现
Kafka
- Kafka数据索引如何实现
- Kafka如何保证高可用
设计题
- 设计一个FIFO队列的数据结构(数据类型为整数),有三种操作:push(往队列末位插入一个整数),pop(从队列前面获取一个整数),getMax(查询队列里面最大的整数)
- 设计一个朋友圈点赞功能的数据表(不限于MySQL,Redis等)
知乎
一面
项目相关
算法
- 给你一个 n * m 的二维整数数组,数字都是大于等于0,现在要你对数组做一种操作,对于所有0,将0所在的行和列全部变为0。要求使用尽量少的空间和时间。
Redis
- Redis的数据结构和对应的实现
- 跳跃表的底层实现
计算机网络
- TCP 的三次握手和四次挥手
二面
算法
- 给你一个整数数组,数组中的元素定义一种距离 d[i] 为将数组排序后,该元素移动的距离,现在给你一个K数组,即数组中所有元素的距离d <= k,对这个K数组排序,希望尽量小的时间复杂度。
- 给你一个单向链表,给这个链表做K反转,例如 k=3
1 -> 2 -> 3 -> 4 -> 5 -> 6 反转后为: 3 -> 2 -> 1 -> 6 -> 5 -> 4
链表长度保证为K的倍数
JVM
- JVM内存区域模型,那些为线程私有,线程共享
- JVM如何判断对象是否需要回收
- 有哪些GC Root
- 常见GC收集器
- 分代收集是怎么做的,为什么要使用分代收集
- 有这样一个场景: 在一个系统中发现CPU飙升到100%,服务一直在运行。如何进行分析