JAVA后台开发常见面试题

本文涵盖了JAVA后台开发的面试重点,包括:JAVA基础知识如JVM内存、GC算法、设计模式和线程池;Spring Boot/Spring Cloud面试题,如事务处理和启动方法;分布式事务解决方案,如2PC、TCC;还涉及MySQL、Redis、分布式理论、RabbitMQ、计算机网络和操作系统知识。是Java开发者面试必备参考资料。
摘要由CSDN通过智能技术生成

一、java基础知识。

1.jvm内存划分,GC算法,排查OOM常用的命令。

答:堆、栈、方法区、程序计数器、常量池、直接内存、本地方法栈

GC算法:标记-清除;复制算法;标记-整理,排查命令:JPS查看java进程,jinfo查看jvm配置信息;jmap -heap查看堆详细信息,jstat -gc查看GC信息,jmap -dump打印dump日志

2.类加载器种类和加载过程。

答:启动类、扩展类、APP类加载器。加载过程:一个类加载器收到加载类的请求,不会自己去加载,而是委派给父类加载器去加载,父类加载器无法完成加载,才给子类去加载。

3、设计模式

 设计原则:单一职责、接口隔离、开闭原则、依赖倒置原则、里氏替换原则、迪米特法则。

  • 里氏代换原则 :任何基类可以出现的地方,子类一定可以出现
  • 依赖倒转原则 :针对接口编程,依赖于抽象而不依赖于具体
  • 迪米特法则:最少知道原则 ,一个实体应当尽量少的与其它实体发生相互作用,使得功能模块相互独立

4、线程池参数有哪些参数?同步工具类有哪些?CountDownLatch、Semaphore、CyclicBarrier

实现线程的方式:三种。拒绝策略:拒绝且抛错、拒绝不抛错、删除队列最老的线程、调用者线程自己执行

线程状态流转:

二、spring boot,spring cloud面试题。


spring事务注解失效的场景:
1.访问权限问题
2.方法用final修饰
3.方法内部调用
4.未被spring管理
5.多线程调用
6.表不支持事务
7.未开启事务
8.错误的传播特性
9.自己吞了异常
10.手动抛了别的异常,因为spring事务,默认情况下只会回滚RuntimeException(运行时异常)和Error(错误),对于普通的Exception(非运行时异常),它不会回滚。
11.自定义了回滚异常,因为如果使用默认值,一旦程序抛出了Exception,事务不会回滚,这会出现很大的bug。所以,建议一般情况下,将该参数设置成:Exception或Throwable。
12.嵌套事务回滚多了。


spring boot启动后执行方法的5种方式:
1.实现 CommandLineRunner 接口。
2.实现 ApplicationRunner 接口。
3.实现ApplicationListener 接口监听 ApplicationStartedEvent 或者 ApplicationReadyEvent事件。
4.@PostConstruct 注解
5.实现 InitializingBean 接口,重写afterPropertiesSet()方法。

 spring boot启动流程分析:Spring Boot启动过程分析 - 简书

三、分布式事务解决方法

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值