百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

面試就业题库(五)(就业面试一般会问什么问题)

ccwgpt 2024-10-09 08:48 26 浏览 0 评论

1. java基础(1)

2. javaweb(1)

3. ssm+springboot+springCloud(1.5)

4. spring框架

4.1 IOC总结

4.2 BeanFactory(懒加载初始bean)和ApplicatonContext(立即初始bean)区别

4.3 spring的DI

4.4 aop

4.5 通知

5. springmvc框架

5.1 Spring容器和SpringMVC容器的区别以及关系?

5.2 SpringMVC中为什么不会出现post请求的中文乱码问题?

5.3 SpringMVC 核心处理器有那些?

5.4 SpringMVC 执行流程

5.5 SpringMVC 的拦截器和过滤器什么区别

6. Mybatis

6.1 持久层框架

6.2 mybatis在进行多表查询时,什么时候立即加载,什么时候懒加载?

6.3 # 和 $ 符号什么区别?

6.4 mybatis的缓存问题

6.5 mybatis基于接口开发

7. SSM 结束 之环绕依赖问题

8.SpringBoot

8.1. 什么SpringBoot

8.2. SpringBoot构建的项目如何部署和运行

8.3. SpringBoot和Spring(SpringMVC)框架区别

8.4. SpringBoot常用的启动器,分别有什么用

8.5. SpringBoot自动装配原理

8.6. SpringBoot 配置文件

8.6.1. 全局的配置文件(名称必须按照写)

8.6.2 自定义的配置文件

8.6.3 springBoot框架中使用启动器,启动默认自带的配置文件

8.6.4 配置文件的里面的数据是什么, 有什么作用呢?

9. SpringCloud

4. 企业开发的项目: 技术说明(1.5)

5. 面试总结(3,4)

1. java基础(1)

2. javaweb(1)

3. ssm+springboot+springCloud(1.5)

4. spring框架

4.1 IOC总结

IOC 的全称 inverse of controller , 控制反转, 之前由自己new 对象的方式反转给spring容器.

spring容器其实就是一个ConCurrentHashMap, 如何创建bean对象, 如何装配?

==基于配置文件开发:

spring容器加载和读取文件, 利用反射机制(class.newInstance(),依赖无参构造创建bean),put到map集合中

== 基于注解开发

spring容器开启扫描机制,通过@ComponentScan(“指定扫描的package包”),获取到类的全路径.

常见的注解: @Component (用到普通的javaBean),@Service(用到业务层的bean上) ,@Repository(用 在dao层)

比如: 扫描这个@Repository,就能获取cn.spring.dao.UserDataJpa,

利用Class clz=Class.forName(“cn.spring.dao.UserDataJpa”);

UserDataJpa bean = clz.newInstance(); 把bean装配到map容器中.

4.2 BeanFactory(懒加载初始bean)和ApplicatonContext(立即初始bean)区别

相同点: 都是spring容器

BeanFactory 顶层接口(父容器)

ApplicationContext 子接口(子容器)

实现初始bean对象,把bean对象装配到容器中.是以上接口的子类.

如果是普通的java项目:

*基于配置文件开发:

手动创建 ClassPathXmlApplicationContext容器对象,读取配置文件,实现初始bean对象

*基于注解开发:

手动创建AnnotationConfigApplicationContext容器对象,扫描注解,实现初始化bean对象

如果是web项目:

基于配置文件开发:

在服务器启动时, 由ContextLoadListener监听器,自动创建XmlServletWebServerApplicationContext容器对象,

读取配置文件,实现bean对象的初始化.

基于注解开发

在服务器启动时,由监听器负责自动创建AnnotationConfigWebApplicationContext容器对象,扫描注解,实现bean对象的初始化.

4.3 spring的DI

DI: 依赖注入,在一个类中注入这个类所需的bean对象.

方式一: set方法注入

方式二: 构造方法注入

基于配置文件: 实现DI,如下图

基于注解开发,实现DI

@Resource :

实现在类中注入bean对象,底层根据注入bean的类名(首字母小写,比如: cat---->Cat对象),

从容器中拿到bean对象,注入到当前类中

@Autowired:

实现在类中注入bean对象,底层根据bean的类型,从容器中拿到bean对象,注入到当前类中

Qualifier(“bean的名称”): 如果根据类型找不到, 才会 Qualifier(“bean的名称”)的bean名称找

4.4 aop

Spring框架AOP: 对业务层的方法进行增强.

应用场景: 事务控制(底层就是aop)

事务:

读问题,写问题 ,引发开发者在业务层使用事务控制

事务隔离级别

事务的传播属性

4.5 通知

通知: 就是增强的业务逻辑

分类

前置通知,后置通知,返回通知,异常通知,环绕通知

执行顺序:

前置通知: 在执行目标方法(切点)前,执行

后置通知: 在执行目标方法(切点)后,不管执行过程中,是否有异常,都会执行的通知

返回通知: 在执行目标方法(切点)后,执行,在执行过程中,有异常,返回通知不执行

异常通知: 在执行目标方法(切点)后,如果有异常,才会执行.

注意: 返回通知和异常通知不能同时执行

环绕通知配置在切点上面,如果配置了环绕通知,一般情况下不用前置,后置,返回通知.

5. springmvc框架

5.1 Spring容器和SpringMVC容器的区别以及关系?

Spring容器是父容器, 可以初始化任意层(web层,service层,dao层)的bean对象

@Component,@Controller, @Service, @Repository

SpringMVC容器称之为子容器,作用初始化web层的bean对象

@Controller

Spring容器可以初始化@Controller注解下面的bean,

SpringMVC容器可以初始化@Controller注解下面的bean,就会出现冲突.

怎么解决这个问题?

Spring容器扫描时,排除web层的@Controller注解.

SpringMVC容器扫描时,只扫描web层的@Controller注解.

5.2 SpringMVC中为什么不会出现post请求的中文乱码问题?

使用了CharacterEncodingFilter过滤器类, 默认处理了post请求的中文乱码问题.

过滤器的作用: 拦截请求和响应.

比如: 浏览器 提交post请求的中文-------->CharacterEncodingFilter过滤器(处理post乱码)-------->后台端

5.3 SpringMVC 核心处理器有那些?

中央处理器: 分发请求,比如: http://域名:port/controller的访问路径

处理映射器: 将中央处理器分发的请求进行解析,根据解析controller的访问路径,访问对应的controller

视图解析器: 将controller返回的数据展示视图页面.需要视图解析器解析视图页面.将数据展示

视图: Freemarker, Thyemleaf

数据处理器: 比如 springmvc默认使用的JaskSon,将后台的数据转成json数据进行返回

5.4 SpringMVC 执行流程

5.5 SpringMVC 的拦截器和过滤器什么区别

1).Springmvc中的拦截器interceptor用于对控制器controller进行预处理和后处理的技术;

2).可以定义拦截器链,拦截器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方法时,拦截器链中的拦截器会按着定义的顺序执行。

3).拦截器interceptor与过滤器filter的区别

1.过滤器是servlet中的,任何框架都可以使用过滤器技术;

2.拦截器是Springmvc所独有的

3.过滤器设置/*可以拦截任何资源

4.拦截器只对控制器controller中的方法进行拦截

4).拦截器利用的是AOP思想;

5).自定义拦截器,需要实现HandlerInterceptor接口

6. Mybatis

6.1 持久层框架

myBatis(mybatisPlus, 通用mapper(简化单表操作,使用通用mapper操作单表,不用书写sql))

优点: 基于配置文件+注解, 可以灵活的书写原生sql语句

缺点: 在单表操作时,需要写sql语句,比较麻烦

springDataJpa

和 hibernate类似

hibernate

优点: 会自动生成sql语句,操作起来比较方便

缺点: 在进行多表操作时,配置hql语句比较麻烦.

6.2 mybatis在进行多表查询时,什么时候立即加载,什么时候懒加载?

| *默认是立即加载

| * 立即加载: 指的当查询一张表的数据时,将关联的表数据同时查询出来.

| * 懒加载: 指的当查询一张表的数据时,与之关联的表数据不查询.(什么时候查询关联的表数据: 需要时查询)

| * 比如: tab_order订单表,关联的订单详情表: tab_order_item

查询订单数据(订单名称,订单总金额)时,

与之关联的订单详情数据(商品名称,商品个数,商品小计金额)就需要立即加载

| * 比如: tab_order 订单表 , 关联的用户表: tab_user

查询订单表的数据时,与之关联的用户数据不用立即查询.称之为懒加载

当订单付款时, 需要将订单关联的用户数据查询出来(按需加载,就是懒加载)

总结:

当查询一方表数据时, 需要将它关联的多方表的数据查询出来, 这种情况: (一对多时:)立即加载

比如: tab_order(一方), 关联的多方: tab_order_item(多方)

当查询多方表的数据时,与之关联的一方表数据不用立即查询出来,这种情况:(多对一:)懒加载

比如: tab_order(多方), 与之关联的一方: tab_user(一方)

6.3 # 和 $ 符号什么区别?

#符号: 占位符,不会sql注入

$符号: 字符串拼接,可能会出现sql注入

6.4 mybatis的缓存问题

一级缓存: 会话级别的缓存(针对当前用户(一个线程)),

对应SqlSession,查询时,使用缓存(只能使用一次,面向一个用户)

优点: 当用户在当前会话过程中,

查询一条数据后,从数据库里面查询,放到一级缓存中,

等用户下次查询时,如果查询的sql语句一样,会从缓存中取数据.不查询数据库了.

二级缓存: 工厂级别的缓存,对应SqlSessionFactory,查询,使用缓存(面向所有所用用户)

优点: 面向所有用户.

当用户A查询一条数据后,从数据库里面查询,放到二级缓存中,

等用户A或者其它用户下次查询时,

如果查询的sql语句一样,会从缓存中取数据.不查询数据库了.

6.5 mybatis基于接口开发

模拟代码如下:

1.定义一个接口:

2.模拟代码

7. SSM 结束 之环绕依赖问题

如图描述:

解决方案:

在开发中尽量避免出现这种环绕问题.

使用spring的缓存机制: 保存spring容器初始化的bean对象.

注意,这里不是函数的循环调用,是对象的相互依赖关系。循环调用其实就是一个死循环,除非有终结条件。

Spring中循环依赖场景有:

(1)构造器的循环依赖 (在类中,通过构造方法传入依赖的对象)

(2)field属性的循环依赖(在类中,通过set方法注入依赖的对象),上图演示的: 属性的循环依赖

其中,构造器的循环依赖问题无法解决,只能拋出BeanCurrentlyInCreationException异常,在解决属性循环依赖时,spring采用的是提前暴露对象的方法(底层采用spring的三级缓存机制)。

8.SpringBoot

8.1. 什么SpringBoot

用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件)

创建独立的spring引用程序 main方法运行

嵌入的Tomcat 无需部署war文件

简化maven配置

自动配置spring添加对应功能starter(启动器)自动化配置

8.2. SpringBoot构建的项目如何部署和运行

开发环境: 直接启动的应用类, 启动我们的项目

生成环境: 项目开发完毕,要上线了.

方式一: springboot默认是jar包, 通过 java的jar启动命令, 来部署和运行项目.

方式二: springboot打成war包(排除springboot内嵌的tomcat), 把war包部署到tomcat服务器运行.

8.3. SpringBoot和Spring(SpringMVC)框架区别

Spring框架构建应用程序时比较麻烦,配置比较重,如果引入第三方依赖,需要手动在pom.xml配置

特别是引入核心依赖时,如果该核心依赖还有其它依赖,需要将依赖以及它的其它依赖同时在pom.xml配置

比如:

springBoot简化了spring的配置,在构建spring的应用程序时,比较方便.

springBoot通过封装启动器,将核心依赖以及直接依赖都封装进来,

在pom.xml配置时,只需引入启动器即可

总结:

spring重配置,体现pom.xml配置这里.

springBoot通过启动器,简化了配置.

8.4. SpringBoot常用的启动器,分别有什么用

spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持

spring-boot-starter-data-jpa 数据库支持

spring-boot-starter-data-redis redis数据库支持

spring-boot-starter-data-solr solr支持

mybatis-spring-boot-starter 第三方的mybatis集成starter

细节:

如果启动器是以spring-boot-starter-x开头的, 那就表示该启动器是springBoot封装的

如果启动器是以x-spring-boot-starter开头的,那就表示该启动器是不是springBoot封装的,是第三方封装的

8.5. SpringBoot自动装配原理

自动装配

扫描开发者自定义带注解的类, 初始化bean对象,装配到容器(ConCurrentHashMap)

读取spring-boot-autoconfigure-版本号: spring-autoconfigure-metadata.properties这个配置文件

将配置文件配置的类, 初始化bean对象, 装配到容器(ConCurrentHashMap)

如何实现自动装配的?

如图:

8.6. SpringBoot 配置文件

8.6.1. 全局的配置文件(名称必须按照写)

注意:

1.扩展名为yml和properties,它们的配置内容是一样,在项目中只需写一种就可了

2.如果版本号不同, yml和properties配置文件的优先级不一样.

bootstarp配置文件(后缀名为yml或者 yaml)

使用Spring Cloud Config注册中心时 需要在bootStarp配置文件中添加链接到配置中 心的配置属性来 加载外部配置中心的配置信息。

一些固定的不能被覆盖的属性

一些加密/解密的场景

8.6.2 自定义的配置文件

比如: 自定义数据源配置文件 dataSource.properties

8.6.3 springBoot框架中使用启动器,启动默认自带的配置文件

spring-boot-版本号: spring.properties

spring-boot-autoconfigure-版本号:spring.properties, spring-autoconfigure-metadata.properties

8.6.4 配置文件的里面的数据是什么, 有什么作用呢?

全局配置文件: 作用配置springboot框架的的全局信息,比如: 启动的端口号

自定义配置文件: 作用配置springboot项目所需的数据信息,比如: 自定义数据源配置文件

springboot自带的配置文件

spring-boot-x: spring.properties:

里面配置的大多是监听器,监听器的作用在springboot启动时,会自动加载全局的配置文件.

当引导类执行main方法(启动),触发ApplicaitonEvent事件–>

ConfigFileApplicationListener执行初始全局配置文件的操作

2.spring-boot-autoconfigure-版本号:spring.properties, spring-autoconfigure-metadata.properties

spring-autoconfigure-metadata.properties配置文件: 配置启动器关联第三方的核心类信息

比如: JaskSon, CharacterEncodingFilter等等

作用:

当引导类执行main方法(启动)–> 通过读取 spring-autoconfigure-metadata.properties核心类–>自动装配搭配容器里面.

当引导类执行main方法(启动)–>同时开启包扫描机制: 将开发者定义带注解的类,初始化成bean–>自动装配搭配容器里面.

9. SpringCloud

4. 企业开发的项目: 技术说明(1.5)

5. 面试总结(3,4)

相关推荐

滨州维修服务部“一区一策”强服务

今年以来,胜利油田地面工程维修中心滨州维修服务部探索实施“一区一策”服务模式,持续拓展新技术应用场景,以优质的服务、先进的技术,助力解决管理区各类维修难题。服务部坚持问题导向,常态化对服务范围内的13...

谷歌A2A协议和MCP协议有什么区别?A2A和MCP的差异是什么?

在人工智能的快速发展中,如何实现AI模型与外部系统的高效协作成为关键问题。谷歌主导的A2A协议(Agent-to-AgentProtocol)和Anthropic公司提出的MCP协议(ModelC...

谷歌大脑用架构搜索发现更好的特征金字塔结构,超越Mask-RCNN等

【新智元导读】谷歌大脑的研究人员发表最新成果,他们采用神经结构搜索发现了一种新的特征金字塔结构NAS-FPN,可实现比MaskR-CNN、FPN、SSD更快更好的目标检测。目前用于目标检测的最先...

一文彻底搞懂谷歌的Agent2Agent(A2A)协议

前段时间,相信大家都被谷歌发布的Agent2Agent开源协议刷屏了,简称A2A。谷歌官方也表示,A2A是在MCP之后的补充,也就是MCP可以强化大模型/Agent的能力,但每个大模型/Agent互为...

谷歌提出创新神经记忆架构,突破Transformer长上下文限制

让AI模型拥有人类的记忆能力一直是学界关注的重要课题。传统的深度学习模型虽然在许多任务上取得了显著成效,但在处理需要长期记忆的任务时往往力不从心。就像人类可以轻松记住数天前看过的文章重点,但目前的...

不懂设计?AI助力,人人都能成为UI设计师!

最近公司UI资源十分紧张,急需要通过AI来解决UI人员不足问题,我在网上发现了几款AI应用非常适合用来进行UI设计。以下是一些目前非常流行且功能强大的工具,它们能够提高UI设计效率,并帮助设计师创造出...

速来!手把手教你用AI完成UI界面设计

晨星技术说晨星技术小课堂第二季谭同学-联想晨星用户体验设计师-【晨星小课堂】讲师通过简单、清晰的语言描述就能够用几十秒自动生成一组可编辑的UI界面,AIGC对于UI设计师而言已经逐步发展成了帮助我们...

「分享」一端录制,多端使用的便捷 UI 自动化测试工具,开源

一、项目介绍Recorder是一款UI录制和回归测试工具,用于录制浏览器页面UI的操作。通过UIRecorder的录制功能,可以在自测的同时,完成测试过程的录制,生成JavaScr...

APP自动化测试系列之Appium介绍及运行原理

在面试APP自动化时,有的面试官可能会问Appium的运行原理,以下介绍Appium运行原理。Appium介绍Appium概念Appium是一个开源测试自动化框架,可用于原生,混合和移动Web应用程序...

【推荐】一个基于 SpringBoot 框架开发的 OA 办公自动化系统

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍oasys是一个基于springboot框架开发的OA办公自动化系统,旨在提高组织的日常运作和管理...

自动化实践之:从UI到接口,Playwright给你全包了!

作者:京东保险宋阳1背景在车险系统中,对接保司的数量众多。每当系统有新功能迭代后,基本上各个保司的报价流程都需要进行回归测试。由于保司数量多,回归测试的场景也会变得重复而繁琐,给测试团队带来了巨大的...

销帮帮CRM移动端UI自动化测试实践:Playwright的落地与应用

实施背景销帮帮自2015年成立以来,移动端UI自动化测试的落地举步维艰,移动端的UI自动化测试一直以来都未取得良好的落地。然而移动互联网时代,怎样落地移动端的UI自动化测试以快速稳定进行移动端的端到端...

编写自动化框架不知道该如何记录日志吗?3个方法打包呈现给你。

目录结构1.loguru介绍1.1什么是日志?程序运行过程中,难免会遇到各种报错。如果这种报错是在本地发现的,你还可以进行debug。但是如果程序已经上线了,你就不能使用debug方式了...

聊聊Python自动化脚本部署服务器全流程(详细)

来源:AirPython作者:星安果1.前言大家好,我是安果!日常编写的Python自动化程序,如果在本地运行稳定后,就可以考虑将它部署到服务器,结合定时任务完全解放双手但是,由于自动化程序与平...

「干货分享」推荐5个可以让你事半功倍的Python自动化脚本

作者:俊欣来源:关于数据分析与可视化相信大家都听说自动化流水线、自动化办公等专业术语,在尽量少的人工干预的情况下,机器就可以根据固定的程序指令来完成任务,大大提高了工作效率。今天小编来为大家介绍几个P...

取消回复欢迎 发表评论: