Java 后端面试 2
笔试
Java 语法选择题
-
Java是值传递还是引用传递?python和c++是值传递还是引用传递?
答:Java是值传递,python是对象的引用,c++是值传递。
-
什么是反射?
答:反射是Java提供的一种机制,可以让运行中的Java程序在运行时获取类的信息,并能调用类的属性和方法。
-
@Transactional
注解在什么时候会失效?首先,我们需要知道注解都是在编译期被Spring Boot代理的,生成注解都需要有一个管理器,一般都存放在JVM内存当中nio-x线程的ThreadLocal中,总的来说就是Transactional注解被这个对应的manager代理了。而Spring Boot是通过AOP的方式来创建代理对象的,代理则是通过创建一个子类来extend它的父类去实现的。
-
@Transactional必须用于非public修饰的方法
-
@Transactional 注解属性 propagation 设置错误
-
@Transactional 注解属性 rollbackFor 设置错误
-
同一个类中方法调用,导致@Transactional失效
-
异常被你的 catch“吃了”导致@Transactional失效
-
数据库引擎不支持事务
-
算法题
-
给一个字符串,给出出现最多次数的字符个数,注意不区分大小写。
-
有一句话比如”i am sorry”,它会在这句话前面和后面随机添加同一串或几串字符”wub”,并且空格也会被替换成几个wub。你需要将替换后的结果,还原成原来的句子。
-
利用Java的substring实现对String类型的slice操作,并且注意边界条件。
-
springboot + mybatis 实战题。Get方法但是没有输入,让我们改成Get方法可以输入三个参数,并且三个参数都可以为空。改返回值为JSON对象。
面试
-
AOP / IOC
Aspect Oriented Programming,面向切面编程,是一种编程技术,它可以将一些通用功能抽象为一个模块,然后在需要的时候,将这个模块应用到另一个模块中,从而达到代码的重用和模块化的目的。
-
Spring Boot中的设计模式?
-
单例模式: 在Spring中定义的bean默认是单例模式。
-
工厂模式:Spring使用工厂模式通过BeanFactory、ApplicationContext创建Bean对象。
-
代理模式:Spring AOP功能的实现是通过代理模式中的动态代理实现的。
-
策略模式:Spring中资源访问接口Resource的设计是一种典型的策略模式。Resource接口是所有资源访问类所实现的接口,Resource 接口就代表资源访问策略,但具体采用哪种策略实现,Resource 接口并不理会。客户端程序只和 Resource 接口耦合,并不知道底层采用何种资源访问策略,这样客户端程序可以在不同的资源访问策略之间自由切换。
-
适配器模式:Spring AOP的增强或通知使用到了适配器模式。
-
装饰器模式:Spring 中配置 DataSource 的时候,DataSource 可能是不同的数据库和数据源,项目需要连接多个数据库,这种模式让我们可以根据客户需求切换不同的数据源。
-
模板模式:Spring中jdbcTemplate、hibernateTemplate等以Template结尾的对数据库操作的类,就是用到了模板模式。
-