写点什么

阿里 Java 研发第 2 面,都会问什么?斩获阿里 P6+ 的“他”告诉你答案

发布于: 2020 年 12 月 18 日

分享一个好消息,最近一个经常与我交流技术的粉丝朋友成功入职阿里!暂且叫他阿布吧。



绝大多数技术人都有个阿里梦,阿布也不例外。在准备跳槽的日子,阿布也到其它的大厂面试过,最终他选择了阿里。阿布在10月份入职阿里菜鸟物流研发部,主要负责物流网络系统研发,级别是P6+。



对很多人来说,每年的双11都是个大挑战。但是在阿里内部,其实阿布他们挺闲的,只需要通宵值班盯着系统的运行状况,出了问题就忙,不出问题还是正常的。(一般都不会出问题【手动滑稽】)





阿布去阿里面试一共4面,都是技术面,7年的工作经验,加上前期的充分准备,勉强不那么费力。



  • 第1面主要问算法,像sort排序方法,还有HASHMAP线程安全,还有spring的IOC和AOP及bean生命周期等;

  • 第2面问了很多JVM;

  • 然后第3面好像问了kafka,还有网络安全https,死锁等问题;

  • 第4面让他画了个架构图,根据架构图展开了提问,答上来之后就只用等着确定入职时间了。



今天主要跟大家分享下阿里第2面关于jvm的面试内容。阿里菜鸟P6除了基础之外,源码是必不可少的,大厂面试的内容其实都是类似的。以下是面试官提出的问题(阿布面试结束后整理的,大体没差):



1、jvm类加载机制,每一步分别做了什么?

2、JVM运行时数据区包括哪些部分,垃圾收集有哪些算法,各自的特点?如何确定被清除的对象?

JVM运行时数据区包括哪些部分?

垃圾收集有哪些算法,各自的特点?

如何确定被清除的对象?

3、JVM中的垃圾回收器有哪些?区别是什么?

4、Mysql索引类型和区别?聚簇索引和非聚簇索引的区别?

5、事务的隔离级别

6、SpringBean创建过程中的用到了哪些设计模式?

7、谈谈IOC和AOP

8、概述下spring中bean的生命周期

9、从源码的角度,描述一下SpringMvc的整个访问或者调用流程。

10、谈谈线程池的参数列表和拒绝策略

11、请概述AQS



第2面的时候,阿布感觉面试官想用JVM来撵压他,像运行时数据区,垃圾收集算法等,还有事务及Springmvc整个流程,AQS等,问的很多。



面试官:“简单谈谈IOC和AOP。”



阿布当时的回答确实也比较简单,源码这块他读了好几遍,IOC是控制反转,主要是对Bean的管理,然后还有对象依赖注入,阿布讲了它的多种注入方式,然后还讲了bean的生命周期,面试官就没往下问了。



关于AOP阿布重点讲了动态代理模式,还有AOP的源码实现,面试官点了头也没问了。



面试官:“关于从源码的角度,描述一下SpringMvc的整个访问或者调用流程。”



SpringMVC大家一定用过,但是源码才是你和别人不一样的地方。Springmvc的核心是一个servlet,DispatcherServlet,用户从浏览器提交到DispatcherServlet,由这个类进行分发,然后由这个类找到具体处理方法,然后再递交到Handler并执行这个Handler,执行完后返回给ModelAndView,最后就是进行视图解析,响应结果到浏览器。面试官当时说了思路正确,也就没多问了。



springmvc调用的核心流程图



一般大厂面试基本上所有的问题都是结合具体场景来问你问题,不仅要会使用这些技术,还要知道为什么要用这个技术,以及如何做到高可用等等。对于社招,我感觉是技术问的相对来说更加深入,所以对有些源码还是要了解点,比如并发相关的原理,是经常被问到的。JVM就更不用说了,几乎是必问到的。



我们所有的程序都运行在Java虚拟机上,只有对Java虚拟机底层原理进行深入的学习,不管是JVM内存区域、堆的分代与垃圾回收算法、JVM性能调优。在全面理解JVM的运行机制后,我们就能成为更优秀的Javaer。



同时很多的Java开发朋友在面试时面对JVM总会有答而不全,答非所问的情况,对学习Java虚拟机这一块今天在这笔者特地免费分享一份精心整理的JVM与性能调优核心实战知识点笔记及JVM面试题解析(基础,进阶,实战)给大家!

由于文章篇幅过长,小编整理成一套PDF文档的格式把JVM以及性能优化解析整理完成,文档获取方式:

需要获取得话麻烦一键三连+评论,然后添加VX(tkzl6666)即可免费领取







目录展示



从五个方面全面解析了JVM、性能优化及述写了面试常问解析



1.JVM内存区域划分





2.JVM执行子系统





3.垃圾回收器和内存分配策略





4.编写高效优雅Java程序





5.性能优化





JVM高频常问面试题解析





内容展示



JVM 内存区域划分内容



  1. 程序计数器(线程私有)

  2. Java栈(线程私有)

  3. 本地方法栈(线程私有)

  4. 堆(线程共享)

  5. 方法区(线程共享)

  6. 直接内存(线程共享)





二、JVM执行子系统内容



  1. Class类文件结构

  2. 字节码指令

  3. 类加载机制

  4. 类加载器

  5. Tomcat类加载机制

  6. 方法调用详解





三、垃圾回收器和内存分配策略内容



  1. Java中是值传递还是引用传递?

  2. 引用类型

  3. 基本垃圾回收算法

  4. 分代处理垃圾

  5. JAVA中垃圾回收GC的类型





四、编写高效优雅Java程序



  1. 面向对象

  2. 方法

  3. 通用程序设计





五、性能优化



  1. 常用的性能评价/测试指标

  2. 常用的性能优化手段

  3. 应用服务性能优化





JVM高频常问面试题解析





用户头像

添加我的微信:tkzl6666 获取文中资料 2020.09.19 加入

添加我的微信:tkzl6666 获取文中资料

评论 (1 条评论)

发布
用户头像
阿里 Java 研发第 2 面,都会问什么?斩获阿里 P6+ 的“他”告诉你答案
2020 年 12 月 18 日 16:37
回复
没有更多了
阿里Java研发第2面,都会问什么?斩获阿里P6+的“他”告诉你答案