写点什么

2021 最新总结:阿里 / 京东 / 饿了么 / 拼多多 / 爱奇艺面经分享(堪称 Offer 收割机)

用户头像
比伯
关注
发布于: 2021 年 02 月 23 日
2021最新总结:阿里/京东/饿了么/拼多多/爱奇艺面经分享(堪称Offer收割机)

前言

娱乐圈有“男神收割机”“女神收割机”。同样程序员圈子也有“Offer 收割机”。

想必大家都有面试的经历吧,但是你有面一个拿一个 offer 的经历吗。或许听起来很离谱,但是也确实有这样的事情,毕竟万事皆有可能。之前我在网上认识的一位网友,我们有一天下午聊天的时候聊到面试这块,他跟我说了他的面试经历:他面了饿了么、阿里、京东、拼多多、爱奇艺,听着好像很简单的样子,但是别人背后付出的可能是你的百倍千倍。好了废话不多说。现在我开始写面经,希望能帮助到大家!



首先,他先是去面了阿里

一面

自我介绍后,直接开始问多线程相关问题。大概问题如下:

1.为什么要使用多线程?多线程需要注意的问题。上下文开销、死锁等。

2.java 内存模型、导致线程不安全的原因。

3.volatile 关键字,缓存一致性、指令重排序概念。

4.synchronize 关键字,java 对象头、Markword 概念、synchronize 底层 monitorenter 和 moniterexit 指令。

5.lock 语句和 synchronize 对比。

6.原子操作,CAS 概念、相关参数。

7.乐观锁、悲观锁概念及使用场景。

8.线程池概念、实现原理等。

9.JVM 锁的优化,偏向锁、轻量级锁概念及原理。

10.多线程方面回答得比较好,面试官反馈比较满意。

然后就是数据库相关的:(其实没这么多,有些是我整理的,挑了一些概率大的题目,仅参考)

1.在 MySQL 中 ENUM 的用法是什么?

2.CHAR 和 VARCHAR 的区别?

3.为什么事务可以优化数据库?

4.Mysql 的数据库引擎,区别特点

5.数据连接池采用了什么设计模式?意义是什么?

6.项目用到什么数据库?隔离级别?每个隔离级别各做了什么

7.数据库的索引?mysql 不同引擎索引的区别

8..索引使用的注意事项

9..数据库挂了怎么办?除了热备份还有什么方法?

10..接上面场景题:服务器挂了,优惠券还没发怎么办?

11..数据库挂了怎么办?

12..数据库优化中,有一个关键字可以分析执行过程,知道么(explain 关键字)?

13..数据库优化有什么了解?

14..索引的原理说一下吧。

15.联合索引,如果联合索引(a,b),现在查询 a>0,b>0 可以用到这个联合索引么?(太久没看,生疏了,答错了,答案应该是不能,只能用到 a 的索引,范围索引只能用到一列)

16.Mysql 集群数据是怎么同步的?

17.Select,poll,epoll 的区别。

还围绕了项目架构、Java 基础、JVM、并发编程、中间件技术和 Dubbo 服务治理框架等展开。(题目不怎么记得了)

二面(问得比较深入,问题也是格外的令人头疼)

JVM 方面

1.java 内存模型,五个部分,程序计数器、栈、本地栈、堆、方法区。

2.每个部分的概念、特点、作用。

3.类加载的过程,加载、验证、准备、解析、初始化。每个部分详细描述。

4.加载阶段读入.class 文件,class 文件时二进制吗,为什么需要使用二进制的方式?

5.验证过程是防止什么问题?验证过程是怎样的?加载和验证的执行顺序?符号引用的含义?

6.准备过程的静态成员变量分配空间和设置初始值问题。

7.解析过程符号引用替代为直接引用细节相关。

8.初始化过程 jvm 的显式初始化相关。

9.类卸载的过程及触发条件。

10.三种类加载器,如何自定义一个类加载器?

11.双亲委派机制。

12.JVM 内存分配策略,优先放于 eden 区、动态对象年龄判断、分配担保策略等。

13.JVM 垃圾回收策略,怎样判对象、类需要被回收?

14.四种垃圾回收算法标记-清除、复制、标记-整理、分代收集。

15.JVM 中的垃圾回 JVM 收器,新生代回收器、老年代回收器、stop-the-world 概念及解决方法。

16.四类引用及使用场景?

这里给大家分享一个 JVM 知识图谱,可以分享给大家。



JVM 知识图谱展示

通信协议

接下来是对通信协议的了解,大概问了下列问题:

1.TCP 三次握手、四次挥手。

2.http 请求报文结构、响应报文,状态码。

3.http2.0 相比于 http1.0 的新特性,推送、多路复用、消息头压缩等。

数组面试问题

1.如何在给定的 1 到 100 的整数数组中找到缺失的数字?

2.如何在给定的整数数组上找到重复的数字?

3.如何在未排序的整数数组中找到最大和最小的数字?

链表面试问题

1.如何在没有递归的情况下反转单链表?

2.如何在未排序的链表中删除重复节点?

3.你如何找到单链表的长度?

4.如何在单链表中找到最后的第三个节点?

5.如何使用 Stack 找到两个链表的总和?

二叉树、字符串面试问题

1.你如何计算给定字符串中的元音和辅音?

2.如何计算字符串中给定字符的出现次数?

3.如何找到字符串的所有排列?

4.如何在不使用任何库方法的情况下反转给定句子中的单词?

5.如何使用递归来反转给定的字符串?

6.如何检查字符串是否只包含数字?

7.如何在字符串中找到重复的字符?

8.如何在没有递归的情况下按预先遍历给定的二叉树?

9.如何在给定的二叉树中执行有序遍历?

10.如何在没有递归的情况下使用 inorder 遍历打印给定二叉树的所有节点?

11.你如何实现一个后序遍历算法?

12.如何在没有递归的情况下遍历后序遍历中的二叉树?

13.如何打印二叉搜索树的所有叶子?

14.如何计算给定二叉树中的多个叶节点?

这里整理了关于数据结构相关资料文档,需要的小伙伴请查看文末获取方式。



三面

1.Spring Boot 有哪些优点?

2.什么是 Spring Framework?

3.Spring Framework 有哪些不同的功能?

4.Spring Framework 中有多少个模块,它们分别是什么?

5.什么是 Spring 配置文件?

6.什么是 Spring IOC 容器?

7.BeanFactory–BeanFactory 实现举例

8.解释 AOP 模块

9.解释 JDBC 抽象和 DAO 模块

10.解释对象/关系映射集成模块

11.哪种依赖注入方式你建议使用,构造器注入,还是 Setter 方法注入?

12.对 MySQL 的锁了解吗

13.隔离级别与锁的关系

14.按照锁的粒度分数据库锁有哪些?锁机制与 InnoDB 锁算法

15.从锁的类别上分 MySQL 都有哪些锁呢?像上面那样子进行锁定岂不是有点阻碍并发效率了

16.MySQL 中 InnoDB 引擎的行锁是怎么实现的?

17.什么是死锁?怎么解决?

这里给大伙儿分享一张 Spring 知识总结图(不知道怎么学习的可以收藏)




京东(四面)

一面

1.Elasticsearch 是怎么使用的,有接触过大数据的应用吗?

2.项目里的数据处理是怎么做的?

3.当前要存入 elasticsearch 的数量过大,会在存储时造成等待,存储速度很慢,如何解决这个问题?

4.Jvm 里如何判断对象死亡?

5.Jvm 里如何判断类死亡?

6.Hashmap 在 jdk7 和 8 里的区别。

7.多线程,synchronized 和 lock 的区别。

8.Concurrenthashmap 的数据结构讲一下,如何做到线程安全的?

9.Concurrenthashmap 新插入一个对象会 Hash 几次?

10.讲一个简历上的项目,技术难点在哪?

11.Jvm 内存分区,为什么要有新生代和老年代?

12.有做个 VM 内存优化吗?

13.数据库索引主键和唯一索引有什么区别?

14.聚集索引和非聚集索引的区别?

15.MySQL 存储引擎 innoDB 和 MylSAM 的区别?

16.InnoDB 的 B+树索引叶子节点的 Data 域存储的是什么?MylSAM 的 B+树索引叶子节点的 Data 域存储的是主键还是物理地址?

二面

1.Hashmap 说下吧。

2.线程池有哪些参数,如果满了新的线程会怎么处理?

3.你们网关有配 jvm 参数吗,都有哪些?

4.高并发的时候你们网关高可用怎么做的?

5.数据库用过吗,如果现在有十亿的数据给你怎么存?

6.你们的熔断降级怎么做的?

7.项目的线程池怎么配的?

8.字符串的类说一下。

9.两个字符串都是 y,用 equals 返回什么?

10.Hashcode 和 equals 的关系。

11.两个线程一起输出 100 个数怎么做?

12.SpringBoot 的 AOP 是什么?

三面

1.分布式下 redis 如何保证线程安全?

2.redis 持久化的方式以及区别;

3.zookeeper 如何实现分布式锁、其他分布式锁怎么实现?

4.kafka 的架构,如何用 kafka 保证消息的有序性?

5.数据库的优化包含哪些?MySQL 的优化,谈两个你优化的例子。

6.最有技术难度的项目,介绍下相关核心设计流程。

7.工作中,遇见了技术瓶颈无法解决,你的解决思路?

8.未来你的职业规划是怎么样?

HR 面

  1. 你觉得自己的优点是什么,有哪些缺点呢?(灵魂拷问)

  2. 你之前公司给的薪水是怎么样的?如果阿里给你 offer,你是怎么考量这两个 offer 的?

  3. 为什么没有在之前的公司留下来?之前公司的主管是怎么评价你的?

  4. 除了今天这个面试,还安排了其他公司的吗?(这不是无聊吧)



饿了么

1.HashMap 和 hashtable 的区别有哪些?

2.Mysql 有哪些索引方式

3.一个 Java 文件有 3 个类,编译后有几个 class 文件?

4.局部变量使用前需要显式地赋值,否则编译通过不了,为什么这么设计?

5.ReadWriteLock 读写之间互斥吗?

6.Semaphore 拿到执行权的线程之间是否互斥?

7.写一个你认为最好的单例模式。

8.B 树和 B+树是解决什么样的问题的?怎样演化过来,之间的区别?

9.写一个生产者消费者模式。

10.写一个死锁。

11.CPU 100%怎样定位?

12.Synchronized 底层实现原理。

13.volatile 作用,指令重排相关。

14.Spring 怎样解决循环依赖的问题?

15.说说 InheritableThreadLocal 的实现原理?

16.InheritableThreadLocal 是如何弥补 ThreadLocal 不支持继承的特性?

17.CyclicBarrier 内部的实现与 CountDownLatch 有何不同?

二面

1.多线程先入队出队操作的线程安全?

2.为什么不使用一把锁,使用两把为何能提高并发度?

3.基于数组的阻塞队列 ArrayBlockingQueue 原理。

4.讲讲对 JUC 中回环屏障 CyclicBarrier 的使用?

5.CyclicBarrier 内部的实现与 CountDownLatch 有何不同?

6.Semaphore 的内部实现是怎样的?

7.简单对比同步器实现,谈谈你的看法?

8.什么是 Java 指令重排序?

9.Java 中 Synchronized 关键字的内存语义是什么?

10.Java 中 Volatile 关键字的内存语义是什么?

11.什么是可重入锁、乐观锁、悲观锁、公平锁、非公平锁、独占锁、共享锁?

三面

1.说说分库与分表设计

2.分库与分表带来的分布式困境与应对之策

3.说说 SQL 优化之道

4.MySQL 遇到的死锁问题

5.存储引擎的 InnoDB 与 MyISAM

6.数据库索引的原理

7.为什么要用 B-tree

8.聚集索引与非聚集索引的区别

9.limit 20000 加载很慢怎么解决

10.选择合适的分布式主键方案

11.选择合适的数据存储方案

12.ObjectId 规则是什么?

13.聊聊 MongoDB 使用场景吧。

14.pring MVC 运行流程是什么?

15.Spring MVC 启动流程说一下吧。

16.Spring 的单例实现原理是什么?

17.Spring 框架中用到了哪些设计模式?



拼多多

一面

1.自我介绍。

2.部门组织结构是怎样的?

3.给我一张纸,画了一个九方格,都填了数字,给一个 MN 矩阵,从 1 开始逆时针打印这 MN 个数,要求时间复杂度尽可能低。

4.链路追踪的信息是怎么传递的?(RpcContext 的 attachment,说了 Span 的结构:parentSpanId + curSpanId)

5.SpanId 怎么保证唯一性?(UUID,说了下内部的定制改动)

6.RpcContext 是在什么维度传递的?(线程)

7.Dubbo 的远程调用怎么实现的?(讲了读取配置、拼装 url、创建 Invoker、服务导出、服务注册以及消费者通过动态代理、filter、获取 Invoker 列表、负载均衡等过程(哗啦啦讲了 10 多分钟),我可以喝口水么)

8.Spring 的单例是怎么实现的?(单例注册表)

9.为什么要单独实现一个服务治理框架?(说了下内部刚搞微服务不久,主要对服务进行一些监控和性能优化)

10.谁主导的?内部还在使用么?

11.逆向有想过怎么做成通用么?

12.Java 中的 HashMap、TreeMap 解释下?(TreeMap 红黑树,有序,HashMap 无序,数组+链表)

13.TreeMap 查询写入的时间复杂度多少?

14.HashMap 多线程有什么问题?

二面

1.CAS 和 synchronize 有什么区别?

2.都用 synchronize 不行么?

3.如果要保证线程安全怎么办?(ConcurrentHashMap)

4.ConcurrentHashMap 怎么实现线程安全的?(分段锁)

5.get 需要加锁么,为什么?(不用,volatile 关键字)

6.Volatile 的作用是什么?(保证内存可见性)

7.底层怎么实现的?(说了主内存和工作内存,读写内存屏障,happen-before,并在纸上画了线程交互图)

8.在多核 CPU 下,可见性怎么保证?(思考了一会)

9.聊项目,系统之间是怎么交互的?

10.系统并发多少,怎么优化?

11.Linux 进程间通信的方式?

三面

1.TCP 连接的特点大概说一下吧。

2.TCP 连接如何保证安全可靠的?

3.为什么 TCP 连接需要三次握手,两次不可以吗,为什么?

4.动态代理与 cglib 实现的区别是什么?

5.那么你说说代理的实现原理吧。

6.看过 Spring 源码没,说说 Ioc 容器的加载过程吧。

7.了解过字节码的编译过程吗(这个回答的有一些含糊,就跳过了)

8.Hadoop 里面由哪些组件,你用过哪些?

9.Spring Bean 的生命周期大概说说。

10.nat 是什么?属于哪一层?

11.介绍一下网络分层的模型

12.链路层有什么协议?

13.数据库范式是什么?

14.面向对象三大特点。



爱奇艺

一面

1.手撕代码。牛客的原题,可以去练练:NC22 合并两个有序的数组。

2.TCP/IP 协议。

3.长连接与短连接。

4.mapreduce 过程。

5.多路归并的时间复杂度。

6.海量 url 去重类问题。

7.Java NIO 使用。

8.倒排索引的原理说一下吧。

9.对分词技术的了解。

10.HTTP 协议是哪一层的?其报文结构如何?七层网络结构是?

11.HTTP 请求/响应的步骤有哪一些?(大概说说就可以,没有讲得很详细)

二面

1.算法方面了解哪些?简述动态规划、贪心算法。

2.缓存问题,缓存与内存的区别。以及数据库连接池。

3.volatile 关键字介绍一下。

4.多线程实现方式,三种。

5,JVM 介绍一下,从他的编译之类,加载(忘记回答父类,子类,以及静态代码块,普通代码块的加载过程)

6.Map,Collection 的关系。

7.ArrayList 扩充问题。add()方法的底层实现。

8.spring 的核心如:IOC AOP 等,注入一个 UserDaoImpl 时,UserDaoImpl 有几个实例,一个还是多个。

9.介绍一下同步,安全与不安全。

10.Thread 中,ThreadLocal,Lock 等。

11,.数据库索引的底层实现。B 二叉树

12.线程池,线程池有多少种,每种的特点。

总结

最后针对于上面的面试问到的知识点我总结出了互联网公司 Java 程序员面试涉及到的绝大部分面试题及答案做成了文档和架构视频资料免费分享给大家。

希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。





还有 Java 核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring 源码合集+Java 架构实战电子书。

资料获取方式:添加小助理 vx :mxzFAFAFA 即可获取上述资料~


发布于: 2021 年 02 月 23 日阅读数: 74
用户头像

比伯

关注

还未添加个人签名 2020.11.09 加入

还未添加个人简介

评论

发布
暂无评论
2021最新总结:阿里/京东/饿了么/拼多多/爱奇艺面经分享(堪称Offer收割机)