面试java

发布于:2024-04-23 ⋅ 阅读:(136) ⋅ 点赞:(0)

自我介绍

  1. 讲一下 SpringBoot

SpringBoot是一个快速开发的框架,能过快速整合第三方框架,他是如何快速整合的呢?其实他是的基本原来是Maven依赖关系,Maven的集成,完全采用注解化,简化XML配置,内嵌HTTP服务器(Tomcate,jetty),默认嵌入Tomcate,最终以Java应用程序进行执行。

  1. Spring 注入 Bean 的几种方式
    属性注入
    set 方法注入
    构造方法注入

  2. 上面说到的注入 Bean 方式的先后顺序是怎么样的

  3. 讲一下 Spring 中用到的设计模式
    工厂设计模式,(IOC)Spring 使用工厂模式可以通过 BeanFactory 或 ApplicationContext 创建 bean 对象。
    单例设计模式 ,单例 Bean 存在线程安全问题吗?
    代理模式在 AOP 中的应用
    观察者模式 一种对象行为型模式。它表示的是一种对象与对象之间具有依赖关系,当一个对象发生改变的时候,依赖这个对象的所有对象也会做出反应。Spring 事件驱动模型就是观察者模式很经典的一个应用。
    适配器模式 我们知道 Spring AOP 的实现是基于代理模式,但是 Spring AOP 的增强或通知(Advice)使用到了适配器模式,与之相关的接口是AdvisorAdapter 。Spring MVC 中的适配器模式违反了设计模式中的开闭原则 – 对扩展开放,对修改关闭。

装饰者模式可以动态地给对象添加一些额外的属性或行为。

  1. 讲一下单例模式的构造方式有哪些
    懒汉式 synchronized关键字进行加锁,保证了线程安全性
    饿汉式 饿汉式是利用类加载机制来避免了多线程的同步问题,所以是线程安全的。加载时就初始化实例,造成内存浪费。
    双重校验锁 利用了volatile修饰符的线程可见性(被一个线程修改后,其他线程立即可见),即保证了懒加载,又保证了高性能,所以推荐使用。
    静态内部类 该模式利用了静态内部类延迟初始化的特性,
    枚举类 该方式利用了枚举类的特性

  2. Java 想要共享一块内存区域该怎么做
    Java进程间通信(IPC)的一种方式
    JNI:Java Native Interface是Java平台上的本地方法接口,它允许Java代码与C/C++代码进行交互。通过JNI,Java应用程序可以调用本地方法来访问操作系统提供的共享内存机制。
    直接内存:直接内存是一种基于内存映射文件的机制,它可以在Java虚拟机(JVM)和主机操作系统之间直接分配和释放内存。通过使用直接内存,Java应用程序可以在不涉及JVM内部数据结构的情况下,高效地处理大量数据。
    进程间通信(IPC):IPC是一种通用的进程间通信机制,不同的操作系统提供了不同的IPC实现方式。在Java中,可以使用JNI或其他IPC机制来实现进程间通信,例如管道、信号量、消息队列等。

  3. 实现多线程的方式
    1.继承Thread类,重写run方法
    2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target
    3.通过Callable和FutureTask创建线程
    4.通过线程池创建线程

  4. Spring Cloud 的组件有哪些
    Eureka : 注册中心,用于服务的注册和发现
    Ribbon/Feign : 负载均衡/服务调用
    Hystrix :断路器,提高分布式系统的弹性
    GateWay/Zuul :网关管理,由GateWay 网关转发请求给对应的服务,服务同一的转发,以及权限管理和过虑
    SpringConfig:分布式配置中心

  5. 讲一下Java8 的一些新特性

    1.Lambda表达式

    2.新的日期API

    3.引入Optional

    4.使用Base64

    5.接口的默认方法和静态方法

    6.新增方法引用格式

    7.新增Stream类

    8.注解相关的改变

    9.支持并行(parallel)数组

    10.对并发类(Concurrency)的扩展。


网站公告

今日签到

点亮在社区的每一天
去签到