Netty 相关的面试题为我的知识星球(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了《Java 面试指北》中。
- Java65
- 人工智能39
- 数据库37
- 计算机基础31
- 技术文章精选集25
- IDEA 指南22
- 分布式18
- 系统设计12
- 高性能11
- 框架11
- 走近作者9
- 知识星球9
- 开源项目8
- 开发工具8
- 计算机书籍7
- 高可用6
- 走近项目5
- 代码质量4
- 面试准备3
- Java面试指北1
本篇文章由 JavaGuide 收集自网络,原出处不明。
比起这些枯燥的面试题,我更建议你看看文末推荐的 MyBatis 优质好文。
#{} 和 ${} 的区别是什么?
注:这道题是面试官面试我同事的。
答:
${}
是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于原样文本替换,可以替换任意内容,比如${driver}会被原样替换为com.mysql.jdbc. Driver
。
@Async
注解由 Spring 框架提供,被该注解标注的类或方法会在 异步线程 中执行。这意味着当方法被调用时,调用者将不会等待该方法执行完成,而是可以继续执行后续的代码。
@Async
注解的使用非常简单,需要两个步骤:
- 在启动类上添加注解
@EnableAsync
,开启异步任务。 - 在需要异步执行的方法或类上添加注解
@Async
。
@SpringBootApplication
// 开启异步任务
@EnableAsync
public class YourApplication {
public static void main(String[] args) {
SpringApplication.run(YourApplication.class, args);
}
}
// 异步服务类
@Service
public class MyService {
// 推荐使用自定义线程池,这里只是演示基本用法
@Async
public CompletableFuture<String> doSomethingAsync() {
// 这里会有一些业务耗时操作
// ...
// 使用 CompletableFuture 可以更方便地处理异步任务的结果,避免阻塞主线程
return CompletableFuture.completedFuture("Async Task Completed");
}
}
这篇文章会从下面从以下几个问题展开对 IoC & AOP 的解释
- 什么是 IoC?
- IoC 解决了什么问题?
- IoC 和 DI 的区别?
- 什么是 AOP?
- AOP 解决了什么问题?
- AOP 的应用场景有哪些?
- AOP 为什么叫做切面编程?
- AOP 实现方式有哪些?
首先声明:IoC & AOP 不是 Spring 提出来的,它们在 Spring 之前其实已经存在了,只不过当时更加偏向于理论。Spring 在技术层次将这两个思想进行了很好的实现。
作者:Miki-byte-1024 & Snailclimb
每次问到 Spring Boot, 面试官非常喜欢问这个问题:“讲述一下 SpringBoot 自动装配原理?”。
0.前言
可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景。对于每一个注解我都说了具体用法,掌握搞懂,使用 SpringBoot 来开发项目基本没啥大问题了!
为什么要写这篇文章?
最近看到网上有一篇关于 SpringBoot 常用注解的文章被转载的比较多,我看了文章内容之后属实觉得质量有点低,并且有点会误导没有太多实际使用经验的人(这些人又占据了大多数)。所以,自己索性花了大概 两天时间简单总结一下了。
因为我个人的能力和精力有限,如果有任何不对或者需要完善的地方,请帮忙指出!Guide 感激不尽!
“JDK 中用到了哪些设计模式? Spring 中用到了哪些设计模式? ”这两个问题,在面试中比较常见。
我在网上搜索了一下关于 Spring 中设计模式的讲解几乎都是千篇一律,而且大部分都年代久远。所以,花了几天时间自己总结了一下。
由于我的个人能力有限,文中如有任何错误各位都可以指出。另外,文章篇幅有限,对于设计模式以及一些源码的解读我只是一笔带过,这篇文章的主要目的是回顾一下 Spring 中的设计模式。
控制反转(IoC)和依赖注入(DI)
IoC(Inversion of Control,控制反转) 是 Spring 中一个非常非常重要的概念,它不是什么技术,而是一种解耦的设计思想。IoC 的主要目的是借助于“第三方”(Spring 中的 IoC 容器) 实现具有依赖关系的对象之间的解耦(IOC 容器管理对象,你只管使用即可),从而降低代码之间的耦合度。
这篇文章主要是想通过一些问题,加深大家对于 Spring 的理解,所以不会涉及太多的代码!
下面的很多问题我自己在使用 Spring 的过程中也并没有注意,自己也是临时查阅了很多资料和书籍补上的。网上也有一些很多关于 Spring 常见问题整理的文章,我感觉大部分都是互相 copy,而且很多问题也不是很好,有些回答也存在问题。所以,自己花了一周的业余时间整理了一下,希望对大家有帮助。
Spring 基础
什么是 Spring 框架?
Spring 是一款开源的轻量级 Java 开发框架,旨在提高开发人员的开发效率以及系统的可维护性。
前段时间答应读者的 Spring 事务 分析总结终于来了。这部分内容比较重要,不论是对于工作还是面试,但是网上比较好的参考资料比较少。
什么是事务?
事务是逻辑上的一组操作,要么都执行,要么都不执行。
相信大家应该都能背上面这句话了,下面我结合我们日常的真实开发来谈一谈。
我们系统的每个业务方法可能包括了多个原子性的数据库操作,比如下面的 savePerson()
方法中就有两个原子性的数据库操作。这些原子性的数据库操作是有依赖的,它们要么都执行,要不就都不执行。
Spring Boot 相关的面试题为我的知识星球(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了《Java 面试指北》中。