![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试题
文章平均质量分 68
阿福66
这个作者很懒,什么都没留下…
展开
-
springboot面试题
starter提供了一个自动化配置类,一般命名为 XXXAutoConfiguration ,在这个配置类中通过条件注解来决定一个配置是否生效(条件注解就是 Spring 中原本就有的),然后它还会提供一系列的默认配置,也允许开发者根据实际情况自定义相关配置,然后通过类型安全的属性注入将这些配置属性注入进来,新注入的属性会代替掉默认属性。javaWeb是 Java 语言的 Web 开发技术,主要用于开发 Web 应用程序,包括基于浏览器的客户端和基于服务器的 Web 服务器。准生产环境的运行应用监控。原创 2023-11-13 22:57:56 · 376 阅读 · 0 评论 -
Mybatis面试题
因为在使用SqlSession第一次查询后,Mybatis会将结果放到缓存中,以后再次查询时,如果没有声明需要刷新,并且缓存没超时的情况下,SqlSession只会取出当前缓存的数据,不会再次发送SQL到数据库。若使用不同的SqlSession,因为不同的SqlSession是相互隔离的,不会使用一级缓存。缓存:合理使用缓存是优化中最常见的方法之一,将从数据库中查询出来的数据放入缓存中,下次使用时不必从数据库查询,而是直接从缓存中读取,避免频繁操作数据库,减轻数据库的压力,同时提高系统性能。原创 2023-11-12 22:42:30 · 276 阅读 · 0 评论 -
springMVC面试题
SpringMVC的处理器拦截器()类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理,用户可以自己定义一些拦截器来实现特定的功能。而拦截器链就是将拦截器按一定的顺序联结成一条链【servlet中有过滤器链】。preHandle是前置操作,Handle执行前执行,返回布尔值,表示是否通过拦截器。如果该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去进行处理,则返回true;如果不需要再调用其他的组件去处理请求,则返回false;原创 2023-10-30 22:51:05 · 114 阅读 · 0 评论 -
springMVC 面试题
Controller: 用于标识此类的实例的是一个控制器@RequestMapping: 映射url路劲@ReponseBody: 返回JSON数据@RequestBody:将JSON数据转换为json数据,将json数据转换为Java对象@PathVaiable: 获得URL中路径变量中的值@Param: 获取请求参数。原创 2023-10-28 20:06:03 · 572 阅读 · 0 评论 -
SpringMVC原理及核心组件
Spring MVC 是一个对javaWeb中Servlet 简化和封装,1.首先SpringMVC 配置DispatcherServlet 来接受所有的请求,我们通过DispatcherServlet 响应的所有数据,DispatcherServlet 是HttpServlet的子类,他的所有方法(Get,Post…)最终都会执行doDispatch方法2.根据用户的输入url通过SpringMVC handlerMapping组件 找到对应的 HandlerExecutionChain 执行链。原创 2023-10-24 22:41:14 · 718 阅读 · 0 评论 -
springMvc的简介
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。原创 2023-10-23 23:00:29 · 1196 阅读 · 0 评论 -
spring面试题
另外,@Autowired是Spring提供的,@Resource是JSR-250提供的,是Java标准,我们使用的IoC容器会去兼容它,这样即使更换容器,也可以正常工作。当多个用户同时请求一个服务时,容器会给每一个请求分配一个线程,这时多个线程会并发执行该请求对应的业务逻辑,如果业务逻辑有对单例状态的修改(体现为此单例的成员属性),则必须考虑线程安全问题。对象,并对此成员变量的值进行修改操作,因此会互相影响,会有并发安全的问题。Spring的Bean默认都是单例的,某些情况下,单例是并发不安全的。原创 2023-10-21 23:00:14 · 518 阅读 · 0 评论 -
Spring怎么解决循环依赖的问题?
spring 容器在获取bean的时候首先从一级缓存总获取,获取不到,到二级缓存获取,如果获取不到到三级缓存获取,如果从三级缓存获取到了就会从三级缓存中删除缓存,然后将从三级缓存获取的半成品bean放到二级缓存。: 单例对象工厂map,bean name --> ObjectFactory,单例对象实例化完成之后会加入singletonFactories。二级缓存 主要存放完成实例化未初始化的单例对象map,bean name -->对于属性注入的循环依赖(单例模式下),是通过三级缓存处理来循环依赖的。原创 2023-10-20 00:00:01 · 253 阅读 · 0 评论 -
spring事务面试题
因为spring事务底层使用了aop,也就是通过jdk动态代理或者cglib,帮我们生成了代理类,在代理类中实现的事务功能。如果一个活动的事务存在,则运行在一个嵌套的事务中,如果没有活动事务,则按PROPAGATION_REQUIRED属性执行。:通过编程的方式管理事务,自己设置未提交模式,自己获取连接,自己预编译,自己回滚,自己提交事务。如果存在一个事务,支持当前事务,如果不存在事务,则抛出异常。如果存在事务,支持当前事务,当前没有事务,则非事务的执行。总是非事务存在,如果存在一个活动事务,则抛出异常。原创 2023-10-17 22:03:57 · 431 阅读 · 0 评论 -
Spring面试题
2.@Resource是j2ee的注解,默认是根据类型匹配的,要是有多个同一类型的bean会根据,name值来找,如何没有指定name 值,就会根据实例的名字来找。@Bean 是使用 Java 代码装配 Bean,@Component 是自动装配 Bean。@Bean注解方法上,表示这个方法会返回一个Bean,@Bean需要在配置使用,类上需要加@Configuration注解。找到同一种类型的bean,然后将这一个bean注入到另外的bean中,注意注入过程中需要有setter器。原创 2023-10-16 22:00:53 · 60 阅读 · 0 评论 -
Spring面试题
1.调用bean的构造方法创建Bean2.通过反射调用Set方法设 bean的属性3.如果Bean 实现了实现了接口,Spring将调用(),设置Bean的name4.如果Bean实现了BeanFactoryAware接口,Spring将调用把bean factory设置给Bean5.如果存在接口,Spring 将 调用它们的(预初始化)方法,在Bean初始化前对其进行处理6.如果Bean 实现接口,spring将调用它的。原创 2023-10-12 00:01:34 · 139 阅读 · 0 评论 -
spring面试题
ioc 也称为控制反转,由Spring容器管理bean的整个生命周期,通过反射实现对其他对象的控制在Spring创建对象的过程中,把对象依赖的属性注入到对象中。依赖注入主要有两种方式:构造器注入和属性注入。原创 2023-10-08 23:45:25 · 92 阅读 · 0 评论 -
spring面试题
面向切面编程,作为面向对象的一种补充,将公共逻辑(事务管理、日志、缓存等)封装成切面,跟业务代码进行分离,可以减少系统的重复代码和降低模块之间的耦合度。切面就是那些与业务无关,但所有业务模块都会调用的公共逻辑。原创 2023-10-07 23:40:55 · 137 阅读 · 0 评论 -
Java面试题
采用安全失败机制的集合容器,在遍历时不是直接在集合内容上访问的,而是先复制原有集合内容,在拷贝的集合上进行遍历。java.util.concurrent包下的容器都是安全失败,可以在多线程下并发使用,并发修改。原理:由于迭代时是对原集合的拷贝进行遍历,所以在遍历过程中对原集合所作的修改并不能被迭代器检测到,所以不会触发Concurrent Modification Exception。缺点。原创 2023-10-06 00:57:09 · 180 阅读 · 0 评论 -
HashMap面试题
Hash 值的范围值比较大,使用之前需要先对数组的长度取模运算,得到的余数才是元素存放的位置也就是对应的数组下标。这个数组下标的计算方法是。将HashMap的长度定为2 的幂次方,这样就可以使用位运算代替%取余的操作,提高性能。// 容纳键值对的最大值// 负载因子int size;Node[] table的初始化长度length为16,默认的loadFactor是0.75,0.75是对空间和时间效率的一个平衡选择,根据泊松分布,loadFactor 取0.75碰撞最小。原创 2023-10-02 23:03:23 · 876 阅读 · 0 评论 -
java集合
foreach遍历的时候删除元素会导致数组删除失败,可以使用迭代器的remove()方法。1.Arraylist 基于数组实现的,linkedList基于链表实现的。原创 2023-09-30 00:15:52 · 174 阅读 · 0 评论 -
ArrayList 的扩容机制
创建用户自定义长度的数组ArrayList扩容的核心从ensureCapacityInternal方法说起。可以看到前面介绍成员变量的提到的ArrayList有两个默认的空数组:**DEFAULTCAPACITY_EMPTY_ELEMENTDATA:**是用来使用默认构造方法时候返回的空数组。如果第一次添加数据的话那么数组扩容长度为DEFAULT_CAPACITY=10。原创 2023-09-27 07:56:09 · 120 阅读 · 0 评论 -
Java面试题十二天
使用基本数据类型定义属性时,如果没有给属性赋初始值,会使用默认值(如 int 的默认值为 0),而使用包装类型定义属性,如果没有给属性赋初始值,属性的值为 null,这样可以更加清晰地表达属性的状态,在一些业务场景上,null是有实际业务含义的。:在一些特定场景下,如果使用基本数据类型定义属性,需要进行多次装箱和拆箱操作,这个操作会带来额外的性能开销和代码复杂度。而使用包装类型定义属性,可以避免这个问题,提高代码的效率和可读性。原创 2023-09-24 00:44:32 · 194 阅读 · 0 评论 -
Java面试题基础第十一天
有以下有几种方法,跨域资源共享我们可以通过springboot 为每一个请求设置它的请求头,来设置它的可以跨域 的路径,这样可以为每一个请求都可以跨域了我们可以通过springboot 来设置Controller类加个@CrossOrigin注解就可以进行跨域了,注意SpringMVC的版本要在4.2或以上版本才支持@CrossOrigin。nginx反向代理跨域原理如下: 首先同源策略是浏览器的安全策略,不是HTTP协议的一部分。原创 2023-09-21 23:50:18 · 228 阅读 · 0 评论