作为一名2024年的应届双非硕士,我最终签约于杭州的一家国企(某研发中心)。虽然这也算不上绝对的成功,但我参与了数十场面试,时间跨度从去年的6月到11月。以下是我总结的一些富有代表性和深度的面试问题,期待这些经验能够帮助大家顺利找到适合自己的工作。

网易

第一面试环节

  1. 线程池的核心线程数是如何设定的?(扩展:那么最大线程数又是如何设定的?)
  2. nacos与zookeeper的区别及各自的优势是什么?
  3. 你是否使用过配置中心?
  4. 了解CAP定理吗?nacos和zookeeper分别属于CP还是AP,为什么?
  5. 你是否了解过Dubbo版本的迭代历史?
  6. 请写一个SQL查询,找出信息表(name, object, score)中总成绩大于90的学生信息。
  7. 请谈谈缓存击穿问题,你会如何解决?
  8. 如果redis中有上万条数据,你会如何更快地进行查询?(不考虑二分查找)
  9. git cherry-pick的用途是什么?
  10. 什么是逃逸?是否所有对象都在堆上分配内存?

第二面试环节

  1. 请进行自我介绍。
  2. 简要介绍一个项目。
  3. 为什么ES检索的速度会比MySQL快?
  4. 请简单描述一下Dubbo及其作用。
  5. 除了Dubbo,你是否会使用其他类似的工具?请简单介绍一下。
  6. Dubbo的网络层是如何实现的?如何实现自定义协议?
  7. 请简单描述TCP的拥塞控制及其目的。
  8. Java中的Map有哪些实现?
  9. 你了解TreeMap吗?它是如何保持Map中键的有序性的?
  10. 请解释CPU利用率的含义及其解释。
  11. 如何确保某台机器上的CPU利用率保持在60%?
  12. 死循环时,CPU利用率会是多少?
  13. MySQL事务的实现方式是什么?
  14. nacos与zookeeper的差异。
  15. 你最近读过哪些书?
  16. 是否关注过一些新技术?
  17. 有什么问题想要反问我?

百度

提前批第一面试环节

  1. 请简单介绍一下七层网络与四层网络的区别。
  2. 四层网络中常见的协议有哪些?
  3. UDP与TCP的区别是什么?
  4. 模拟TCP建立连接的场景问题。
  5. SQL语句的执行过程是什么?使用什么命令查看执行状态?
  6. Redis中有哪些常用的数据结构?
  7. 请设计一个签到系统,并解释位图压缩的方法。
  8. Redis的持久化操作方式是什么?
  9. 在Linux中,如何查看资源配比?(使用命令如top及load average)
  10. 如何查看Linux的磁盘/文件使用情况?(使用df和du命令)
  11. 请讲解Redis分布式锁的机制。
  12. MQ中的延时队列是如何实现的?
  13. 给定有序数组,找到目标元素的起始与结束下标(使用二分法,需要递归)。

中兴

第一面试环节

  1. 请提供在校成绩及六级成绩。
  2. 请解释多态的概念。
  3. 你对多线程有何认识?
  4. 什么是抽象类?它的特点是什么?
  5. 请讲解Python的可变数据类型与不可变数据类型的区别。
  6. Redis有哪些显著特点?
  7. 列举几种进程间通信的方式。
  8. 实现互斥的方式有哪些?
  9. 通过学生表与成绩表找出排名前10的学生姓名。
  10. 关于奖项情况的相关问题。
  11. 请谈谈你在其他公司面试的经历。
  12. 你有什么问题想要反问我?

滴滴

第一面试环节

  1. 请进行自我介绍。
  2. 请描述秒杀的流程。
  3. 如何防止超卖现象?
  4. 请解释分布式锁(如redission)相关内容。
  5. 超时未支付的处理方式,例如使用延时队列依赖于死信队列。
  6. Redis中的常用数据结构。
  7. 你了解bitmap吗?请描述它的常见应用场景及优势。
  8. 请解释缓存雪崩、缓存击穿与缓存穿透的区别。
  9. 如果热点key过期,如何确保用户不察觉查询数据库的过程?(使用双key等方法)
  10. Redis sentinel的作用是什么?
  11. 主从切换的原因是什么?
  12. B树与B+树的应用场景比较。
  13. NOT IN条件是否一定走索引?
  14. 请解答一道算法题。

联想

第一面试环节

  1. 请进行自我介绍。
  2. 你的籍贯是哪里?
  3. 为什么选择在天津工作?
  4. 你是否有其他正在投递的公司?
  5. 对于互联网或国企,你的倾向是什么?
  6. 请介绍一个项目。
  7. 你在哪些方面进行了调优?
  8. 请讲解RabbitMQ的异步与削峰机制,以及如何保证消息的顺序消费。
  9. Redis如何防止超卖现象?
  10. 为什么选择Redis+Lua而非Redission?
  11. 你了解Redission吗?(守护线程的概念)
  12. QPS提升2.1倍的含义?
  13. MQ如何提高QPS,为什么会提升80%以上?
  14. MySQL的吞吐量。
  15. QPS与TPS的区别。
  16. 请解释缓存穿透与缓存击穿的概念,以及布隆过滤器的使用。
  17. 类加载机制的概念。
  18. 垃圾回收器的算法,尤其是G1的特点。
  19. 标记复制与标记整理哪个会产生内存碎片?
  20. 请讲解AQS的概念。
  21. 索引失效可能出现的场景。
  22. MVCC解决了哪些问题?
  23. MQ消息积压的原因与解决方式。
  24. 在Linux中使用哪些命令?
  25. 分布式事务是如何处理的?
  26. 为什么网络通信中使用三次握手与四次挥手?
  27. 请描述责任链模式与策略模式。
  28. 在git中如何创建分支?
  29. 如何防止超卖现象?
  30. 请设计秒杀场景。
  31. 反转链表与旋转链表的实现。

字节跳动

提前批第一面试环节

  1. 请进行自我介绍。
  2. CSDN通常会发布哪些内容?
  3. 作为研究生,选择Java后端的原因是什么?
  4. 在电商系统中遇到过哪些场景?是否有实际的开发经验?
  5. 使用RabbitMQ如何优化Redis?为什么引入RabbitMQ能够提高速度?
  6. 如果不使用RabbitMQ,实际操作会如何进行?
  7. 说明一下超卖的实现过程,以及用户排队页面的表现形式。
  8. JVM内存模型中,哪些部分是公有的,哪些是私有的?
  9. 堆的作用是什么?
  10. 创建对象是否一定在堆上进行?每次创建对象都是在堆上申请内存吗?
  11. 常量池放在方法区与堆上的区别是什么?如何影响GC的轻量回收?
  12. 多个线程创建对象时,如何实现线程安全?
  13. 请讨论Paxos与Raft算法。
  14. 请给出小于N的最大数的定义。
  15. 你还有什么问题想要反问我?

提前批第二面试环节

  1. 请列举比较常见的树及其应用场景。
  2. 不同生产环境需要采用不同的树(如数据库索引中的B+树对比其他树)。
  3. HashMap在什么条件下会使用红黑树?(树化条件)
  4. HashMap为何不考虑使用AVL树?(AVL性能开销较大)
  5. Redis中的HashMap是如何实现的?
  6. 设计一个MQ会具备哪些特性?(解耦、削峰、异步等)
  7. MQ如何设计以支持大量请求的存储能力?(采用循环的策略)
  8. Redis中预减库存的实现方式是什么?
  9. Redis已扣减库存,但最后未能发货的情况如何处理?
  10. 如何衡量系统的性能?
  11. 如果压测未达到预期,如何检查和优化?
  12. 你的项目是否使用Redis集群?