最近的一些Java面试小结(1)

技术面试中,最重要的可以说是「技术体系」。也就是你不仅要有技术的深度和广度,更要能把它们串起来,其实有不少技术点是相通或相似的,如果面试中能够触类旁通、举一反三,是一个很好的加分项。比如:

  • Redis 的 AOF 和 MySQL 的 bin log

  • Spring 中的 BeanDefinition 和 JVM 中类的元信息

  • 布隆过滤器和 HashMap

  • 等等

技术的积累虽然主要在平时,但刷刷面试题还是很有必要的,有不少其实就是所谓的“八股文”。这里主要列出本人面试过程中真实遇到的一些面试题,仅供参考。

Java

线程池

  • 核心参数有哪些?

  • 任务执行流程

  • 任务拒绝策略

  • synchronized 锁升级过程

  • ReentrantLock

  • 实现原理(AQS)

  • 公平锁如何实现?

  • volatile 特性

HashMap

  • HashMap & ConcurrentHashMap 实现原理

  • ConcurrentHashMap 如何实现线程安全

MySQL

  • 索引

  • 分类?使用场景?

  • InnoDB 索引的结构(B+树),为什么不用 B 树?

  • 如何查看索引的使用情况?Explain 关注哪些字段?

  • 事务

  • 隔离级别

  • RC/RR 的实现原理

Redis

  • 常用数据结构

  • zset 实现原理

  • hash 扩容过程

  • 常见缓存问题

  • 缓存穿透、缓存击穿、缓存雪崩、热点 key

  • 如何解决上述问题?

  • 持久化:RDB、AOF,二者区别

  • Redis 为什么快?线程模型是怎样的?

  • 内存满了怎么办?淘汰策略有哪些?

  • 使用什么集群框架?

Spring

  • IoC、AOP 实现

  • 事务传播特性、失效场景

  • JDK & CGLib 区别

  • Spring Boot 启动原理

Dubbo

  • Dubbo 架构

  • 负载均衡算法、容错策略、灰度测试

  • SPI 机制

  • RPC 调用过程

  • RPC & HTTP

  • 二者区别与联系

  • 为什么 Spring Cloud 使用 HTTP 而非 RPC?

JVM

  • 运行时内存划分

  • 垃圾收集算法

  • 一个对象的内存分配过程?

  • CMS 收集器

  • 收集过程

  • 哪个过程会有 STW?

  • 如何处理内存碎片问题?

  • G1 收集器特点

  • GC Roots 有哪些?

  • JVM 常用参数配置有哪些?

  • 内存占用过多,如何排查?

RocketMQ

  • 整体架构

  • 如何保证消息的可靠性?

  • 如何实现顺序消息?

  • 消费者接口幂等设计

  • 事务消息实现

分布式

  • 分布式锁

  • Redis 如何实现?命令?

  • ZooKeeper 如何实现?

  • 获取锁失败时如何处理?

  • 分布式事务

  • 2PC:缺点?

  • 3PC:解决了 2PC 什么问题?

  • TCC:缺点?

  • 最终一致性:MQ 实现流程

  • 实现框架(Seata)

其他

==

除了上面的「项目」和「技术」,可能还会问到一些其他问题,比如场景设计与分析、算法,还可能有一些比较开放的问题,下面介绍下我所遇到的。

场景设计&分析

  • 秒杀场景设计

比较典型的场景设计,电商类的公司很可能会问到,网上有很多案例和文章分析,这里不再赘述。

  • 分布式锁设计

这个应该不是热门,本人也就遇到过一次,不过那一次被搞得有点懵,可能更多的是考察思路,大家可以多思考一下。

  • JVM 问题排查:线上 JVM 内存、CPU 飙升,如何去排查?

主要涉及一些常用的 Linux 命令和 JDK 自带工具,比如 top、jstack、jmap 等,以及阿里的开源工具 Arthas 等。

虽然在实际情况中我们可能很少有机会接触(小小开发通常没权限,还是要运维大佬支持),但这些工具还是要了解的,可以在本地跑个 Demo 去验证,以免到时候答不上来。

  • 容灾处理

假如线上所有机器(包括服务器、数据库、缓存服务器)全部宕机,如何处理?

PS: 这些场景设计和分析的问题,通常比较综合,一般是考察对一个场景的整体设计,或者分析和解决问题的思路。

算法

  • 爬楼梯

  • 二叉树遍历

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

如果觉得本文对你有帮助的话,不妨给我点个赞,关注一下吧!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
、源码讲义、实战项目、讲解视频,并且会持续更新!**

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

如果觉得本文对你有帮助的话,不妨给我点个赞,关注一下吧!

[外链图片转存中…(img-7XgRNR6A-1713732471200)]

[外链图片转存中…(img-Nh9I9yRv-1713732471200)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 19
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值