阿里巴巴
Set 1
一面
- 项目中用了
RabbitMQ,问:如果网络抖动,怎么确保消息能准确无误的被消费? - 有用过
Dubbo和ZooKeeper吗? - 讲一下
Redis有哪些基本数据类型。hash底层是如何实现的?zset是如何实现的? - 讲一下跳跃表的实现。
- 缓存穿透和缓存击穿讲一下。
Redis哨兵讲一下。 如果主服务器挂了,哨兵是如何选举一个从服务器来充当主服务器的?Redis的分布式锁怎么实现的? 你觉得redis分布式锁会有什么问题?Redis的主从复制有了解吗?如何实现主从复制的?Spring用过吗,AOP底层实现原理是什么?- 知道
Cglib的实现机制吗? Spring事务知道吗?- 有过排查
MySQL的经验吗?什么是慢查询? MVCC介绍一下。MySQL的主从复制通过什么来实现的?- 讲一下
TCP三次握手。为什么需要三次握手? synchronized的锁升级过程讲一下。AQS知道吗,具体讲一下内部实现原理。- 你刚才有说到
volatile,具体讲一下。 i++能用volatile禁止指令重排序吗?- 知道
CountDownLatch是什么吗? ThreadLocal知道吗,说一下。
字节跳动
Set 1
一面
- 介绍项目。
MySQL索引数据结构,哈希索引介绍下。MVCC介绍,如何在可重复读发挥作用?快照读是什么意思?HashMap介绍下,HashMap安全吗?如何实现线程安全的HashMap?Synchronized和ReentrantLock的区别。- 什么是
AQS,介绍一下。 volatile语义,虚拟机如何实现volatile?- 你说的主存指的是什么?和主存对应的是什么?主存和堆是什么关系?
算法题:
- 说下堆的插入过程。
- 找出二叉树中两个指定节点的距离。
二面
- 详细问项目。
thrift了解多少,说下你对RPC的理解。- 介绍下
kafka都有哪些组件。 ES如何保证高可用?Redis数据结构。Redis速度为什么快?啥叫I/O多路复用?select和poll有什么区别?Redis用的是哪个?
算法题:
Z字形打印二叉树。- 一只青蛙可以跳
1-6格,到终点一共100格,有多少种不同的跳法?
Set 2
一面
- 自我介绍。
- 说说项目。
- 做个算法题:求给定字符串的最长无重复字符子串。
- 深拷贝和浅拷贝。
- 用过哪些
Java锁?它们的区别。 - 线程和进程的区别。
- 说说线程池。
- 说说了解的网络知识。
- 应用层什么协议?
- 传输层什么协议?
TCP三次握手。- 说说用过的
Linux命令。 - 用过什么监视系统状态的命令(内存,网络,外存,端口)。
- 是否用过监视端口的命令?
二面
- 说说
Java字节码。 - 进程和线程的区别。
- 一个进程能否访问到另一个进程的内存?
Java线程和系统线程的区别。HTTP是否在传输层可以使用UDP?TCP和UDP的区别。- 如果把
UDP加上建立连接断开连接机制和报文序号,它是否就变成了TCP。 TCP传输过程中丢包怎么办?- 一个情景题:如果让你设计一个传输层协议,发送方的报文有序号但不是连续增长(如序号是
1、3、5、6、9),且不一定按顺序到达接收方(可能到达顺序会是3、6、1、5、9),接收方需要采取什么样的存储方法:这个和面试官扯了半天,其实就是想考察怎样顺序存储一组乱序插入的不连续数字,同时考虑时间空间复杂度。用线性表二分查找插入、二叉堆都面试官都不满意,最后提示树,遂答二叉查找树。
Set 3
一面
- 项目(直接问了
25 min)。 HashMap讲一下。- 线程的同步机制。
- 线程安全。
OSI七层模型。- 三次握手,四次挥手。
TCP、UDP区别。- 智力题:
A,B丢硬币,硬币正反概率均为1/2,先丢到正面的人赢,A先丢,问A,B赢的概率。 - 算法题:
LeetCode 42接雨水。
二面
- 你是怎么学
Java的。 GC讲一下。GC算法。GC是如何分代的?- 为什么
GC要进行分代? - 进程,线程,协程。
- 进程通信机制。
- 线程通信机制。
- 在浏览器输入网址会发生什么?
HTTP和HHTP的区别。- 算法题: 剑指
Offer 41数据流的中位数。
三面
- 自我介绍。
- 操作系统内存管理。
- 自旋锁。
- 哈希表。
hashCode方法的底层实现。- 防止哈希冲突的方法。
- 链表与数组的区别,常用场景。
- 数据库索引的数据结构?为什么是
B+树? B+树的结构讲一下。B+树的时间复杂度?AVL树的时间复杂度?两者区别?AVL树不能做索引吗?为什么?B+树与B树的对比?那为什么不用B树做数据库索引?- 智力题:有
n个苹果,两个人去取,每次只能取一个或两个,取到最后一个就输,请问有没有必胜的方法,你应该先取还是后取? - 算法题:
LeetCode 209长度最小的子数组。
Set 4
- 问项目,数据库怎么设计的,权限管理怎么做的。
MySQL的引擎了解哪些?InnoDB和MyISAM有什么区别?MySQL的锁,间隙锁,乐观锁,悲观锁怎么实现?CAS有什么问题?MVCC是什么?Redis了解吗?了解什么?Redis会出现什么问题?缓存雪崩是什么?缓存穿透是什么?怎么解决?- 布隆过滤器是怎么实现的?除了布隆过滤器
Redis还有什么高级数据结构? Redis集群了解吗?- 输入
URL之后的过程? DNS劫持了解吗?ARP详细说说。HTTP/1.0和HTTP/1.1和HTTP/2.0有什么区别?HTTPS和HTTP有什么区别?怎么实现加密的?HTTPS怎么实现负载均衡的?有哪些负载均衡的算法?
京东
Set 1
一面
- 二叉搜索树的特点。
- 实现平方根,二分法怎么实现?
- 链表如何判断有环?
HashMap的底层实现。- 线程安全的集合。
- 实现线程安全的机制。
ConcurrentHashmap的底层实现。- 数据库锁的隔离级别。
- 数据库存储引擎,实现事务的是哪个?
- 数据库的索引结构?
B树为什么可以做索引?- 红黑树的特点?红黑树和一般
AVL树的区别?谁的查找效率高? - 跳表的结构?
二面
- 介绍项目。
- 项目怎么发布到生产环境中的?
volatile的使用?具体场景。CAS是什么?怎么解决ABA问题?具体方法是哪个?- 介绍对称加密和非对称加密。
Linux的基本命令了解吗?- 项目中数据库表是怎么设计的?
- 怎么设计全局
ID? - 怎么在分布式条件下设计全局
ID?