GitCGBIII-02-SpringBoot高级用法,java线程同步面试题

前言

大厂面试真题向来都是各大求职者的最佳练兵场,而今天小编带来的便是“HUAWEI”面经!这是一次真实的面试经历,虽然不是我自己亲身经历但是听当事人叙述后便会深有同感(因为我朋友差点就与offer擦肩而过了,总共4面技术5面HR,真的好艰难)。为此,我也将这面经整理出来分享给每位程序员(媛)朋友做一个参考,可知“HUAWEI”在Java开发工程师招聘中有哪些技术性考察和倾向!

GitCGBIII-02-SpringBoot高级用法,java线程同步面试题_第1张图片

代码:

GitCGBIII-02-SpringBoot高级用法,java线程同步面试题_第2张图片

[](()1.2.4 UserController的测试

GitCGBIII-02-SpringBoot高级用法,java线程同步面试题_第3张图片

[](()1.2.5 Lombok链式加载

GitCGBIII-02-SpringBoot高级用法,java线程同步面试题_第4张图片

[](()1.2.6 Lombok面试题

问:在Linux系统中运行项目,是否需要提前安装插件?

答案:不要。因为lombok在编译期有效,由xxx.java文件编译为xxx.class文件时,已经动态添加了set/get等方法,所以在项目发布时(xxx.class文件组成的xxx.jar)不需要安装lombok环境。

[](()1.3 SpringBoot测试环境说明


[](()1.3.1 需求说明

调用流程:

UserController------->UserService中的方法---------->获取返回值

需求:

由于编辑UserController的同事不在,所以Controller的方法无法得知,导致自己写的Service无法测试。

解决方案:

SpringBoot由于开发中需要经常编译测试的方法,为了降低代码联调的代价,则SpringBoot提供了专门用于测试的注解@SpringBootTest。

[](()1.3.2 @SpringBootTest的用法

注解说明:如果测试方法中添加了该注解,则当执行@Test注解方法时,则Spring容器将会启动,启动之后将所有需要依赖注入的信息完整构建,之后用户可针对性的挑选需要测试的代码。

[](()1.3.3 测试类入门案例

@SpringBootTest

class SpringbootDemo1ApplicationTests {

@Autowired

private UserController userController;

@Test

void contextLoads() {

String msg = userController.getMsg();

System.out.println(msg);

}

[](()1.4 Spring容器内存结构


[](()1.4.1 SpringBoot加载器顺序

  1. 当用户点击main方法时,启动程序(开始)。

  2. SpringBoot程序开始加载主启动类上的注解@SpringBootApplication(SpringBoot内部运行机制开始执行)。

  3. 当SpringBoot程序开始执行,则会动态的获取当前主启动类的包路径(con.jt)。

  4. 通过包扫描机制,将特定的注解标识的类(Controller/Service/Dao)交给Spring容器管理。

  5. Spring容器维护的是一个Map集合,key:类名首字母小写(userController),value:实例化的对象。例如:Map

  6. 当对象创建时(实例化),遇到@Autowired则需要依赖注入对象,当整个Spring容器内部都没有该对象时,则会报错注入失败,如果Map中维护了需要注入的对象,则会注入成功,等待用户的调用。

GitCGBIII-02-SpringBoot高级用法,java线程同步面试题_第5张图片

[](()1.5 SpringBoot整合Mybatis


[](()1.5.1 创建项目

GitCGBIII-02-SpringBoot高级用法,java线程同步面试题_第6张图片

[](()1.5.2 添加jar包

org.springframework.boot

spring-boot-starter-parent

2.5.3

com.jt

springboot-demo2

1.0-SNAPSHOT

1.8

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-devtools

org.projectlombok

lombok

mysql

mysql-connector-java

org.springframework.boot

spring-boot-starter-jdbc

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.2.0

org.springframework.boot

spring-boot-maven-plugin

[](()1.5.3 编辑主启动类

@SpringBootApplication

@MapperScan(“com.jt.mapper”) //通过包扫描机制,设定该路径下的所有类,Spring会为其创建代理对象(实质为接口的实现类)

public class MybatisApplication {

public static void main(String[] args) {

SpringApplication.run(MybatisApplication.class, args);

}

}

[](()1.5.4 编辑POJO实体类

GitCGBIII-02-SpringBoot高级用法,java线程同步面试题_第7张图片

[](()1.5.5 编辑Mapper接口

GitCGBIII-02-SpringBoot高级用法,java线程同步面试题_第8张图片

[](()1.5.6 编辑Mapper配置文件 —— UserMybatis.xml映射文件

《一线大厂Java面试真题解析+Java核心总结学习笔记+最新全套讲解视频+实战项目源码》开源

Java优秀开源项目:

  • ali1024.coding.net/public/P7/Java/git

总结

无论是哪家公司,都很重视高并发高可用的技术,重视基础,重视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

最后我整理了一些面试真题资料,技术知识点剖析教程,还有和广大同仁一起交流学习共同进步,还有一些职业经验的分享。

GitCGBIII-02-SpringBoot高级用法,java线程同步面试题_第9张图片

实战项目源码》开源**

Java优秀开源项目:

  • ali1024.coding.net/public/P7/Java/git

总结

无论是哪家公司,都很重视高并发高可用的技术,重视基础,重视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

最后我整理了一些面试真题资料,技术知识点剖析教程,还有和广大同仁一起交流学习共同进步,还有一些职业经验的分享。

[外链图片转存中…(img-5U4ri8h4-1649482754204)]

你可能感兴趣的:(Java,面试,经验分享,开发语言)