中高级Java工程师面试准备指南:SSM框架与SpringCloud技术栈详解

讲完如何写简历(如果要面试中级或高级Java工程师,简历怎么写?),本文的亮点就在这里。我们来谈谈如何准备面试以及需要准备哪些技术点。

中高级Java工程师面试准备指南:SSM框架与SpringCloud技术栈详解

框架和中间件

1. 三大框架ssm

(1)Spring的ioc原理;创建bean的过程;如何查看代码中是否有ioc

(2)AOP原理:动态代理分为jdk和cglib。两者有什么区别?

(3)Springmvc执行流程

(四)mybatis中$和#的区别及适用场景

(5)如果能看到源代码就更好了,这会成为一个亮点。由于时间原因没有看,不过听说mybatis的源码很不错。嗯,有时间的话我会去看一下。

2.Springcloud技术栈

(1) 项目中使用了哪些组件以及它们如何协同工作?画一幅画。推荐博客:Spring Cloud底层原理

(2)Hystrix是如何进行熔断的; feign如何进行服务间调用; Ribbon 的作用是什么:负载均衡

3.Redis

(一)redis的5种数据类型及适用场景。比如用set来去除重复等等。

(2)Redis删除策略:定期删除、设置过期时间、懒惰删除

(三)redis如何防止缓存穿透和雪崩,具体技术方案

(4)redis有哪两种持久化机制?这两种类型(AOF、RDB)有什么区别、优缺点

(五)我公司redis集群的架构

(6)redis分布式锁在哪里以及如何使用(NX EX、Redission);还有其他分布式锁(zk、行锁)

(7)Redis相关操作命令,比如如何插入和弹出列表数据(lpush、lpop)

(8)关于Redis底层原理,可以看看中文虎山的面试课程,传送门:Java工程师面试突击

4.其他

(1)dubbo+zk的调用原理。因为我专注于准备Springcloud技术栈,所以对此并没有深入的了解。可以看看哨兵机制等等。

(2)mq,因为项目中使用的是Rabbitmq,所以我重点准备了这个。有哪些模式及其区别;如何保证消息不丢失:confirm和ack

(3)mycat,我们项目中使用的是它的分库分表功能,实现多租户。这个原理你可以看一下。我只知道这个是根据公司ID来划分数据库的。剩下的就需要深入理解了。

(4)xxl-job,为什么选择这个,它与其他时序框架有什么不同;您需要能够自己绘制原理图。

(5)Activiti工作流,对于这个工作流框架,我只停留在使用的阶段,所以我“了解”它。

基础与数据库

1.Java基础知识

(1)Hashmap,这个是面试必问的,一定要准备的。这个并不难,花一两个小时阅读相关资料然后总结一下就可以了。

(2) 收藏。常用的集合有哪些?不要将它们与redis支持的数据类型混淆;每个集合的特征。

(3)多线程,这个也很重要。

(4)剩下的,比如泛型、反射,只要你能解释清楚这是干什么用的就可以了。我刚刚写了这些 Java 基础知识:集合、多线程、泛型和反射。

2. JVM

(1)jvm的内存模块必须能够被绘制。

(2)堆分为哪些部分,为什么持久代改为元空间?

(3)类加载过程;家长委派有什么用?如果我自己写一个string类,可以加载到内存中吗?

(4)垃圾收集算法有哪些及其优缺点?垃圾收集器有哪些?

(5)你通常如何优化jvm?如果gc频繁,可能是什么原因?

(6)您平时如何监控jvm的性能?

3、设计模式

(1)能够手写单例代码,通常双检测的就够了;饥饿者、懒人、双重检测是否是线程安全的,为什么;为什么双检测是双而不是单?

(2)我的简历上写了3种设计模式:单例、策略、代理。我感觉这3个比较常用

4. 算法

(1) 气泡、快速、插入

(2)还有一些相关的数据结构,比如链表闪回等。我来谈谈这个想法。如果你想写代码...o(╯□╰)o

5.MySQL

(1)mysql主要分为3部分:索引、锁、事务

(2)索引的分类(B+树索引、全文索引、哈希索引); B+树的分类(聚集索引和辅助索引);聚集索引和辅助索引的区别

(3)B+树和B树的区别; InnoDB 和 myIsam 的区别

(4)数据库中有哪些锁?

(5)事务的隔离级别,即InnoDB(读已提交、读未提交、可重复读、序列化)

(6)重复读(幻读)会带来什么问题; InnoDB如何解决这个问题(MVCC);什么是MVCC

(7) 交易传播机制;什么情况下@Tansactional会失败?

(8)什么情况下适合建立索引?索引失败的场景

(9)如何监控和调优复杂的SQL

前端及管理

(1)我写了平时使用的前端框架Angular、ionic、vue,以及常用的工具git、xiaopiu、Jenkins、Maven等,几乎没有面试官问过这些。

(2)Linux中的常用命令,例如如何查看实时日志等。

自己的项目和其他项目

按比例划分,上述技术及其原理占80%,项目占20%。

(1) 您最熟悉哪个项目?这个项目是做什么用的?它的业务是什么?这个项目的QPS是多少?

(2)你做了什么?这个项目的难点和亮点是什么?开发过程中遇到了哪些问题以及如何解决的?您是否遇到过上网问题?

(3)以上内容一定要提前想好,否则现场记不住要说什么。别问我怎么知道的。

(4)其余的,比如期望薪资、最低薪资等需要提前想好;你需要问清楚上下班时间,五险一金如何缴纳,公司有没有其他福利。

概括

一般来说,简历上写什么,面试官就会问什么,所以要好好看看简历上的技能。

有些地方可能没说清楚。欢迎大家指出交流,共同进步~

类似文章直接上传到:

如果我想面试中级或高级Java工程师,我应该如何写简历? (附照片)

如果你想面试中级或高级Java工程师,你应该寻找哪些信息? (列表)

你可能想看:
« 上一篇
下一篇 »

相关推荐

java中什么是冒泡,冒泡算法

2026年09月06日

30阅读

java中冒号,java双冒号

2026年09月06日

28阅读

java中的->,java中的是什么意思

2026年09月06日

29阅读

java中的super用法,Java中super的说明

2026年09月06日

29阅读

java中反射的应用,java中反射的应用场景

2026年09月06日

27阅读

java中开关的定义,Java关键字有哪些

2026年09月06日

29阅读