公司需要一位java高级开发工程师,找到我去面试。我回忆了一下,记录部分我的提问,如果大家刚兴趣可以给我留言,我视情况看是否继续补充,或者是否提供答案。
1.聊聊您对spring Boot一些见解
见文末参考答案
2.spring Boot中如何自定义starter?
见文末参考答案
3.说说spring Boot中配置文件的加载顺序
见文末参考答案
4.spring Boot中你是如何处理异常的?
见文末参考答案
5.spring Boot中如何开启异步?
见文末参考答案
6.spring Boot中如何实现定时任务?
见文末参考答案
7.@RestController和@Controller的区别?
见文末参考答案
8.可以谈谈List与linkedList吗?
见文末参考答案
9.可以谈谈String,StringBuilder,StringBuffer吗?
见文末参考答案
10.你喜欢怎么使用redis?
见文末参考答案
11.工作中你是如何防止数据重复的?
见文末参考答案
参考答案
1.Spring Boot 是一个用来简化 Spring 应用程序开发的框架,它提供了一种快速、简单的方法来创建独立的、生产级的基于 Spring 的应用程序。Spring Boot 提供了许多自动配置功能,可以帮助开发人员快速搭建和运行应用程序。
2.要在 Spring Boot 中自定义 starter,您需要创建一个新的项目并添加必要的依赖。然后,您可以在该项目中定义自己的自动配置类,并使用 @EnableAutoConfiguration
注解来启用它。最后,您需要在项目的 resources/META-INF
目录下创建一个名为 spring.factories
的文件,并在其中指定您的自动配置类。
3.Spring Boot 配置文件的加载顺序如下:
1. 命令行参数
2. 来自 `SPRING_APPLICATION_JSON` 的属性
3. `ServletConfig` 初始化参数
4. `ServletContext` 初始化参数
5. JNDI 属性
6. Java 系统属性
7. 操作系统环境变量
8. 随机值属性源
9. 应用程序外部的配置文件
10. 打包在应用程序内部的配置文件
11. 通过 `@PropertySource` 注解指定的属性源
12. 默认属性
4.在 Spring Boot 中处理异常通常有两种方法:使用 @ControllerAdvice
注解和 @ExceptionHandler
注解来定义全局异常处理器,或者使用 ErrorController
接口来定义自定义错误页面。这两种方法都可以帮助您更好地控制应用程序中的异常处理。
5.要在 Spring Boot 中开启异步,您需要在配置类上添加 @EnableAsync
注解,并定义一个 AsyncConfigurer
类型的 bean 来配置异步执行器。此外,您还可以在需要异步执行的方法上添加 @Async
注解。
6.在 Spring Boot 中实现定时任务,您需要在配置类上添加 @EnableScheduling
注解,并在需要定时执行的方法上添加 @Scheduled
注解。您可以使用 cron 表达式或固定延迟时间来指定任务的执行时间。
7.@RestController
和 @Controller
的区别在于:@RestController
是一种组合注解,它组合了 @Controller
和 @ResponseBody
两个注解。这意味着当您使用 @RestController
注解来标记一个控制器时,该控制器中所有方法的返回值都将自动转换为 JSON 或 XML 格式并写入响应体中。而当您使用 @Controller
注解时,则需要在每个方法上添加 @ResponseBody
注解才能实现相同的效果。
8.List 和 LinkedList 都是 Java 集合框架中的接口和类。List 是一个有序集合,它允许存储重复元素并且可以通过索引来访问元素。LinkedList 是 List 接口的一个实现类,它是一个双向链表,提供了更快的插入和删除操作,但随机访问速度较慢。
9.String、StringBuilder 和 StringBuffer 都是 Java 中用于表示字符串的类。String 是不可变类,一旦创建就不能修改。StringBuilder 和 StringBuffer 都是可变类,可以通过 append、insert、delete 等方法来修改字符串内容。StringBuilder 和 StringBuffer 的主要区别在于:StringBuilder 是非线程安全的,而 StringBuffer 是线程安全的。
10.Redis 是一个开源、支持网络、基于内存、可选持久性的键值对存储数据库。我喜欢使用 Redis 来实现缓存、会话管理、排行榜等功能。Redis 提供了丰富的数据类型和命令,可以帮助我快速实现各种需求。
11.在工作中防止数据重复,我通常会使用唯一索引、主键约束或者在应用程序中进行检查来实现。此外,我还会使用分布式锁来保证数据的一致性。这些方法都可以有效地防止数据重复。
注意:本文归作者所有,未经作者允许,不得转载