校招阿里四个部门的面经,真实学生面试经历
部门 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 的区别?
- 反问:有什么需要提高的?
部门 B 一面 50 min (过)
- 上一次面试问了些什么问题?
- 啥时候过来实习?
- 挑一两个你实习或者项目当中遇到的难题?讲一讲怎么解决的?
- 项目当中的代码你有没有想过有一些地方可以优化?
- 哪些情况会出现 OOM?
- 堆中内存分配比例?
- 新生代 GC 工作流程?
- 为什么新生代年龄是 15 次进入老年代?
- 大对象进入老年代,这个大对象是有多大?
- 怎么排查 OOM?
- 你现在用过哪些中间件?
- RPC 了解么?
- RPC 解决了现在的哪些问题?
- 有没有想过把你的项目改造成 RPC?
- IOC 的初始化流程?
- AOP是怎么和 IOC 做整合的?
- 循环依赖怎么解决?
- 项目怎么分层的?
- JPA 和 MyBatis 做对象映射的区别?原理?
- 数据库热点查询的数据,怎么做性能优化?
- Innodb 的索引树数据结构?
- 最左原则?
- 有没有其他复杂的项目?
- 排查问题的手段,你目前知道哪些?
- 讲讲你的优势?
部门 C 一面 72 min (过)
- 自我介绍
- 介绍一下项目和实习
- 你对 RPC 的理解?
- HTTP 和 RPC 的关系?区别?
- RPC 的优点?
- 任何一个请求过来都会打到注册中心么?
- 关于项目和实习的一些问题
- HDFS 了解么?
- Java 的流式处理了解么?
- SpringMVC 处理请求的一个流程?
- Servlet 的监听器和拦截器?
- 有哪些方法可以拦截一个 HTTP 请求?
- 关于接受请求的参数,你有没有一套自己总结的方法?
- 在学校还做过哪些项目?
- 你觉得学 Java,最重要的是什么?
- 你对 IOC 的理解?
- AOP 的各种实现有什么差异?
- 为什么会有多种代理的方式?
- HTTPS 的秘钥交换过程?
- 有中间人劫持则么办?
- 双亲委派的理解?
- 为什么有双亲委派?一定要遵循双亲委派么?
- 怎么打破双亲委派?
- 有一个线程要等待其他线程执行完再执行?
- 有一个线程要等待其他线程都就绪再执行?
- 顺序打印 ABC?
- Innodb 索引的数据结构?为什么用 B+树?
- 100 瓶药一瓶毒药.懂得都懂.
- 海量数据取前
部门 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 有几种?区别是什么?
部门 B 二面 75 min (过)
- 面试官上来花了 10 分钟介绍了他们部门
- 关于 Github 上面的项目的问题(这个代码是大二上期写的)
- 项目当中的数据库设计,你是怎么做的?
- 项目怎么分层的?
- 流量打到 SpringMVC 上面之后的处理流程?
- 微信小程序登录的流程?
- JS SDK 登录和后端请求微信服务器登录的区别?
- 你觉得微信登录获得的 raw 信息可以被黑客劫持么?
- 你使用过分表么?分库分表分别解决了什么问题?
- 分表的时候,怎么设计主键?
- 自己的项目当中,用到自定义索引的情况?
- 最左原则?联合索引?
- 为什么会有最左匹配原则?(根据 B+树排序规则去回答)
- 为什么使用 B+树?回表?怎么减少回表?
- 数据库的乐观锁和悲观锁?
- 读锁和写锁的区别?
- 假设现在有一个需求,需要在一个 for 循环里面连续 100 次去更新一个行记录,这个过程中会出现阻塞的情况?怎么使用编码的方式来规避这种情况?(手动继承 AQS)
- 怎么关闭长事务?
- 为什么想来阿里?
- 微服务实例是怎么暂停的?了解么?
- 关于实习和项目的一些问题
- 线程池 7 个参数的含义?
- 线程池提交任务的流程?
- 对分布式的了解有多少?
部门 C 二面 50 min (过)
- 这轮面试忘了录音了,有些问题不记得了.
- 关于项目和实习的一些问题.
- 一个分布式部署的项目?至少需要哪些模块?
- 任何一个流量打过来都会打到注册中心么?
- 一个注册中心,至少需要具备哪些条件?
- 有一大批流量总是被打到一个实例上面,这个实例的兄弟实例分到的流量很少,怎么办?
- 有一个实例挂了怎么办?
- 注册中心集群的时候,其中一个注册中心挂了怎么办?
- 平时通过哪些渠道学习?
- 看过哪些博客?
- 你觉得美团的博客上面有哪几篇对你帮助特别大?
- 然后具体谈了谈这一篇博客
- 你看视频一般在哪儿看?看那些类型的视频?
- 能给我推荐一个关于技术的公众号么?
- 你有看过阿里的一些技术博客么?你觉得他们写的博客对你有没有帮助?
- 剩下的八股文问题不记得了.....
部门 A 二面 60 min (过)
- 这一轮面试也忘了录音了....
- 自我介绍
- 关于项目和实习的一些问题
- HashMap put 里面已经有100000 个数据了,往里面 put 第 100001 个数据会不会扩容?
- 你觉得采用链表加红黑树的组合方式之后解决了什么问题?
- 那么多数据结构,为什么偏偏使用红黑树?
- 红黑树的平衡怎么做?
- 链表转化成红黑树的阈值怎么算出来的?
- 为什么红黑树缩回链表的阈值和进化的阈值不一样?
- 现在用编码的方式进行代码同步,有哪些方法?
- 公平锁和非公平锁的实现(AQS 八股文)
- volatile 的特性?
- 一个 volatile 变量,一个线程写,多个线程读会不会出现线程不安全的问题?
- IOC 的初始化流程?
- Java 的类加载过程?
- 为什么会有 TIMEWAIT这个状态?
- 拥塞控制?流量控制?
- 10000 亿条淘宝订单,每条订单当中包含了一个交易流水,流水里面有商品的 ID,有购买数量,同一个商品在这个订单会出现多次,现在要统计销量最好的 10 件商品.
- 能记起来的就这些.....
部门 D 一面 70 min (过)
- 为什么不找硬件相关的实习来做软件?
- 能给我介绍一下微电子科学与工程这个专业是干什么的么?
- 你是怎么学习软件开发的这些东西?
- 关于实习和项目的问题
- 讲讲面向对象的一些特性?
- Java 7 大原则?
- 面向过程和面向对象的区别?
- 对象和类的关系?
- Java 容器八股文
- HashMap 八股文
- 进程和线程的区别?
- Java 创建线程的方式?
- 线程池参数和任务提交到执行的过程?
- 对于线程池参数的设定,你有没有自己的一套方案?
- 代码的同步怎么做?
- Java 的类加载过程?什么时候回触发到 Java 类的加载?什么时候回触发类的卸载?
- 双亲委派?打破双亲委派?
- 重载和重写在 JVM 层面是怎么鉴别的?
- JVM当中的方法内联?
- MySQL中的事务是怎么实现的?
- 隔离级别的区别?都是怎么实现的?
- 事务数组是什么?高水位指的是哪些?低水位指的是哪些?
- Innodb 索引数据结构?阿巴阿巴
- SQL 语句执行流程?分析器优化器执行器都是什么?
- 回表?索引下推?
- IOC 的初始化流程?
- 为什么会有 SpringBoot 的出现?
- 讲讲自动装配?
- 你更倾向于 MyBatis 还是 JPA?
- 这两个 ORM 的实现和区别?
- 问项目....
- 问实习...
- 你的大学生活,时间一般是怎样安排的?
- 你觉得你自己的大学生活充实么?
- 一般采用哪些方式学习?
- B 端业务和 C 端业务你更倾向于哪种?
部门 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 最快?
- 线程的几种状态?
- 进程调度策略?
- 三点十五分时针和分针的夹角?
部门 B 三面 35min (过)
- 自我介绍
- 问项目,问实习
- 你在项目当中担任的角色?
- 你觉得 TX 的氛围怎么样?
- 你一般几点走?
- 那边加班严重么?
- RPC 调用过程中,现在要在消费者这一端配置某种调用超时之后的服务,怎么才能判断是否已经超时呢?
- 关于超时时间的设定,怎么设置呢?
- 有几种超时的情况?对应不同的情况你会怎么办?
- 301 和 302 状态码的区别?
- HTTP 和 RPC 的关系?
- 哪里人?平时怎么学习?
- 你对 B 端和 C 端业务的看法?
- 写在最后
面试的时候尽量追求实事求是,千万不要想着打面试官的马虎眼,有些东西没做过就是没做过。现在社会资源分享是我们的福利,明明有很多时间提前准备的,不要为自己的懒惰找借口,先过一遍,看看自己回答的怎么样,哪里欠缺哪里补。