面试经验

170 阅读6分钟

阿里巴巴

Set 1

一面

  1. 项目中用了RabbitMQ,问:如果网络抖动,怎么确保消息能准确无误的被消费?
  2. 有用过DubboZooKeeper吗?
  3. 讲一下Redis有哪些基本数据类型。hash底层是如何实现的?zset是如何实现的?
  4. 讲一下跳跃表的实现。
  5. 缓存穿透和缓存击穿讲一下。
  6. Redis哨兵讲一下。 如果主服务器挂了,哨兵是如何选举一个从服务器来充当主服务器的?
  7. Redis的分布式锁怎么实现的? 你觉得redis分布式锁会有什么问题?
  8. Redis的主从复制有了解吗?如何实现主从复制的?
  9. Spring用过吗,AOP底层实现原理是什么?
  10. 知道Cglib的实现机制吗?
  11. Spring事务知道吗?
  12. 有过排查MySQL的经验吗?什么是慢查询?
  13. MVCC介绍一下。
  14. MySQL的主从复制通过什么来实现的?
  15. 讲一下TCP三次握手。为什么需要三次握手?
  16. synchronized的锁升级过程讲一下。
  17. AQS知道吗,具体讲一下内部实现原理。
  18. 你刚才有说到volatile,具体讲一下。
  19. i++能用volatile禁止指令重排序吗?
  20. 知道CountDownLatch是什么吗?
  21. ThreadLocal知道吗,说一下。

字节跳动

Set 1

一面

  1. 介绍项目。
  2. MySQL索引数据结构,哈希索引介绍下。
  3. MVCC介绍,如何在可重复读发挥作用?快照读是什么意思?
  4. HashMap介绍下,HashMap安全吗?如何实现线程安全的HashMap
  5. SynchronizedReentrantLock的区别。
  6. 什么是AQS,介绍一下。
  7. volatile语义,虚拟机如何实现volatile
  8. 你说的主存指的是什么?和主存对应的是什么?主存和堆是什么关系?

算法题:

  1. 说下堆的插入过程。
  2. 找出二叉树中两个指定节点的距离。

二面

  1. 详细问项目。
  2. thrift了解多少,说下你对RPC的理解。
  3. 介绍下kafka都有哪些组件。
  4. ES如何保证高可用?
  5. Redis数据结构。
  6. Redis速度为什么快?啥叫I/O多路复用?selectpoll有什么区别?Redis用的是哪个?

算法题:

  1. Z字形打印二叉树。
  2. 一只青蛙可以跳1-6格,到终点一共100格,有多少种不同的跳法?

Set 2

一面

  1. 自我介绍。
  2. 说说项目。
  3. 做个算法题:求给定字符串的最长无重复字符子串。
  4. 深拷贝和浅拷贝。
  5. 用过哪些Java锁?它们的区别。
  6. 线程和进程的区别。
  7. 说说线程池。
  8. 说说了解的网络知识。
  9. 应用层什么协议?
  10. 传输层什么协议?
  11. TCP三次握手。
  12. 说说用过的Linux命令。
  13. 用过什么监视系统状态的命令(内存,网络,外存,端口)。
  14. 是否用过监视端口的命令?

二面

  1. 说说Java字节码。
  2. 进程和线程的区别。
  3. 一个进程能否访问到另一个进程的内存?
  4. Java线程和系统线程的区别。
  5. HTTP是否在传输层可以使用UDP
  6. TCPUDP的区别。
  7. 如果把UDP加上建立连接断开连接机制和报文序号,它是否就变成了TCP
  8. TCP传输过程中丢包怎么办?
  9. 一个情景题:如果让你设计一个传输层协议,发送方的报文有序号但不是连续增长(如序号是13569),且不一定按顺序到达接收方(可能到达顺序会是36159),接收方需要采取什么样的存储方法:这个和面试官扯了半天,其实就是想考察怎样顺序存储一组乱序插入的不连续数字,同时考虑时间空间复杂度。用线性表二分查找插入、二叉堆都面试官都不满意,最后提示树,遂答二叉查找树。

Set 3

一面

  1. 项目(直接问了25 min)。
  2. HashMap讲一下。
  3. 线程的同步机制。
  4. 线程安全。
  5. OSI七层模型。
  6. 三次握手,四次挥手。
  7. TCPUDP区别。
  8. 智力题:AB丢硬币,硬币正反概率均为1/2,先丢到正面的人赢,A先丢,问 AB赢的概率。
  9. 算法题:LeetCode 42 接雨水。

二面

  1. 你是怎么学 Java 的。
  2. GC讲一下。
  3. GC算法。
  4. GC是如何分代的?
  5. 为什么GC要进行分代?
  6. 进程,线程,协程。
  7. 进程通信机制。
  8. 线程通信机制。
  9. 在浏览器输入网址会发生什么?
  10. HTTPHHTP的区别。
  11. 算法题: 剑指 Offer 41 数据流的中位数。

三面

  1. 自我介绍。
  2. 操作系统内存管理。
  3. 自旋锁。
  4. 哈希表。
  5. hashCode方法的底层实现。
  6. 防止哈希冲突的方法。
  7. 链表与数组的区别,常用场景。
  8. 数据库索引的数据结构?为什么是 B+ 树?
  9. B+树的结构讲一下。
  10. B+树的时间复杂度?AVL树的时间复杂度?两者区别?AVL树不能做索引吗?为什么?
  11. B+树与B树的对比?那为什么不用B树做数据库索引?
  12. 智力题:有 n 个苹果,两个人去取,每次只能取一个或两个,取到最后一个就输,请问有没有必胜的方法,你应该先取还是后取?
  13. 算法题:LeetCode 209 长度最小的子数组。

Set 4

  1. 问项目,数据库怎么设计的,权限管理怎么做的。
  2. MySQL的引擎了解哪些?InnoDBMyISAM有什么区别?
  3. MySQL的锁,间隙锁,乐观锁,悲观锁怎么实现?
  4. CAS有什么问题?
  5. MVCC是什么?
  6. Redis了解吗?了解什么?
  7. Redis会出现什么问题?缓存雪崩是什么?缓存穿透是什么?怎么解决?
  8. 布隆过滤器是怎么实现的?除了布隆过滤器Redis还有什么高级数据结构?
  9. Redis集群了解吗?
  10. 输入URL之后的过程?
  11. DNS劫持了解吗?ARP详细说说。
  12. HTTP/1.0HTTP/1.1HTTP/2.0有什么区别?
  13. HTTPSHTTP有什么区别?怎么实现加密的?
  14. HTTPS怎么实现负载均衡的?有哪些负载均衡的算法?

京东

Set 1

一面

  1. 二叉搜索树的特点。
  2. 实现平方根,二分法怎么实现?
  3. 链表如何判断有环?
  4. HashMap的底层实现。
  5. 线程安全的集合。
  6. 实现线程安全的机制。
  7. ConcurrentHashmap的底层实现。
  8. 数据库锁的隔离级别。
  9. 数据库存储引擎,实现事务的是哪个?
  10. 数据库的索引结构?
  11. B树为什么可以做索引?
  12. 红黑树的特点?红黑树和一般AVL树的区别?谁的查找效率高?
  13. 跳表的结构?

二面

  1. 介绍项目。
  2. 项目怎么发布到生产环境中的?
  3. volatile的使用?具体场景。
  4. CAS是什么?怎么解决ABA问题?具体方法是哪个?
  5. 介绍对称加密和非对称加密。
  6. Linux的基本命令了解吗?
  7. 项目中数据库表是怎么设计的?
  8. 怎么设计全局ID
  9. 怎么在分布式条件下设计全局ID