校招阿里四个部门的面经,真实学生面试经历
部门 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 信息可以被黑客劫持么?你使用过分表么?分库分表分别解决了什么问题?分表的时候,怎么设计主键?自己的项目当中,用到自定义QQ靓号转让索引的情况?最左原则?联合索引?为什么会有最左匹配原则?(根据 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 端业务的看法?写在最后
面试的时候尽量追求实事求是,千万不要想着打面试官的马虎眼,有些东西没做过就是没做过。现在社会资源分享是我们的福利,明明有很多时间提前准备的,不要为自己的懒惰找借口,先过一遍,看看自己回答的怎么样,哪里欠缺哪里补。