阿里Java高级岗中间件二面:GC+IO+JVM+多线程+Redis+数据库+源码

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
可观测监控 Prometheus 版,每月50GB免费额度
云原生网关 MSE Higress,422元/月
简介: 一转眼,都2023年了,你是否在满意的公司?拿着理想的薪水?虽然“钱多、事少、离家近”的工作可能离技术人比较远,但是找到一份合适的工作,其实并不像想象中那么难。但是,有些技术人确实是认真努力工作,但在面试时表现出的能力水平却不足以通过面试,或拿到高薪,其实不外乎以下 2 个原因:第一,“知其然不知其所以然”。做了多年技术,开发了很多业务应用,但似乎并未思考过种种技术选择背后的逻辑。所以,他无法向面试官展现出自己未来技术能力的成长潜力。面试官也不会放心把具有一定深度的任务交给他。第二,知识碎片化,不成系统。在面试中,面试者似乎无法完整、清晰地描述自己所开发的系统,或者使用的相关技术。

一转眼,都2020年了,你是否在满意的公司?拿着理想的薪水?

虽然“钱多、事少、离家近”的工作可能离技术人比较远,但是找到一份合适的工作,其实并不像想象中那么难。但是,有些技术人确实是认真努力工作,但在面试时表现出的能力水平却不足以通过面试,或拿到高薪,其实不外乎以下 2 个原因:

第一,“知其然不知其所以然”。做了多年技术,开发了很多业务应用,但似乎并未思考过种种技术选择背后的逻辑。所以,他无法向面试官展现出自己未来技术能力的成长潜力。面试官也不会放心把具有一定深度的任务交给他。

第二,知识碎片化,不成系统。在面试中,面试者似乎无法完整、清晰地描述自己所开发的系统,或者使用的相关技术。所以,会让面试官怀疑他是否具备高效解决复杂问题、设计复杂系统的能力。

不少人准备技术面试,都会借助网上大量的“Java 面试笔试题”,今天小编也准备了一套阿里大佬整理的面试题,小伙伴可以试试,文末见详情!

阿里JAVA一面

1.volatile有什么用?

2.Minor GC和Full GC的触发时机

3.反射用到了哪些接口,哪些类?

4.反射机制中可以获取private成员的值吗?

5.Java中sleep方法和wait方法的区别

6.Java中有哪些注解?在SpringMVC中,requestmapping是自定义注

解,问:如何实现自定义注解?

阿里JAVA二面

1.线程池,threadpool有哪些重要的参数?

2.http协议头有哪些字段?

3.oracle如何实现分页(手写)

4.SpringMVC在处理前端页面请求时,各模块是如何工作的?

5.数据库索引有什么作用?带来的问题是什么?

6.以前有没有用过Java枚举

Java程序员项目介绍注意点

问及项目经验的时候,考察的并不是技术,而是你的项目概述能力。可按照下面的步骤进行:

1.从一个项目的生命周期为基准线展开讲,这样介绍更有层次感。接下来要将你在项目中的比重,你负责主要点有哪些。

2.在项目概述之后,就要讨论每个项目过程中遇到的困难部分,因为大部分项目都会遇到这个问题,所以尽量真实地描述你是如何解决问题的,这也将体现你解决问题的思想。

3.有礼貌的询问面试官对于项目还有哪些疑问或者不清楚的地方。

阿里巴巴Java高级岗必问面试题总结

一、Java多线程相关

  • 线程池的原理,为什么要创建线程池?创建线程池的方式;
  • 线程的生命周期,什么时候会出现僵死进程;
  • 说说线程安全问题,什么实现线程安全,如何实现线程安全;
  • 创建线程池有哪几个核心参数? 如何合理配置线程池的大小?
  • volatile、ThreadLocal的使用场景和原理;
  • ThreadLocal什么时候会出现OOM的情况?为什么?
  • synchronized、volatile区别、synchronized锁粒度、模拟死锁场景、原子性与可见性;

二、JVM相关

  • JVM内存模型,GC机制和原理;
  • GC分哪两种,Minor GC 和Full GC有什么区别?什么时候会触发Full GC?分别采用什么算法?
  • JVM里的有几种classloader,为什么会有多种?
  • 什么是双亲委派机制?介绍一些运作过程,双亲委派模型的好处;
  • 什么情况下我们需要破坏双亲委派模型;
  • 常见的JVM调优方法有哪些?可以具体到调整哪个参数,调成什么值?
  • JVM虚拟机内存划分、类加载器、垃圾收集算法、垃圾收集器、class文件结构是如何解析的;

三、Java高级部分

  • 红黑树的实现原理和应用场景;
  • NIO是什么?适用于何种场景?
  • Java9比Java8改进了什么;
  • HashMap内部的数据结构是什么?底层是怎么实现的?(还可能会延伸考察ConcurrentHashMap与HashMap、HashTable等,考察对技术细节的深入了解程度);
  • 说说反射的用途及实现,反射是不是很慢,我们在项目中是否要避免使用反射;
  • 说说自定义注解的场景及实现;
  • List 和 Map 区别,Arraylist 与 LinkedList 区别,ArrayList 与 Vector 区别;

四、Spring相关

  • Spring AOP的实现原理和场景?
  • Spring bean的作用域和生命周期;
  • Spring Boot比Spring做了哪些改进? Spring 5比Spring4做了哪些改进;
  • 如何自定义一个Spring Boot Starter?
  • Spring IOC是什么?优点是什么?
  • SpringMVC、动态代理、反射、AOP原理、事务隔离级别;

五、中间件篇

  • Dubbo完整的一次调用链路介绍;
  • Dubbo支持几种负载均衡策略?
  • Dubbo Provider服务提供者要控制执行并发请求上限,具体怎么做?
  • Dubbo启动的时候支持几种配置方式?
  • 了解几种消息中间件产品?各产品的优缺点介绍;
  • 消息中间件如何保证消息的一致性和如何进行消息的重试机制?
  • Spring Cloud熔断机制介绍;
  • Spring Cloud对比下Dubbo,什么场景下该使用Spring Cloud?

六、数据库篇

  • 锁机制介绍:行锁、表锁、排他锁、共享锁;
  • 乐观锁的业务场景及实现方式;
  • 事务介绍,分布式事物的理解,常见的解决方案有哪些,什么事两阶段提交、三阶段提交;
  • MySQL记录binlog的方式主要包括三种模式?每种模式的优缺点是什么?
  • MySQL锁,悲观锁、乐观锁、排它锁、共享锁、表级锁、行级锁;
  • 分布式事务的原理2阶段提交,同步\异步\阻塞\非阻塞;
  • 数据库事务隔离级别,MySQL默认的隔离级别、Spring如何实现事务、JDBC如何实现事务、嵌套事务实现、分布式事务实现;
  • SQL的整个解析、执行过程原理、SQL行转列;

七、Redis

  • Redis为什么这么快?redis采用多线程会有哪些问题?
  • Redis支持哪几种数据结构;
  • Redis跳跃表的问题;
  • Redis单进程单线程的Redis如何能够高并发?
  • Redis如何使用Redis实现分布式锁?
  • Redis分布式锁操作的原子性,Redis内部是如何实现的?

八、其他

看过哪些源代码?然后会根据你说的源码问一些细节的问题?(这里主要考察面试者是否对技术有钻研的精神,还是只停留在表面,还是背了几道面经,这个对于很多有强迫症的面试官,如果你连源码都没看过,基本上是会pass掉的!)

为了让你们去网上找资料麻烦,这里总结一份阿里内部面试大全分享

大厂面试资料整理不易、对这份面试答案感兴趣的工程师朋友们可以点击此处来获取就可以了!

1、阿里内部手册、Java核心知识点

2,大厂面试答案

大厂面试资料整理不易、对这份面试答案感兴趣的工程师朋友们可以点击此处来获取就可以了!

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
监控 Java Unix
6个Java 工具,轻松分析定位 JVM 问题 !
本文介绍了如何使用 JDK 自带工具查看和分析 JVM 的运行情况。通过编写一段测试代码(启动 10 个死循环线程,分配大量内存),结合常用工具如 `jps`、`jinfo`、`jstat`、`jstack`、`jvisualvm` 和 `jcmd` 等,详细展示了 JVM 参数配置、内存使用、线程状态及 GC 情况的监控方法。同时指出了一些常见问题,例如参数设置错误导致的内存异常,并通过实例说明了如何排查和解决。最后附上了官方文档链接,方便进一步学习。
264 4
|
4月前
|
存储 监控 Java
JVM实战—8.如何分析jstat统计来定位GC
本文详细介绍了使用jstat、jmap和jhat等工具分析JVM运行状况的方法,以及如何合理优化JVM性能。内容涵盖新生代与老年代对象增长速率、Young GC和Full GC的触发频率及耗时等关键指标的分析。通过模拟BI系统和计算系统的案例,展示了如何根据实际场景调整JVM参数以减少FGC频率,提升系统性能。最后汇总了常见问题及其解决方案,帮助开发者更好地理解和优化JVM运行状态。
JVM实战—8.如何分析jstat统计来定位GC
|
2月前
|
存储 监控 算法
Java程序员必学:JVM架构完全解读
Java 虚拟机(JVM)是 Java 编程的核心,深入理解其架构对开发者意义重大。本文详细解读 JVM 架构,涵盖类加载器子系统、运行时数据区等核心组件,剖析类加载机制,包括加载阶段、双亲委派模型等内容。阐述内存管理原理,介绍垃圾回收算法与常见回收器,并结合案例讲解调优策略。还分享 JVM 性能瓶颈识别与调优方法,分析 Java 语言特性对性能的影响,给出数据结构选择、I/O 操作及并发同步处理的优化技巧,同时探讨 JVM 安全模型与错误处理机制,助力开发者提升编程能力与程序性能。
Java程序员必学:JVM架构完全解读
|
4月前
|
存储 缓存 算法
JVM简介—1.Java内存区域
本文详细介绍了Java虚拟机运行时数据区的各个方面,包括其定义、类型(如程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区和直接内存)及其作用。文中还探讨了各版本内存区域的变化、直接内存的使用、从线程角度分析Java内存区域、堆与栈的区别、对象创建步骤、对象内存布局及访问定位,并通过实例说明了常见内存溢出问题的原因和表现形式。这些内容帮助开发者深入理解Java内存管理机制,优化应用程序性能并解决潜在的内存问题。
242 29
JVM简介—1.Java内存区域
|
4月前
|
存储 监控 Java
JVM实战—7.如何模拟GC场景并阅读GC日志
本文主要介绍了:如何动手模拟出频繁Young GC的场景、JVM的Young GC日志应该怎么看、编写代码模拟动态年龄判定规则进入老年代、编写代码模拟S区放不下部分进入老年代、JVM的Full GC日志应该怎么看。
146 16
JVM实战—7.如何模拟GC场景并阅读GC日志
|
4月前
|
消息中间件 Java 应用服务中间件
JVM实战—1.Java代码的运行原理
本文介绍了Java代码的运行机制、JVM类加载机制、JVM内存区域及其作用、垃圾回收机制,并汇总了一些常见问题。
JVM实战—1.Java代码的运行原理
|
5月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
138 19
|
4月前
|
SQL Java 数据库连接
【YashanDB知识库】个别数据库用户无法登录数据库,报错 io fail:IO.EOF
【YashanDB知识库】个别数据库用户无法登录数据库,报错 io fail:IO.EOF
|
6月前
|
存储 监控 算法
Java JVM 面试题
Java JVM(虚拟机)相关基础面试题
|
7月前
|
算法 网络协议 Java
【JVM】——GC垃圾回收机制(图解通俗易懂)
GC垃圾回收,标识出垃圾(计数机制、可达性分析)内存释放机制(标记清除、复制算法、标记整理、分代回收)