java部分面试题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、java部分面试题思路

1、一阶段

集合:存放数据的底层结构(二叉树 红黑树)
多线程: 1:线程生命周期
2:多线程+socket(tcp/ip)—>发送和接收报文(写代码)
3: 生产者 消费者(多窗口买票)
反射: java无处不反射

2、 二阶段

多表联合查询: 笔试
js

3 、三阶段

1.简单描述MVC思想(5分)
2. 简单描述ORM思想(5分)
3.SpringMVC的执行流程(5分)
4.SpringMVC的常用组件的作用(5分)
5.谈一谈你对IOC的理解?(5分)
6.谈一谈你对AOP的理解?(5分)
7.Spring 框架中都用到了哪些设计模式?(5分)
8.MyBatis的优点?(5分)
9.#{}和${}的区别(5分)
10.简单描述单体架构,垂直架构,分布式架构的优缺点?(5分)

mybais:
1:#{}和${}
#{} 被解析为占位符,有效避免sql注入 预编译sql降低sql执行的时候存在数据库的资源损耗
${} sql拼接字符串,存在sql注入的风险 静态sql,mysql要对静态sql进行预编译处理

2:mybatis优势(为什么采用mybatis作为持久层)
a: 将sql和java进行了显示分离(解决了硬编码问题)。
b: 解决了编码中冗余问题(遍历结果结果)。
c: 使用数据源方式,避免了重复开启和关闭数据库连接。
d: 符合orm思想,极大提升开发效率。

3: 常用的动态sql
if where set trim foreach …,解决了拼接sql中存在的硬编码码

4:半ORM框架
ORM: 对象关系映射
Hibernate:全ORM,hibernate中我们操作数据库的时候不需要书写sql语句(hql)
Mybatis:半ORM Mybatis在编写过程中需要手动书写sql语句,其余部分自动映射

Spring:
1: 特点(描述spring优势)
a:一站式服务(spring提供了进行javaEE开发需要的所有的技术)
b: 轻量级框架(开发使用的难度,对硬件的要求不高)
c: 无缝连接(spring可以和其他进行进行整合操作)
d: 模块化设计(解耦–便于程序的扩展和维护 使用: 根据工程的需求导入需要的那一部分)
2: ioc机制
ioc: 控制反转(控制反向)
IOC就是一个Spring特有的,用来装类对象的,就是我们用Spring框架时,不需要new对象了,不过我们需要让我们的Spring知道我们写了哪些配置和需要用什么,所以这时我们就要引用Spring的注解或者在配置xml文件上配置我们的类配置,就是在我们自己写的类上加上@Component、@Controller、@Service、@Repository等等这些让我们的Spring知道我们等下要调用有哪些类,让它先准备准备,等下我们需要用了,就getBean或者通过@Autowrite、@Resource来取就行了,给个生活比喻吧,我们就是少爷,IOC是一个管家,我们的类是我们努力的家产,但我的东西太多了,平时要用的时候还要自己一个一个的去拿,这时很容易把自己“累趴”,在Java中我们所说的就是效率太低,和耦合度太高了,这时我们有钱以后肯定想生活更加好,更加方便所以这时就去请人过家要就行了,来帮我们打理家常等这不,IOC管家就来了吗,从此我们在编程时需要什么就直接向管家要就行了,不过你要确定你自己的东西是存在的,而且管家已经知道了才行,不然你又要停下来慢慢的找你的“异常”了。

传统编程存在问题:
对象直接依赖关系耦合性高,不利于程序的扩展和维护,通过new的方式创建依赖的对象,存在内存浪费(在不同的类中重复new同一类的对象)

spring提出了ioc机制,有效的解决了当前的问题
1: spring提供了一个容器,在程序的初始化阶段将所有的java对象放入到容器中(控制)
2: 采用了运行时加载的机制,在业务中需要某些对象的时候容器动态的给我们植入依赖内容。

3: aop机制
面向切面编程: 降低程序的耦合性 提高程序的扩展性和维护性

传统编程存在的问题:
例如: 编程中如果一个服务方法中存在多个和数据库交互的过程(更新),那么我们需要给该方法添加事务管理,传统的方式是我们在业务方法中添加事务管理的代码。如果在项目中多个方法都需要添加事务管理,代码中就会出现冗余。导致程序的扩展性和维护性较差。

aop解决了上述问题:
aop面向切面编程 弥补了面向对象编程不足(面向对象的结构化单元类),如果我们只需要对类中的某些方法进行扩展,必须将扩展的代码书写到指定的业务中。aop做法是不会将我们的扩展的内容添加到业务中,给我们的执行业务的对象创建了一个代理对象,然后代理对象回调一个invoke方法,在invoke方法中使用反射执行目标方法,我们就可以在invoke方法中扩展目标方法执行过程中扩展的业务代码。

aop概念
切点: 需要进行业务扩展的方法特点
通知: 那一时刻影响切点方法
切面: 切点和通知的统称
连接点: 正在执行的切点方法
目标: targer(真实对象)
代理: aop采用的代理的设计思想实现的
织入:创建代理对象的过程
引入:将外扩展内容添加到目标对象的过程。

SpringMVC:
1: 执行流程(详见课件)

2:springMVC常用注解
@RequestMapping
@RequestBody
@ResponseBody
@RequetParam
@Pathvireable
@RequestHeader
@CookieValue

spring常用注解:
1:放入对象到容器中 @Componet @Repository @Service @Controller
2: 从容器中获取 @Resource @Autowrited
3: 配置 @Configurantion @Bean @Value

spring中应用的设计模式:
1:工厂
2:单例
3:代理
4:模板
5:适配器

ssm_blog

Redis:
1: 缓存数据库(非关系型数据库),缓解mysql(关系型数据库)中规则数据的存储和响应。
Redis 数据结构是基于key/value,提供了丰富的value的数据类型(String List Set Hash ZSet)

扩展: redis集群技术
https://blog.csdn.net/m0_49526543/article/details/109640455
架构层面:
JVM优化:
tomcat优化:

2:Nginx(程序部署)
1: 负载均衡
2: 动静分离

3:dubbo+zookeeper(动物管理员)
共同的组成了一种新型的程序架构模式(分布式架构)

4:SpringBoot

springboot优点:
1: 没有xml配置
2:内置服务器
3: jar包就是一个独立的工程
4: 启动器
5:自动结成第三方内容

启动器(常用的启动器)
5:MybatisPlus

6:ES


总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值