第二次面试

笔试部分

1.IOC的原理

1.我的回答

忘了

2.应该这样回答

工厂模式+反射看这篇文章

<bean id="", class=""/>

工厂中通过全限定类名获得class对象再通过class来实例化对象,最后通过id获取到具体的方法。

2.什么是DI注入?DI注入有哪些方式?

  • 在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入
  • 注入方式:
  1. setter注入
  2. 构造器注入
  • 使用构造器注入时的配置方式
  1. 按参数名称name
  2. 按参数类型
  3. 按参数下标

3.Dao接口的工作原理?Dao接口方法里面的参数不同时方法能够重载吗?

1.我的回答

不能重载

2.应该这样回答

1.Dao接口的工作原理是JDK的动态代理,当调用接口方法(对应id)时,接口全限名(命名空间)+方法名拼接字符串作为key值,可唯一定位一个MappedStatement,形参就是传递给sql语句的参数。MyBatis运行时会使用JDK动态代理为Dao接口生产代理proxy对象,代理对象会拦截接口方法,转而执行MappedStatement所代表的sql,然后将sql执行结果返回。

4.AOP中的切面是什么?

切面就是AOP中对于切面和切入点之间的关系描述

5.AOP中的关注点和横切关注点

横切关注点是贯穿整个程序的关注点,例如日志;而关注点是指我们想实现的方法
关注点是应用中一个模块的行为,一个关注点可能会被定义成一个我们想实现的一个功能。
横切关注点是一个关注点,此关注点是整个应用都会使用的功能,并影响整个应用,比如日志,安全和数据传输,几乎应用的每个模块都需要的功能。因此这些都属于横切关注点。

6.面向对象开发的三大特性

1.我的回答

可移植性、高复用性、健壮性

2.应该这样回答

封装、继承、多态
可以看看这篇文章

7.spring支持的事务管理类型

声明式事务管理和编程式事务管理
更多

8.为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?

这个文章值得一看
Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。而 Mybatis 在查询关联对象或关联集合对象时,需要手动编写 sql 来完成,所以,称之为半自动 ORM 映射工具。

9.static final 和finally的区别

static final是修饰方法和属性的,被修饰的方法不能被重写,被修饰的属性不能被继承,属性值不能被更改。finally只是异常处理语句的一部分,不管是否发生异常都会执行该语句内的内容,一般用于释放资源。

10.#{}和${}的区别

1.我的答案

#{}是在使用参数作为路径时读取参数用的,${}是读取配置文件内容的

2.应该这样回答

1.#{}是预编译处理,可以防止SQL注入(因为mybatis在加载#{}时会讲sql中的#{}替换为?使用preparedStatement的set方法来赋值。)
2.${}是字符串替换

11.如何获取自增id这里有七种办法

1.pstm.getGenerated();
2.select max(id) from table;
3.SELECT LAST_INSERT_ID()

8.编写java代码实现字符串逆序

9.编写java代码实现字符串乱序

面试部分

1.jvm的原理

1.我的回答

2.应该这样回答

2.IO流有哪些,字节流和字符流的区别

1.我的回答

字符流和字节流

2.应该这样回答

IO流有字节流和字符流、字节流和字符流下面又分为文件字节流和文件字符流
在这里插入图片描述
区别:

1.文件字节流能够操作所有文件,字符流只能操作纯文本文件
2.字节流以字节的形式进行读写操作,字符流以字符的形式进行读写操作
3.如果采用字节流读取中文容易乱码,字符流是按字符读取,不易乱码

3.Mybatis的一级缓存和二级缓存什么区别

1.我的回答

2.应该这样回答

4.高并发和高并行的区别

5.如何处理高并发

6.数据库乐观锁和悲观锁

7.Mybatis和Hibernate的区别

1.mybatis是半自动orm(查询关联对象或关联集合对象时需要自己写sql),hibernate是全自动orm(可以根据对象/关系模型直接查询关联对象或关联集合对象)。
2.mybatis学习门槛低,hibernate学习门槛高。
3.mybatis比hibernate更灵活但是工作量更大。

8.如何实现请求路径加密

1.我的回答

不知道

2.应该这样说

答案在这里,先了解一下

9.redis如何解决高并发

10.有没有了解springcloud

11.springmvc的工作流程

说得挺好

12.说一下反射的实现原理

java通过获取jvm中的字节码文件来找到指定的类,然后对这个类进行一系列操作。

13.状态码301和302什么意思

状态码大全
3xx是重定向状态,301代表永久重定向,302代表临时重定向

14.反射如何获取对象(原来这里是指class对象吗!!!)

1.Object.getClass();
2.Object.Class;
3.Object.forName(全类名);

15.创建多线程有多少种方法

1.继承Thread类创建线程
2.实现Runnable接口创建线程
3.使用Callable和Future创建线程
4.使用线程池例如用Executor框架

16.Bean的创建方式

构造方法,静态工厂和实例工厂

面试感想

今天面试状态比昨天好了许多,但是仍旧像是喝了假酒一样。。。。。。。。。。。。已经无力吐槽了,只能赶紧补一补面试题。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值