1. SpringMVC的执行流程
Dispatcher->HandlerMapping->HanderAdapter->Handler->ViewResolver->View
2. Integer a= 128 与 Integer b = 128相等吗?
不相等,两个不同的对象
3. Mybatis的一级、二级缓存
- 一级缓存
Mybatis的一级缓存是指Session缓存。一级缓存的作用域默认是一个SqlSession。Mybatis默认开启一级缓存。
也就是在同一个SqlSession中,执行相同的查询SQL,第一次会去数据库进行查询,并写到缓存中;第二次以后是直接去缓存中取。
当执行SQL查询中间发生了增删改的操作,MyBatis会把SqlSession的缓存清空。
一级缓存的范围有SESSION和STATEMENT两种,默认是SESSION,如果不想使用一级缓存,可以把一级缓存的范围指定为STATEMENT,这样每次执行完一个Mapper中的语句后都会将一级缓存清除。 - 二级缓存
Mybatis的二级缓存是指mapper映射文件。二级缓存的作用域是同一个namespace下的mapper映射文件内容,多个SqlSession共享。Mybatis需要手动设置启动二级缓存。
二级缓存是默认启用的(要生效需要对每个Mapper进行配置),如想取消,则可以通过Mybatis配置文件中的元素下的子元素来指定cacheEnabled为false。
4. 列举工作中常用的几个git命令?
git init
git add
git commit
git push
git pull
git clone
git checkout
git branch 分支名称
5. 提交时发生冲突,你能解释冲突是如何产生的吗?你是如何解决的?
- 冲突是如何产生的
我们都知道,Git的实现途径是1棵树。比如有一个节点树(point1),
我们基于point1进行开发,开发出了结点point2;
我们基于point1进行开发,开发出了结点point3;
如果我们在point2和point3内操作了同一类元素,那么势必会导致冲突的存在。 - 冲突是如何解决的?
解决冲突通常使用如下的步骤即可:
情况1 无冲突
先拉取远端的代码,更新本地代码。然后提交自己的更新代码即可。
情况2 有冲突
拉取远端代码。存在冲突,会报错。
此时我们需要将本地代码暂存起来 stash;
更新本地代码,将本地代码版本更新和远端的代码一致即可;
将暂存的代码合并到更新后的代码后,有冲突解决冲突(需要手动进行解决冲突);
提交解决冲突后的代码。
6. Git中如果代码出现bug,你们是如何解决的?
开启一个bug分支
7. 项目中常见的分支 有哪些?
master:主分支,对外发布
dev:开发分支
test:测试分支
bug:修复bug分支
feature:特性分支
hotfixes:热线分支
8. String a = “ab”; String b = “a” + “b”; a == b 是否相等,为什么?
相等,string 性能优化
String a =“a”+“b”+“c”+“d”;
9. volatile作用?
a、防止执行指令重排序
b、内存可见性
10. Java 中,Comparator 与Comparable 有什么不同?
- Comparable 接口用于定义对象的自然顺序,而 comparator 通常用于定义用户定制的顺序。Comparable 总是只有一个,但是可以有多个 comparator 来定义对象的顺序。
- Comparable是在集合内部定义的方法实现的排序,位于java.lang下。
Comparator是在集合外部实现的排序,位于java.util下。