面试经历(二)

一:Java的八大基本数据类型

二:JDK和JRE的区别

JDK(Java Development Kit)是 Java 开发工具包,是 Java 开发环境的核心组件,包含了 JRE、编译器(javac)、调试器、文档生成工具(Javadoc)等开发工具。而 JRE(Java Runtime Environment)是 Java 运行时环境,是运行 Java 程序的最小环境,包含了 Java 虚拟机(JVM)、Java 核心类库以及支持文件。简单来说,JDK 是为开发者提供的开发工具包,而 JRE 是为运行 Java 程序的用户提供的运行环境。若只需运行 Java 程序,只需安装 JRE;若要开发 Java 程序,则必须安装 JDK。

三:什么是反射

反射(Reflection)是 Java 语言的一个强大特性,它允许程序在运行时动态地获取类的信息(如类的方法、字段、构造函数等),并可以在运行时实例化对象、调用方法、访问或修改字段。通过反射,程序可以在运行时操作任意类或对象,而不需要在编译时知道这些类的具体信息。反射机制主要通过 Java 的java.lang.Class类、java.lang.reflect包下的类和接口实现。反射在框架开发(如 Spring、Hibernate)、测试工具、IDE 等场景中广泛应用,但由于反射涉及动态解析类,会降低性能,且可能破坏类的封装性,因此需谨慎使用。

四:什么是Java序列化

Java 序列化(Serialization)是指将 Java 对象转换为字节流的过程,以便将其存储到文件、数据库或通过网络传输。反序列化则是将字节流恢复为 Java 对象的过程。要实现序列化,类必须实现java.io.Serializable接口(这是一个标记接口,没有方法)。序列化主要用于分布式系统间的对象传输、对象的持久化存储(如缓存、会话管理)等场景。Java 提供了ObjectOutputStreamObjectInputStream来实现对象的序列化和反序列化。需注意,静态变量和被transient关键字修饰的字段不会被序列化。

五:什么是线程和进程

进程(Process)是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位。每个进程都有自己独立的内存空间、系统资源和执行上下文。而线程(Thread)是进程中的一个执行单元,是 CPU 调度和分派的基本单位。一个进程可以包含多个线程,这些线程共享进程的内存空间和系统资源,但每个线程有自己独立的程序计数器、栈和局部变量。线程间的通信比进程间的通信更高效、更简单。进程间相互独立,一个进程崩溃通常不会影响其他进程;而一个线程崩溃可能导致整个进程崩溃。线程又分为用户线程和守护线程,守护线程是为其他线程提供服务的线程(如垃圾回收线程),当所有用户线程结束时,守护线程会自动终止。

六:Spring的核心模块

  1. Core Container(核心容器):包含spring-corespring-beansspring-contextspring-context-supportspring-expression(SpEL)等模块,提供了 IoC(控制反转)和 DI(依赖注入)功能,是 Spring 框架的基础。

  2. AOP(面向切面编程):包含spring-aopspring-aspects模块,提供了面向切面编程的支持,允许开发者在不修改原有代码的情况下增强功能(如事务管理、日志记录等)。

  3. Data Access/Integration(数据访问 / 集成):包含spring-jdbcspring-tx(事务管理)、spring-orm(ORM 框架集成)、spring-oxm(XML 映射)和spring-jms(Java 消息服务)等模块,提供了数据访问和事务管理的支持。

  4. Web:包含spring-webspring-webmvc(Spring MVC)、spring-webflux(响应式 Web 框架)和spring-websocket等模块,提供了 Web 应用开发的支持。

  5. Test:包含spring-test模块,提供了对单元测试和集成测试的支持。

  6. 其他模块:如spring-messaging(消息传递)、spring-validation(验证)等。

七:SpringMVC的响应流程

  1. 客户端请求:客户端(如浏览器)发送 HTTP 请求到服务器。
  2. DispatcherServlet 接收请求:请求首先到达前端控制器DispatcherServlet,它是 SpringMVC 的核心,负责请求的分发和处理。
  3. HandlerMapping 查找处理器:DispatcherServlet通过HandlerMapping(处理器映射器)查找处理该请求的处理器(通常是一个 Controller 类的方法)。
  4. HandlerAdapter 调用处理器:找到处理器后,DispatcherServlet通过HandlerAdapter(处理器适配器)调用处理器方法。
  5. 处理器处理请求:处理器方法执行相应的业务逻辑,可能会访问数据库或调用其他服务,然后返回一个ModelAndView对象(包含视图名称和模型数据)。
  6. 视图解析:DispatcherServlet通过ViewResolver(视图解析器)将逻辑视图名称解析为具体的视图对象(如 JSP、Thymeleaf 模板等)。
  7. 视图渲染:DispatcherServlet将模型数据传递给视图对象,视图对象负责将数据渲染为 HTML 响应。
  8. 响应客户端:最终的 HTML 响应通过DispatcherServlet返回给客户端。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值