进入博客园的第一天

    今天,是我进入博客园的第一天!开心那

    因为最近在准备面试,所以总结了下我在面试过程中被问到的知识点:

  1、Spring默认是单例模式的,在多线程下是线程安全的么?解决办法?

     不安全 ,可以通过声明一个 threadlocal 定义这个共享的关键字,因为:他会在每个线程有一个独立的变量副本。

     2、Serializable 接口的作用: 网络传输和存储

    查看改接口内,没有任何的方法是:标记型接口,JVM看到后给类进行序列化,常见的类:String、克隆的类 

    这个里面还需要了解的内容有:

    transient:修饰成员变量,用法只有这一种,阻止序列化 

    **对象序列化**是一个用于将**对象状态转换为字节流**的过程,可以将其**保存到磁盘文件中**或**通过网络发送到任何其他程序**;

    从字节流创建对象的相反的过程称为反序列化。

  3、jdk动态代理实现 :

    默认是JDk:接口(InvocationHandle) Cglib(类):Proxy

  4、SpringMVC配置实现拦截器:

    实现handleIntercept 接口,实现里面的3个方法 

  • preHandle()方法:在控制器方法之前执行,返回true表示继续执行,false表示拦截请求,不再向下执行。

  • postHandle()方法:在控制器方法之后,返回ModelAndView之前执行。

  • afterCompletion()方法:在执行完控制器之后执行。

实现了HandlerInterceptor接口之后,需要在Spring的类加载配置文件中配置拦截器实现类,才能使拦截器起到拦截的效果,加载配置有两种方式:

  • 针对HandlerMapping配置 ,实现这个方法

  • 针对全局配置,mvc :intercept标签去配置这个类

  5、面向对象的基本原则

    最基本的设计原则有5条,分别是:单一职责原则(一个类,最好只做一件事)、开放封闭原则(对修改封闭,对扩展开放)、依赖倒置原则、接口隔离原则和Liskov替换原则。

  6、JVM加载类的顺序

    加载,链接、初始化(clinit)

  7、java创建线程有几种方式

    三种:

    继承Thread类、实现Runable接口、或者是Callbale接口区别是 :Callbale,有返回值

  8、线程池的创建,以及7个参数,4个拒绝策略

     创建 :(1): Executors.newSingleThreadExecutor(); (2):Executors.newFixedThreadPool(5);  (3)、Executors.newCachedThreadPool(); 阿里巴巴安装手册是建议使用 :threadPoolExecutor这种方法

   参数:  public ThreadPoolExecutor(int corePoolSize, // 核心线程池大小

          int maximumPoolSize, // 最大核心线程池大小

          long keepAliveTime, // 超时了没有人调用就会释放
          TimeUnit unit, // 超时单位
          BlockingQueue<Runnable> workQueue, // 阻塞队列
          ThreadFactory threadFactory, // 线程工厂:创建线程的,一般不用动
          RejectedExecutionHandler handle // 拒绝策略) 
  拒绝策略:
     1、new ThreadPoolExecutor.AbortPolicy() // 银行满了,还有人进来,不处理这个人的,抛出异常
     2、new ThreadPoolExecutor.CallerRunsPolicy() // 哪来的去哪里!
     3、new ThreadPoolExecutor.DiscardPolicy() //队列满了,丢掉任务,不会抛出异常!
     4、new ThreadPoolExecutor.DiscardOldestPolicy() //队列满了,尝试去和最早的竞争,也不会抛出异常!
  9、Spring的AOP实现 事务、日志、异常是如何做的
    三种方式 :1、注解、2、配置文件主要讲一下注解的方式
    1、注解
      自定义一个类,加上注解@Aspect定义的这个是一个切面
        切面里面定义的方法:就是切入点("execution(* com.saxon.UserService.*.*(..))")需要的公共的方法:
        @Before ("execution(* com.saxon.UserService.*.*(..))") 这个是通知的一个类型
       补充问题:通知的类型分为:前置通知、后置通知、环绕通知、异常通知、返回通知
    aop的作用:在不修改代码的情况下可以达到进行增强( *_* 在不修改源代码情况下,还可以执行其他操作)
    参考博文:https://www.cnblogs.com/SaxonMO/p/13509987.html  学习地址:狂神说Java
    最近在看   狂神说的 的内如,作者很厉害值得计算人员观看相关视频哟!!!
  10、将一个类声明为Spring的bean的注解有哪些
      @RestController、@Service、@Repository @Component 
  11、Spring中Bean有哪些作用域:
    singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。
    prototype : 每次请求都会创建一个新的 bean 实例。
    request : 每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效。
    session : 每一次HTTP请求都会产生一个新的 bean,该bean仅在当前 HTTP session 内有效。
  12、Spring框架中用到了那些设计模式?
    单例模式、工厂模式、代理模式、适配器模式、  
  13、mybatis #与$有什么区别
    #:防止sql注入  $:是显示的字符串
  14、mybatis的缓存 
    mybatis缓存存放的位置是在tomcat里面、redis是存放在了内存中
    这篇博文讲解的很详细:https://blog.csdn.net/weixin_44450604/article/details/87470988
  15、SpringCloud的核心组件有哪些?
  • Eureka:服务注册于发现。

  • Feign:基于动态代理机制,根据注解和选择的机器,拼接请求 url 地址,发起请求。

  • Ribbon:实现负载均衡,从一个服务的多台机器中选择一台。

  • Hystrix:提供线程池,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题。

  • Zuul:网关管理,由 Zuul 网关转发请求给对应的服务。

  
    
    
 
posted @ 2021-06-27 17:40  白小纯~  阅读(49)  评论(0)    收藏  举报