欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

整理Java面试题

程序员文章站 2022-04-12 21:40:28
...

这里是引用

只为成功找方法,不为失败找借口!

spring mvc运行原理

  • Spring是一个模块,基于MVC的一个框架。MVC是一种设计模式。M:Model;V:View,C:Controller
  • 用户发送请求由前端控制器DispatcherServlet来决定哪个页面的控制器进行处理,由HandlerMapping查找与请求匹配的Handler,再由DispatcherServlet来调用HandlerAdaper中Handler来处理,处理完会返回一个ModelAndView,HandlerAdapter发送给DispatcherServlet进行视图的解析(ViewResolver),ViewResolver将逻辑视图解析成具体的视图,返回给DispatcherServlet,再进行视图渲染(View),最后通过DispatcherServlet返回给用户。
    整理Java面试题

介绍spring aop 和 ioc

  • IOC: 控制反转 对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系,所有的类的创建、销毁都由 spring来控制,IOC在系统的运行中,动态的向某个对象提供它所需要的其他对象
    由IOC容器帮对象找相应的依赖对象并注入(依赖注入)【注入对象所需要的对象,资源或者常量数据】
    整理Java面试题
    AOP:面向切面编程,可以动态地添加和删除在切面上的逻辑而不影响原来的代码,可以用作日志记录,统一异常处理,事务处理,权限检查等方面
@Aspect
@Component
public class RequestLogAspect {
    private static final Logger logger = LoggerFactory.getLogger(RequestLogAspect.class);

    @Pointcut("execution(public * com.ckq.controller..*.*(..))")
    public void webLog() {

    }
    @Before("webLog()")
    public void doBefore(JoinPoint joinPoint) {
        //接收到请求,记录请求内容
        ServletRequestAttributes attributes = (ServletRequestAttributes)joinPoint;
        HttpServletRequest request = attributes.getRequest();
        //记录下请求的内容
        logger.info("URL : " + request.getRequestURL().toString());
        logger.info("IP :" + request.getRemoteAddr());
    }
    
    @AfterReturning(returning = "ret", pointcut = "webLog()")
    public void AfterRetuning(Object ret) {
        // 处理完请求,返回内容
        logger.info("RESPONSE : " + ret);
    }
}

spring中bean注入的几种方式

三种bean配置方式

  • 基于xml 配置
<bean id="logDao" class="com.baobaotao.anno.LogDao"/>
    <bean id="userDao" class="com.baobaotao.anno.UserDao"/>
   <bean class="com.baobaotao.anno.LogonService">
       <property name="logDao" ref="logDao"></property>
       <property name="userDao" ref="userDao"></property>
   </bean>
  • 基于注解
@Autowired
@Qualifier 指定注入Bean名称
@Resource
  • 基于Java类提供的bean定义
@Configuration
@Component(默认单例模式)

spring 和 springboot 的区别

  1. spring boot中的一些特性
    • 创建独立的spring 应用
    • 嵌入Tomcat,Jetty,Undertow 容器
    • 提供starters 建华构建配置
    • 尽可能的自动配置spring 应用
    • 提供生成指标,健康检查配置
    • 没有代码生成和xml 配置要求
  2. Maven依赖
    spring 创建的web 应用需要最小依赖项
    springboot 只需要一个依赖项启动和运行web 应用程序
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>2.0.6.RELEASE</version>
    </dependency>
    spring-boot-starter-data-jpa
    spring-boot-starter-security
    spring-boot-starter-test
    spring-boot-starter-web
    spring-boot-starter-thymeleaf
    

线程的生命周期,线程的状态

新建 new
运行 Runnable(Running,Ready)
无限期等待 Wait
限期等待 Timed Wait
阻塞 Block
结束 Terminated
整理Java面试题

多线程的实现方式

  1. 基础Thread类,重写run 方法
  2. 实现Runnable 接口,重写run方法,实现Runnable 接口的实现类的实例对象作为Thread构造函数的target
  3. 通过Callable 和 FutureTask 创建线程
  4. 通过线程池创建线程
相关标签: 面试