阿里Java实习十轮面试面经
写在前面
本人双非本科大三,专业是微电子科学与工程,学过一点点 Java,项目是纯 CRUD 项目,未接触过 RPC 项目,下面是阿里四个部门的面经,让大佬们见笑了
2.24 部门 A 预面 64 min (过)
自我介绍
学校的学习和实习的时间是怎么分配的?
实习的项目做了什么?遇到的难点?
在实验室做的项目遇到的难点?
JPA 和 MyBatis 的区别?讲一下对象字段映射的细节
MySQL 各种索引的一些差异
什么是聚簇索引?什么是非聚簇索引?
Innodb 是怎么保证崩溃恢复能力的?(两阶段日志提交)
Innodb的优缺点?(围绕索引数展开讲)
索引覆盖?回表?唯一索引?非唯一索引?最左原则?
explain 里面有哪些字段?
一个 SQL 查询很慢,从哪些地方进行优化?
自增 ID 和 UUID 的区别?(叶分裂)
自增 ID 申请完了会发生什么事情?
分库解决了什么问题?分表解决了什么问题?
你觉得学 Java 需要具备哪些基本条件?哪些地方特别重要?
七层网络模型
为什么有了七层还有五层的概念?
JVM 内存模型(概述)
讲讲双亲委派,为什么?
你觉得双亲委派这个名字有没有什么问题?你讲讲自己的理解
打破双亲委派的例子,举个例子?怎么打破?
你现在用什么 GC 收集器?
Eden 区的对象回收策略?
CMS 的 STW 情况?
CMS 什么情况会触发 Full GC?
新对象一定会在新生代 new 出来么?
Java8 有什么新的 GC 算法?
了解 G1 收集器么?
考研么?为什么现在的实习想离职了?
Golang 和 Java 的区别?
反问:有什么需要提高的?
2.25 部门 B 一面 50 min (过)
上一次面试问了些什么问题?
啥时候过来实习?
挑一两个你实习或者项目当中遇到的难题?讲一讲怎么解决的?
项目当中的代码你有没有想过有一些地方可以优化?
哪些情况会出现 OOM?
堆中内存分配比例?
新生代 GC 工作流程?
为什么新生代年龄是 15 次进入老年代?
大对象进入老年代,这个大对象是有多大?
怎么排查 OOM?
你现在用过哪些中间件?
RPC 了解么?
RPC 解决了现在的哪些问题?
有没有想过把你的项目改造成 RPC?
IOC 的初始化流程?
AOP是怎么和 IOC 做整合的?
循环依赖怎么解决?
项目怎么分层的?
JPA 和 MyBatis 做对象映射的区别?原理?
数据库热点查询的数据,怎么做性能优化?
Innodb 的索引树数据结构?
最左原则?
有没有其他复杂的项目?
排查问题的手段,你目前知道哪些?
讲讲你的优势?
3.04 部门 C 一面 72 min (过)
自我介绍
介绍一下项目和实习
你对 RPC 的理解?
HTTP 和 RPC 的关系?区别?
RPC 的优点?
任何一个请求过来都会打到注册中心么?
关于项目和实习的一些问题
HDFS 了解么?
Java 的流式处理了解么?
SpringMVC 处理请求的一个流程?
Servlet 的监听器和拦截器?
有哪些方法可以拦截一个 HTTP 请求?
关于接受请求的参数,你有没有一套自己总结的方法?
在学校还做过哪些项目?
你觉得学 Java,最重要的是什么?
你对 IOC 的理解?
AOP 的各种实现有什么差异?
为什么会有多种代理的方式?
HTTPS 的秘钥交换过程?
有中间人劫持则么办?
双亲委派的理解?
为什么有双亲委派?一定要遵循双亲委派么?
怎么打破双亲委派?
有一个线程要等待其他线程执行完再执行?
有一个线程要等待其他线程都就绪再执行?
顺序打印 ABC?
Innodb 索引的数据结构?为什么用 B+树?
100 瓶药一瓶毒药.懂得都懂.
海量数据取前 5.
3.04 部门 B 一面 52 min (过)
自我介绍
有没有面其他的部门?
介绍一下自己的实习项目?
关于项目的一些问题
你觉得实习做的事情还有没有什么可以优化的?
为什么 TX 用 Golang?(我怎么知道?)
DNS 解析流程?
怎样解析一个域名?解析一个域名需要哪些信息?
为什么用 Nginx?
你觉得 Nginx 在你的项目中最大的作用是什么?
HTTPS 的秘钥交换过程?
你觉得使用了 HTTPS 之后还会出现问题么?出现问题了怎么办?
外挂的 Tomcat 和 SpringBoot 内嵌的 Tomcat 有什么区别?
Tomcat 的设计模式了解么?
SpringBoot 怎么调起Tomcat?
你对 IOC 的理解?
实际开发当中你哪些地方使用了 Bean 的前置后置处理器?
AOP 是怎么和 IOC 进行整合的?
Spring 怎么把 Java 对象初始化成 SpringBean 的?
HashMap 八股文讲讲?
哪些情况下会产生 Full GC?
方法区的大小怎么设置?
栈大小怎么设置?
你遇到过堆栈溢出的情况么?怎么解决的?
MySQl 主从集群怎么搞?
Binlog 有几种?区别是什么?
3.05 部门 B 二面 75 min (过)
面试官上来花了 10 分钟介绍了他们部门
关于 Github 上面的项目的问题(这个代码是大二上期写的)
项目当中的数据库设计,你是怎么做的?
项目怎么分层的?
流量打到 SpringMVC 上面之后的处理流程?
微信小程序登录的流程?
JS SDK 登录和后端请求微信服务器登录的区别?
你觉得微信登录获得的 raw 信息可以被黑客劫持么?
你使用过分表么?分库分表分别解决了什么问题?
分表的时候,怎么设计主键?
自己的项目当中,用到自定义索引的情况?
最左原则?联合索引?
为什么会有最左匹配原则?(根据 B+树排序规则去回答)
为什么使用 B+树?回表?怎么减少回表?
数据库的乐观锁和悲观锁?
读锁和写锁的区别?
假设现在有一个需求,需要在一个 for 循环里面连续 100 次去更新一个行记录,这个过程中会出现阻塞的情况?怎么使用编码的方式来规避这种情况?(手动继承 AQS)
怎么关闭长事务?
为什么想来阿里?
微服务实例是怎么暂停的?了解么?
关于实习和项目的一些问题
线程池 7 个参数的含义?
线程池提交任务的流程?
对分布式的了解有多少?
3.05 部门 C 二面 50 min (过)
这轮面试忘了录音了,有些问题不记得了.
关于项目和实习的一些问题.
一个分布式部署的项目?至少需要哪些模块?
任何一个流量打过来都会打到注册中心么?
一个注册中心,至少需要具备哪些条件?
有一大批流量总是被打到一个实例上面,这个实例的兄弟实例分到的流量很少,怎么办?
有一个实例挂了怎么办?
注册中心集群的时候,其中一个注册中心挂了怎么办?
平时通过哪些渠道学习?
看过哪些博客?
你觉得美团的博客上面有哪几篇对你帮助特别大?
然后具体谈了谈这一篇博客
你看视频一般在哪儿看?看那些类型的视频?
能给我推荐一个关于技术的公众号么?
你有看过阿里的一些技术博客么?你觉得他们写的博客对你有没有帮助?
剩下的八股文问题不记得了.....
3.05 部门 A 二面 60 min (过)
这一轮面试也忘了录音了....
自我介绍
关于项目和实习的一些问题
HashMap put 里面已经有100000 个数据了,往里面 put 第 100001 个数据会不会扩容?
你觉得采用链表加红黑树的组合方式之后解决了什么问题?
那么多数据结构,为什么偏偏使用红黑树?
红黑树的平衡怎么做?
链表转化成红黑树的阈值怎么算出来的?
为什么红黑树缩回链表的阈值和进化的阈值不一样?
现在用编码的方式进行代码同步,有哪些方法?
公平锁和非公平锁的实现(AQS 八股文)
volatile 的特性?
一个 volatile 变量,一个线程写,多个线程读会不会出现线程不安全的问题?
IOC 的初始化流程?
Java 的类加载过程?
为什么会有 TIMEWAIT这个状态?
拥塞控制?流量控制?
10000 亿条淘宝订单,每条订单当中包含了一个交易流水,流水里面有商品的 ID,有购买数量,同一个商品在这个订单会出现多次,现在要统计销量最好的 10 件商品.
能记起来的就这些.....
3.06 部门 D 一面 70 min (过)
为什么不找硬件相关的实习来做软件?
能给我介绍一下微电子科学与工程这个专业是干什么的么?
你是怎么学习软件开发的这些东西?
关于实习和项目的问题
讲讲面向对象的一些特性?
Java 7 大原则?
面向过程和面向对象的区别?
对象和类的关系?
Java 容器八股文
HashMap 八股文
进程和线程的区别?
Java 创建线程的方式?
线程池参数和任务提交到执行的过程?
对于线程池参数的设定,你有没有自己的一套方案?
代码的同步怎么做?
Java 的类加载过程?什么时候回触发到 Java 类的加载?什么时候回触发类的卸载?
双亲委派?打破双亲委派?
重载和重写在 JVM 层面是怎么鉴别的?
JVM当中的方法内联?
MySQL中的事务是怎么实现的?
隔离级别的区别?都是怎么实现的?
事务数组是什么?高水位指的是哪些?低水位指的是哪些?
Innodb 索引数据结构?阿巴阿巴
SQL 语句执行流程?分析器优化器执行器都是什么?
回表?索引下推?
IOC 的初始化流程?
为什么会有 SpringBoot 的出现?
讲讲自动装配?
你更倾向于 MyBatis 还是 JPA?
这两个 ORM 的实现和区别?
问项目....
问实习...
你的大学生活,时间一般是怎样安排的?
你觉得你自己的大学生活充实么?
一般采用哪些方式学习?
B 端业务和 C 端业务你更倾向于哪种?
3.06 部门 D 二面 110 min (过)
自我介绍
本专业的成绩怎么样?
挂过科么?为什么会挂科?能不能总结一下这一次挂科?
JVM内存模型概念?
你对方法区/元空间的理解?
堆中内存的分配?
永久带会涉及到 GC 回收么?
程序运行的时候,怎么监控内存使用情况?
程序运行的时候,怎么看堆栈信息?
Java 类加载的过程?
魔数是什么?
为什么叫双亲委派?你有没有觉得这个名字怪怪的?
在一个类中调用了另一个类的私有方法能不能通过编译?
ClassNotFoundException出现在哪些地方?
假如说现在有一个 可执行的A.jar和 B.jar,他们都互相引用了对方,现在 B.jar 里面的某些类已经不在了,A还能启动么?
ldc,iconst,getstatic,ACC_FLAG 这几个指令都是什么意思?
IOC 的特性?你对 IOC 的理解?
我们自己也可以实现 IOC 和 AOP,甚至是前置后置处理器,为什么还要用 Spring 提供的?
怎样才能知道 Spring 的 IOC 容器已经完全初始化了?
事件订阅的接口名字是什么?
为什么我会问这个问题?为什么我们需要知道 Spring IOC 容器的初始化进度?
Spring 的后置处理器接口名字是什么?
AOP 和 IOC 的整合流程?
AOP 是怎么做动态代理的?
CGLIB 是怎么操作字节码的?
ASM 操作字节码的原理?
XML 的两种解析策略?两种有什么差异?
线程池参数?
任务提交到线程池之后会遇到哪些情况?
用银行取钱的例子给我讲讲线程池?
sync 对应的字节码是什么?
sync 锁静态方法和非静态方法锁的分别是什么对象?
为什么锁的对象不一样?
为什么使用 Maven?
一个 a.jar 引用了 c,版本是 1.0.0,b.jar 引用的 c 版本是 2.0.0,一个项目当中同时依赖了a 和 b,这时候依赖的 c 版本是哪一个?为什么?
Maven 仲裁策略有几步?
数据库的事务特性?
隔离级别的差异?为什么会有这种差异?
讲讲可重复读和读提交隔离级别和实现机制?
什么是"当前读"?
为什么项目当中要使用缓存?
为什么 Redis 这么快?
Redis的持久化机制?
在生成 RDB 的过程当中,还能继续进行写入么?
为什么 AOF 是数据先落盘再写日志?而数据库是先写日志再落盘?
哨兵的选主策略?一个哨兵是怎么知道其他哨兵的存在的?
HashMap 八股文
红黑树的特点?
三次握手和四次挥手的过程?
TIMEWAIT 为什么要等待 2MSL?
301 和 302 状态码的区别?
磁盘调度算法?
操作系统死锁?
进程和线程的区别?
哪一种 IPC 最快?
线程的几种状态?
进程调度策略?
三点十五分时针和分针的夹角?
3.07 部门 B 三面 35min (过)
自我介绍
问项目,问实习
你在项目当中担任的角色?
你觉得 TX 的氛围怎么样?
你一般几点走?
那边加班严重么?
RPC 调用过程中,现在要在消费者这一端配置某种调用超时之后的服务,怎么才能判断是否已经超时呢?
关于超时时间的设定,怎么设置呢?
有几种超时的情况?对应不同的情况你会怎么办?
301 和 302 状态码的区别?
HTTP 和 RPC 的关系?
哪里人?平时怎么学习?
你对 B 端和 C 端业务的看法?
写在最后
面试的时候尽量追求实事求是,千万不要想着打面试官的马虎眼,有些东西没做过就是没做过
这次面试面试官帮我回忆了一下我大一大二都在干些什么?
特别是面试官问我大学生活充不充实哪里,真的是感慨特别深
我的大学就是四六级都没考过,补考挂科重修全部经历了一遍,比赛也没参加过,一个奖都没有。。。
交叉面面经后面补。。。。