ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

面试题总结

2022-06-13 22:00:45  阅读:108  来源: 互联网

标签:总结 异步 面试题 调用 Spring 模式 线程 引用


  1. Java中,4种对象引用之间的区别
    • 强引用:只要引用关系还在,对象永远不会被回收
    • 软引用:非必须存活的对象,JVM会再内存溢出前对其进行回收
    • 弱引用:非必须存活的对象,不管内存是否够用,下次GC一定回收
    • 虚引用:必须和引用队列一起使用,等同于没有引用,对象被回收时会被通知。
  2. Java中保证线程安全的方式有哪些?
    • 使用同步关键字synchronized或Lock使线程互斥同步
    • 使用自旋CAS保证原子操作,实现共享变量的线程安全
    • 使用ThreadLocal实现多个线程之间的数据隔离
  3. 什么是CAS
    • CAS是Compare And Swap(比较并替换)的缩写,是Java并发实现原子操作的一种方式。
    • 将内存位置的数值与预期的数值进行比较,如果相等,则内存位置的值替换为新的值,如果不相等则什么也不做
  4. 线程和进程有什么区别
    • 进程是系统资源分配的最小单位,线程是程序执行的最小单位
    • 先有进程后有线程,进程有独立的地址空间,而线程必须依赖进程而存在
    • 进程之间不能共享资源,而线程共享所在进程的地址空间和其他资源。
  5. 异步和多线程的关系
    • 同步:是线程的的顺序执行,必须执行完一个再执行下一个,需要等待,协调运行
    • 异步:是让主线程不需要等待另一个线程的完成,也可以继续执行其他任务
    • 对比:异步和多线程并不是同等的关系,实现异步的方式有很多,多线程只是实现异步的一种方式。
  6. Spring中用到了哪些设计模式
    • 工厂模式:比如BeanFactory就是简单工厂模式的体现,用来创建对象的实例
    • 单例模式:比如说Spring中的Bean默认为单例模式
    • 装饰器模式:比如BeanWrapper,访问Bean的属性和方法
    • 策略模式:SimpleInstantiationStrategy,Bean的实例化策略。
    • 适配器模式:MVC模块中的HandlerAdapter
    • 代理模式:AOP模块的AopProxy,采用JDK动态代理和CGLIB字节码生成技术。
    • 模板方法模式:Restemplate、JdbcTemplate、用来解决代码重复的问题
    • 观察者模式:ApplicationLister,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知。
  7. 导致Spring事务失效的原因有哪些?
    • @Transcational事务注解添加再不是public修饰的方法上
    • 类没有被Spring托管,导致Spring无法实现代理
    • 抛出的异常被catch处理了,导致@Transcational无法回灌而失效
    • 调用同一个类中的方法,导致@Transcational失效
    • propagation事务传播配置错误?
    • rollbackFor参数设置错误?
    • 数据库配置了不支持事务的引擎,或者是数据库本身不支持事务
  8. Spring中几种依赖注入的方式
    • 通过构造器注入,这也是Spring官方推荐
    • 通过setter方法注入,这种方式日常研发中不太常见
    • 通过Field属性注入,比如用@Autowired、@Resource等注解注入
  9. 简述SpringMVC执行流程
    • 客户端发送请求到DispatcherServlet
    • DispatcherServlet从handlerMapping中获取对应的HandlerAdapter调用
    • 从HandlerAdapter中找到对应的handler,从而调用Controller执行业务逻辑
    • 执行完业务逻辑后,返回ModelAndView
    • 调用ViewResolver解析ModelAndView,返回View对象
    • DispatcherServlet执行view的渲染方法并填充数据,再返回给浏览器
  10. Spring中异步调用的三种方式
    • 再配置类上加上@EnableAsync来启用异步注解,然后在方法上加@Async标注异步方法
    • 使用Spring内置的线程池,比如ThreadPoolTaskExecutor 和SimpleAsyncTaskExecutor
    • 自定义线程池,实现AsyncConfigurer接口或者继承AsyncConfigureSupport类来自定义线程池
    • 注:异步方法所在类必须被Ioc容器管理,同级Seervice内直接调用异步方法无法实现异步
  11. SpringMVC中九大组件的理解
    • MultipartResolver:多文件上传组件,用于支持多文件上传
    • LocalResolver:多语言环境组件,用于支持国际化多语言切换
    • ThemeResolver:主题模板处理器,用于对页面多主题风格的处理
    • HandlerMapping:url映射处理器,主要保存url对应业务逻辑的关系
    • HandlerAdapter:业务逻辑适配器,主要功能是动态解析参数以及适配对应业务逻辑Handler
    • HandlerExceptionResolver:异常拦截器,主要用于拦截对不同异常的个性处理
    • RequestViedwNameTranslator:视图提取器,可以从Request中获取viewName
    • ViewResolver:视图转换器,相当于模板引擎
    • FlashMapManager:参数闪存管理器,用于对请求重定向后,参数不丢失支持
  12. Netty中提供了哪些线程模型

 

标签:总结,异步,面试题,调用,Spring,模式,线程,引用
来源: https://www.cnblogs.com/zxy1314/p/16372461.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有