淘宝|蚂蚁|菜鸟|盒马|滴滴|饿了么面经,已拿多个 offer(Java 岗)
分享来自两位同学的面试综合,他们分别拿到了菜鸟、嘀嘀、盒马的多个 offer,由于面试的时间跨度时间太长,且面试的部门太多,只能回忆到具体的面试题,无法再具体区分出几面了,但是面试真题还是可以拿出来分享一下,且看正文。
菜鸟 &滴滴
这些来自第一位同学分享的面试题,由于过于优秀,同时面试几个大厂都已拿到 offer,他只能回忆到一些重点的问题。
JVM 内存溢出排查?
根据他的描述,JVM 内存溢出的排查是个必问点,基本上每个公司都被问到,要知道怎么利用 jstat、jmap 这些命令结合 MAT 等工具导出堆栈信息查看分析,如果没有实战的经验,最好平时可以自己模拟一下场景,看看具体怎么处理。
网络编程相关的提问
因为大家 Java 可能做业务相关的需求比较多,如果不是涉及到比如 IOT 这种和网络编程相关的话,确实不是很清楚,对于这块问题他直接回复不清楚,问题也不大。
并发包相关问题
JUC 下的那些常见问题,ConcurrentHashMap、CountDownLatch 等等这些都应该要熟悉掌握,面试必考点。
线程池原理
基本也是必问点,也比较简单。
mysql 索引,锁机制,隔离级别
同上,这个也是比较基础,必须掌握的点。
Redis 连环炮
Redis 连环炮,数据类型、缓存击穿、雪崩、穿透、热 key、大 key,哨兵、集群,同步机制都应该了然于心。
有一个比较少见的问题,tomcat 起两个 war 包,怎么识别哪个请求要给到哪个进程?
这个问题同学没有回答上。(欢迎你留言给出想法哦)
Linux 的命令,比如怎么查看给文件按大小排序,主要是查看日志相关的技巧命令
这个在上一篇的快手的面试也有,Linux 相关的基本上就是这些了,对于日志的查询这块 grep、tail 等等这些要用的熟练。
volatie 内存屏障具体是怎么实现?
关于 JMM 内存模型相关的知识点,必须要掌握。
JVM 启动参数有哪些,怎么调优,TLAB 是什么,阻塞队列对比和选择
JVM 调优,根据实际场景举例,阻塞队列的问题上一个同学也碰到了,都是基础知识,应该掌握,TLAB 这个稍微有点不常见。
DDD 的理解?
对于阿里来说,很负责任的告诉你,基本上 DDD 是必问,但是这个基本上只要你有一定的自己的理解就可以了。
Reactor 模型
这个问题,至少我在美团、饿了么、阿里多个面试中碰到过,基本也属于必问的问题。
第一个总结
第一位同学的面试题记忆深刻的就这些了,虽然不多,但是基本上也都覆盖到了高频出现的问题,参考价值还是挺大的。总的来说,DDD、Reactor 模型可能大部分同学都不是很清楚,可以专门准备一下。
蚂蚁金服
CHM 结构,线程安全保证,加锁实现细节
ConcurrentHashMap7 和 8 的区别,实现原理这些常考点。
JVM 内存结构,垃圾回收原理,GC 配合策略,排查过程细节和调优方案
还是一样的问题,JVM、GC、垃圾收集器,调优的方案。
线程安全的本质?
要说到原子性、有序性、可见性的问题。
并发锁,AQS 原理
都不是难点,频繁问。
ThreadLocal 源码
多次出现的问题,一定要看书。
mysql 幻读,怎么加锁
同样是多次出现的问题,详细知识可以百度一下。
秒杀设计
秒杀从流量过滤、缓存、异步队列、限流、降级这些方面说说就可以了。
亮点项目
亮点、难点项目一般也都是一定会问你的,事先准备,如果项目实在没有亮点,可以从业务价值或者一些开源的项目角度来说说,都没有,咱就聊技术。
淘宝
介绍下项目,整体架构,主要功能
嗯,还是项目,一般都是第一个问题,从项目入手聊技术。
网络模型,NIO,netty
关于 NIO\BIO\AIO 必须要了解。
JVM,垃圾回收,调优,排查思路
看到有多么频繁的出现了吗?第几次了?
Redis 为什么快?使用场景?过期策略?
Redis 连环炮,同上。
RocketMQ 场景,如何保证不丢消息?
面阿里可以多准备下 RocketMQ 相关的,因为无论是开源的 ONS 还是其他都是基于 RMQ 的。
Spring Bean 生命周期
常考点,关于 Spring 相关的面试题其实很少就这么几个。
线程池参数,执行顺序,场景?
线程池原理,牢记。
Mysql 存储引擎,索引
基本上就说 InnoDb 和 Myisam 就行了,区别说清楚。
饿了么
CHM 和 HashTable
还是老问题,就不说了吧。一般都会说到 CHM7 和 8 的区别,实现原理区别。
JVM 垃圾回收的原理,GC 排查步骤
第 N 次出现。
volatile,synchronize
SQL 优化,事务隔离级别
也是第 N 次出现了。
MQ 的区别以及选型
要记一下,RMQ、Kafka、RabbitMQ 这些区别,支撑的吞吐量,支持的功能等等。
Redis 分布式锁
关于分布式锁,除了基本实现之外,可能还会涉及到一个可重入的实现的问题。
业务幂等实现
就说自己的业务中幂等是怎么做的就好了。
分库分表,MyCat 底层实现原理
MyCat 问到原理这个倒是不是很多见,分库分表的很常见,看我的面试专题系列吧。
监控指标,业务分析,业务指标
根据自己使用的监控系统来说,哪些监控项,为什么?告警策略是什么,指标,阈值。
亮点业务,好的项目
准备好自己的项目,必问。
平时怎么学习的?看什么书?
如果不看书的话,就别吹,一问就露馅。
场景题设计:银行,人,卡,充值记录,怎么进行系统设计,怎么支撑高并发?
这个场景题还比较简单吧,可以参考看看我的百亿级流量怎么处理。
聊项目,聊人生
这是最后一面的最后一个问题,不过当时状态不佳,回答的不好,估计就是因为这个错过了 P7,泪奔~~o(>_<)o ~~
盒马
可能知道我其他 BU 已经到了终面,没怎么问基础,主要问的都是项目亮点,设计,发展之类的。
总结
第二位同学也是拿到了饿了么、盒马、淘宝的多个 offer,很多人也许看了会说,啊,这很简单啊,我上我也行,不,我觉得你上你真不一定行,面试题写出来给你看和当场面试的感受还是不太一样的,很多细节的问题从罗列出来的知识点是体现不出来的。而且个人状态、情绪都会对发挥产生影响。
关于这个我突然想到知乎的一个问题“你的编程水平从什么时候开始突飞猛进的?”,我想了很久都没想好怎么回答,就是突然回头发现自己之前怎么写的代码那么烂?包括现在都会回头看我为什么当时的逻辑是这样写的?好像,不管面试还是平时,其实都是靠着水滴石穿的功夫罢了。
对吧,哪有那么多突飞猛进,岁月静好,不过是每天都在负重前行罢了。
分享他们的复习资料
一键三连+评论,然后添加 VX(tkzl6666)即可免费领取以下所有资料
Java 葵花宝典
涵盖 29 个 Java 核心技术详解,JVM,Redis,Nginx,Spring Boot,Spring Cloud,Kafka,并发编程,Tomcat,MyBatis,BAT 面试题等。
Java 开源项目合集
不论你想要看 Java 教程方向的开源项目、Java 实战项目、SpringBoot 教程还是说想要看微服务、分布式相关的开源项目,你都可以在上面找到需要的资源!
Java 面试突击
"80%的 offer 掌握在 20%的人手中"这句话也不是不无道理的。决定你面试能否成功的因素中实力固然占有很大一部分比例,但是如果你的心态或者说运气不好的话,依然无法拿到满意的 offer。运气暂且不谈,就拿心态来说,千万不要因为面试失败而气馁或者说怀疑自己的能力,面试失败之后多总结一下失败的原因,后面你就会发现自己会越来越强大。
掌握了这些知识点,面试时在候选人中又可以夺目不少,暴击 9999 点。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。
评论 (1 条评论)