头条、美团、滴滴、京东等大厂面试题

头条

  1. 聊项目,画项目架构图,画一个用户从发起请求到接收到响应,中间经过哪些服务,每个服务做什么事情的流程图。

  2. 讲项目中的难点、挑战,你是如何解决的?

  3. Redis 中有几种类型 & 各自底层怎么实现的 & 项目中哪个地方用了什么类型,怎么使用的?

  4. Redis如何实现分布式锁,zk如何实现分布式锁,两者的区别。如果service还没执行完,分布式锁在Redis中已经过期了,怎么解决这种问题?

  5. synchronized底层实现,加在方法上和加在同步代码块中编译后的区别、类锁、对象锁。

  6. 锁升级的过程。

  7. Java运行时区域及各个区域的作用、对GC的了解、Java内存模型及为什么要这么设计?

  8. 对索引的理解,组合索引,索引的最佳实践

  9. countDownLatch用过没有,在项目中如何使用的,对AQS的了解。

  10. 写生产者消费者问题,考虑高并发的情况,可以使用Java 类库,白纸写代码。

  11. 设计一个发号器,考虑集群和高并发的情况,要求发号器生成的id是递增趋势,通过id可以区分出来是今天生成的id还是昨天生成的id,但是生成的id中不能直接带有日期,要具有一定的混淆功能,白纸写代码。

  12. 一个二位数组,每个元素都可以往上下左右四个方向走,寻找最长递增路径。如下图所示,最长递增路径即红色字体路径。白纸写代码。

    image-20190924230411189

美团

  1. 数据库和缓存的一致性问题。先更新数据库,再更新缓存,若更新完数据库了,还没有更新缓存,此时有请求过来了,访问到了缓存中的数据,怎么办?

  2. 聚簇索引/非聚簇索引,MySQL索引底层实现,为什么不用B-Tree,为什么不用hash,叶子结点存放的是数据还是指向数据的内存地址,使用索引需要注意的几个地方?

  3. MySQL默认的事务隔离级别,MVCC、RR怎么实现的?RC如何实现的?

  4. MySQL间隙锁有没有了解,死锁有没有了解,写一段会造成死锁的SQL语句,死锁发生了如何解决,MySQL有没有提供什么机制去解决死锁

  5. 谈下对GC的了解,何为垃圾,有哪些GC算法,有哪些垃圾回收器,cms和g1的区别,还有一个直击灵魂的问题,看过cms的源码吗?

  6. 有没有排查过线上OOM的问题,如何排查的?

  7. 有没有使用过JVM自带的工具,如何使用的?

  8. 假设有下图所示的一个Full GC 的图,纵向是内存使用情况,横向是时间,你如何排查这个Full GC 的问题,怎么去解决你说出来的这些问题?

    image-20190924230348754

  9. 说说对Java中集合类的理解,项目中用过哪些,哪个地方用的,如何使用的?

  10. 对CAS的理解,CAS带来的问题,如何解决这些问题?

  11. volatile底层、synchronized底层、锁升级的过程、MESI

  12. Ehcache支持哪些缓存?

  13. JUC有研究没有,讲一讲?

  14. 聊项目,画项目架构图,画一个用户从发起请求到接收到响应,中间经过哪些服务,每个服务做什么事情的流程图。

  15. 讲项目中的难点、挑战,如何解决的,项目这一块会问的特别细。

  16. 如何保证RocketMQ 消息的顺序性,如何解决重复消费问题。

  17. 项目中如何保证接口的幂等操作。

  18. 讲一讲对Redis 的了解,项目中如何使用的,哪个地方使用的,为什么要使用?

  19. 哨兵机制、Redis 两种备份方式的区别,项目中用的哪种,为什么?

  20. 讲一讲对分布式锁的了解

  21. 项目中系统监控怎么做的?

  22. 如何理解Spring中的AOP 和 IOC,以及DI,读过Spring源码没有?

  23. 读过MyBatis源码没有?

  24. 说一个你了解最多的框架,说出你的理解。

  25. 如何理解分布式事务,为什么会出现这个问题,如何去解决,了解哪些分布式事务中间件?

  26. 聊一聊对分库分表的理解。

  27. Hystrix功能和在项目中怎么使用的?Hystrix怎么检测断路器是否要开启/关闭?Hystrix实现原理?除Hystrix之外的其他熔断限流中间件有了解没有,了解多少说多少?

  28. Dubbo有了解没有?

  29. 怎么理解Java 中和 MySQL中的乐观锁、悲观锁?

  30. 一致性hash

滴滴

  1. 聊项目,画项目架构图,画一个用户从发起请求到接收到响应,中间经过哪些服务,每个服务做什么事情的流程图,讲数据库设计。
  2. 处理过线上OOM问题没有,如何处理的?
  3. 遇到过线上服务器CPU飙高的情况没有,如何处理的?
  4. 线上有没有遇到其他问题,如何处理的?
  5. 对线程池的理解,项目中哪个地方使用了,如何使用的,用的Excutor框架中的哪个实现类,为什么用这个
  6. 对CAS的理解,CAS带来的问题,如何解决这些问题?
  7. volatile底层、synchronized底层、锁升级的过程、MESI
  8. 对MySQL索引的理解、对组合索引的理解、索引的最佳实践
  9. 分布式锁的实现、对比Redis分布式锁 & ZK分布式锁
  10. 唯一ID如何实现的,Snowflake实现原理,Snowflake有哪些问题,如何避免根据订单号可以推算出今天的订单量
  11. 如果线上一个功能是用栈结构实现的,使用过程中要注意哪些问题,为什么?
  12. 怎么理解线程安全?
  13. 怎么理解接口幂等?项目中如何保证的接口幂等?
  14. 怎么理解微服务,服务如何划分,可以从哪几个方面去划分,为什么这样划分,微服务带来了哪些好处,哪些坏处,如何看待这个问题?
  15. 如何理解网关,网关带来的好处和坏处,如何解决
  16. Hystrix功能 & 在项目中怎么使用的 & Hystrix怎么检测断路器是否要开启/关闭 &Hystrix实现原理
  17. 怎么理解命令模式和观察者模式,手写一个观察者模式或者命令模式的代码,策略模式也行
  18. 掌握哪些设计模式,常用哪些,项目中如何使用的,为什么用这个,不用那个?手写一个线程安全的单例模式
  19. 如何设计一个秒杀系统?
  20. 如果我现在就是要实现每秒10w请求,不能熔断限流,如何去设计?
  21. 假设现在双十一零点,大量下单请求,如何对这些订单进行分库分表,为什么?
  22. 服务A调用服务B中一个接口,服务B调用服务C中一个接口,如何实现若服务B响应服务A成功,则服务C一定响应服务B成功,需要考虑系统性能问题?
  23. 递归使用中有什么需要注意的地方,递归写法一般可以用什么去替换?
  24. 有两个表,table a,table b,写SQL查询出仅在table a中的数据、仅在table b中的数据、既在table a 又在table b 中的数据?
  25. Spring 源码有了解没有?
  26. MyBatis源码有了解没有?
  27. MySQL事务隔离级别、MVCC?

京东

  1. 一个final修饰的属性,定义的时候没有初始化,在无参构造函数中初始化,可以吗,为什么
  2. 说说对Java中集合类的理解,项目中用过哪些,哪个地方用的,如何使用的,为什么不用其他的集合类
  3. HashMap,concurrentHashMap底层实现
  4. List删除是怎么实现的,遍历的时候可以删除吗?为什么?
  5. Redis中有哪些数据结构,了解过其底层怎么实现的吗,和Java中相似的数据结构的对比?
  6. Redis是单线程的还是多线程的,为什么这么快?
  7. Redis Hash中某个key过大,变为String类型的大key,怎么处理,使用中如何避免出现这种问题?
  8. 设计模式在项目中哪个地方用到了,怎么使用的,能不能画一个你熟悉的设计模式的UML图,手写单例模式,手写静态内部类实现的单例模式。
  9. 讲一讲MySQL索引,实际工作中,哪些场景用了B+Tree索引,哪些场景用了hash索引?
  10. explain 可以看到哪些信息,什么信息说明什么,explain的结果列讲一下
  11. Spring源码看过没有,会多少讲多少?
  12. MyBatis源码看过没有,会多少讲多少?
  13. CAS的缺点,如何解决?
  14. AQS、countDownLatch如何实现?
  15. 线程池如何实现,核心线程数和最大线程数设置成多少,为什么这么设置,项目中哪个地方使用了线程池,使用时需要注意什么
  16. MySQL事务隔离级别,幻读,脏读,项目中用什么事务隔离级别,为什么?
  17. volatile底层原理、synchronized实现机制
  18. 对XA、TCC的理解,了解哪些分布式事务框架,有什么缺点?
  19. Feign 和 Dubbo,了解多少说多少?
  20. Eureka 和 Zookeeper,了解多少说多少?
  21. Hystrix 和 sentinel,了解多少说多少?
  22. Spring Cloud Alibaba,了解多少说多少?
  23. 对分库分表、读写分离的了解,了解多少说多少?
  24. 画一下Java 线程几个状态及状态之间互相转换的图?
  25. 聊项目,画项目架构图,画一个用户从发起请求到接收到响应,中间经过哪些服务,每个服务做什么事情的流程图,讲数据库设计具体到部分表中有哪些字段?
  26. 部门体量比较大,可能需要加班,到凌晨两三点的那种,也可能通宵,通宵是大促期间,你能接受吗?
  27. 也会加班到十点,这个不是大促期间,但也不是每天,非常态情况,你能接受吗,你在哪里住,过来要多久,有男朋友吗?

火币

  1. Kafka 如何保证消息顺序消费、在consumer group 中新增一个consumer 会提高消费消息的速度吗、那如果我想提高消息消费的速度,我要怎么办?
  2. Redis几种数据结构及底层,项目中如何使用的Redis?
  3. 哨兵机制、选举算法
  4. 一致性hash
  5. Redis是单线程的还是多线程的,为什么速度这么快?
  6. 多路复用的几种方式以及区别?
  7. 对线程池的理解,在项目中如何使用的,多个线程之间如何共享数据,多个进程之间如何共享数据?
  8. HashMap、concurrentHashMap的区别及底层实现、HashMap和HashTable 的区别?
  9. 什么是红黑树,什么是B-Tree,为什么HashMap中用红黑树不用其他树?
  10. 对MySQL索引的理解,为什么MySQL索引中用B+Tree,不用B-Tree 或者其他树,为什么不用hash 索引?
  11. 数据库和缓存的双写一致性问题?

每日一淘

  1. 用过哪些Object类的方法,如何使用的
  2. Java如何实现序列化的,Serialization底层如何实现的
  3. countDownLatch如何实现的
  4. 项目中监控报警机制如何做的,说说你的了解
  5. 线上服务器CPU飙高,如何处理这个问题
  6. 服务A调用服务B,用户请求服务A,发现返回较慢,如何定位这个问题
  7. TIME_WAIT是什么状态还记得吗,什么情况下网络会出现这个状态

linkedme

  1. 内核态和用户态、cas 和 sout 哪个用到了内核态和用户态的切换
  2. 哪些典型的应用用的是UDP?
  3. 线程池有了解吗,项目中如何使用的?
  4. 计算密集型/IO密集型任务分别如何设置线程池的核心线程数和最大线程数,为什么这么设置?
  5. 假如我下午5点要和5个人一起开会,但是这5个人现在都出去了,不在公司,但是今天会回来,问,我如何开这场会,用Java 并发方面的知识回答。

算法题

  1. [1,1,2,2,3,4,4,5,5,5] 找出不重复的元素(黄包车)

  2. 反转链表,要求时间复杂度O(N),空间复杂度O(1) (火币)

  3. 非递归实现斐波那契数列 (爱奇艺)

  4. 这一周股市价格为[2,6,1,4,8],求哪一天买入哪一天卖出,可获得最大收益,最大收益为多少 (爱奇艺)

  5. 按照箭头方向查找二叉树 (金山云)

    image-20190924230728819

  6. 表a b c之间用ID关联,求阴影部分的数据 (金山云)

    image-20190924230750484

  7. 一个整形无序数组,里面三个数只和等于一个目标值,求这三个数 (小米)

  8. 链表问题 (小米)

    image-20190924230830166

  9. 扑克牌问题 (小米)
    有十张扑克牌,从上面开始抽,抽出一张放桌子上,然后再抽出一张放扑克牌的最下面,这样循环往复的操作,直到手里的牌都没有了。这时,桌子上牌的顺序正好是1 2 3 4 5 6 7 8 9 10。要求写代码求出原顺序

  10. 手写大顶堆 (linkedMe)

  11. 手写LRU 算法 (火币)

  12. 字符串相加 (滴滴)
    两个数字类型的字符串,直接转int或者double肯定都放不下,然后求这两个数的和,返回值还是字符串,15分钟时间,要求无Bug

  13. 寻找目标值位置 (滴滴)
    有一个二维数组,数组横向有序,纵向有序,求目标值的位置,10分钟时间

  14. 求字符串“efabcbaefehiabcba”中最长的回文数,不去重(美团)

  15. 反转int类型的值x,不要借用String,只用int 即可。&& 针对该程序,写出其应有的测试用例 (美团)

  16. top K 问题(每日一淘)