interview
interviewduck-java-backend
杭州某医疗公司 Java 面经

面试鸭 Java 后端面试题, 杭州某医疗公司 Java 面经

面试鸭 Java 后端面试题, 杭州某医疗公司 Java 面经

QA

Step 1

Q:: 什么是JVM?它的主要组成部分有哪些?

A:: Java虚拟机(JVM)是一个可以执行Java字节码的虚拟机。JVM的主要组成部分包括:类加载器(Class Loader),运行时数据区(Runtime Data Area),执行引擎(Execution Engine)以及本地接口(Native Interface)。类加载器负责加载类文件,运行时数据区包括堆(Heap)、栈(Stack)、方法区(Method Area)、程序计数器(Program Counter Register)和本地方法栈(Native Method Stack)。执行引擎负责执行字节码,本地接口提供调用本地方法的接口。

Step 2

Q:: 什么是垃圾回收(GC),它的主要算法有哪些?

A:: 垃圾回收(Garbage Collection,GC)是指JVM自动回收不再使用的对象的内存的过程。主要的垃圾回收算法包括:标记-清除算法(Mark-Sweep)、标记-整理算法(Mark-Compact)、复制算法(Copying)、分代收集算法(Generational Collecting)。标记-清除算法先标记所有需要回收的对象,然后统一回收。标记-整理算法在标记后整理存活对象,移动到内存的一端。复制算法将内存分成两块,每次只使用一块,将存活对象复制到另一块。分代收集算法将内存分成几代,分别处理。

Step 3

Q:: 什么是Java中的线程池?如何使用线程池?

A:: 线程池(Thread Pool)是Java中用于管理一组工作线程的机制。它可以有效地控制并发线程的数量,简化线程管理,减少资源消耗。Java中通过Executor框架提供了线程池的实现,如FixedThreadPool(固定大小线程池),CachedThreadPool(缓存线程池),ScheduledThreadPool(调度线程池)等。使用线程池的步骤包括:1)创建线程池实例;2)提交任务;3)关闭线程池。

Step 4

Q:: Spring框架的核心组件有哪些?

A:: Spring框架的核心组件包括:Spring Core、Spring Context、Spring AOP、Spring DAO、Spring ORM、Spring Web、Spring MVC。Spring Core提供IoC(控制反转)和DI(依赖注入)功能;Spring Context提供框架的上下文信息;Spring AOP提供面向切面编程的功能;Spring DAO提供数据访问的支持;Spring ORM集成了主流的ORM框架;Spring Web提供了基础的Web支持;Spring MVC提供了Web应用的Model-View-Controller实现。

Step 5

Q:: 什么是RESTful API?如何在Spring Boot中创建一个RESTful API?

A:: RESTful API是一种基于REST架构风格的Web服务接口,通过HTTP协议进行通信。RESTful API的特点包括:无状态性、客户端-服务器结构、统一接口、可缓存、分层系统等。在Spring Boot中创建RESTful API的步骤包括:1)添加Spring Boot依赖;2)使用@RestController注解创建控制器类;3)定义API端点并使用@RequestMapping、@GetMapping、@PostMapping等注解映射HTTP请求;4)启动应用并访问API。

用途

面试这些内容的目的是评估候选人对Java后端开发的理解和掌握程度。JVM、垃圾回收、线程池等概念在Java开发中至关重要,理解这些概念有助于优化应用性能,避免内存泄漏,提高系统稳定性。Spring框架是Java后端开发中最常用的框架之一,熟悉其核心组件和如何创建RESTful API是企业开发实际项目的基本需求。\n

相关问题

🦆
JVM内存模型中的各个区域有什么作用?

JVM内存模型主要分为堆(Heap)、栈(Stack)、方法区(Method Area)、程序计数器(Program Counter Register)和本地方法栈(Native Method Stack)。堆是用来存储对象实例的;栈是用来存储局部变量和方法调用的;方法区存储类信息、常量、静态变量和JIT编译后的代码;程序计数器记录当前线程执行的字节码的行号;本地方法栈为本地方法服务。

🦆
如何排查和解决Java应用中的内存泄漏?

排查和解决Java应用中的内存泄漏可以通过以下步骤进行:1)使用JVM自带的工具(如jvisualvm、jconsole)或第三方工具(如MAT, YourKit)进行内存分析;2)检查代码中的长生命周期对象,确保及时释放不再使用的资源;3)避免使用静态变量或集合来持有对象引用;4)使用弱引用(WeakReference)或软引用(SoftReference)来引用大对象;5)检查循环引用问题。

🦆
解释Spring的依赖注入DI和控制反转IoC.

依赖注入(DI)是一种设计模式,用于将对象的依赖关系从代码中移除,通过外部注入的方式提供。控制反转(IoC)是指将对象的控制权从程序代码中转移到外部容器(如Spring容器)。在Spring中,依赖注入通过注解(如@Autowired)或XML配置实现。IoC通过提供一个框架,自动管理对象的生命周期和依赖关系,简化了应用开发。

🦆
Spring Boot的主要特点和优势是什么?

Spring Boot的主要特点和优势包括:1)快速开发:通过自动配置和简化的依赖管理,快速创建独立的Spring应用;2)微服务支持:提供内嵌的Web服务器(如Tomcat、Jetty),方便部署微服务;3)生产准备:内置监控、健康检查和外部化配置,方便应用管理和监控;4)简化配置:提供大量默认配置,减少手动配置的工作量;5)活跃社区和丰富的生态系统:提供大量开源的扩展库和社区支持。

🦆
什么是AOP面向切面编程?Spring AOP如何实现?

面向切面编程(AOP)是一种编程范式,通过将横切关注点(如日志、事务管理)从业务逻辑中分离出来,提高代码的模块化和可维护性。Spring AOP通过动态代理和AspectJ实现AOP功能。Spring AOP的实现步骤包括:1)定义切面类和切入点;2)使用@Aspect注解标注切面类,@Pointcut注解定义切入点;3)使用@Before、@After、@Around等注解定义增强方法;4)将切面类声明为Spring Bean。