- 讲讲单例模式和工厂模式
- 单例模式被认为是职责模式这是因他将对象的控制权委托到单一的点上,所有单类至少有以下三种公共元素
- 1.他必须有一个构造函数,并且必须标记为private私有
- 2.他拥有保存的实例静态成员变量
- 3他拥有一个实例的公共的静态方法
- 工厂模式是指包了一个专门的创建其他对象方法类,工厂模式在多态编程实践中非常重要的买它允许动态替换静态通常是程序更加灵活
2.谈谈对IOC、aop的理解
- IOC是控制反转,面向对象的编程的设计原则,可以用来减低计算机的代码之间的耦合度
- Aop是面向切面编程完善spring的以来注入,面向切面编程在spring中的主要两个方面:
- 面向切面的编程提供声明事物
- spring支持用户自定义的切面
- 数据库索引在哪利用到 为什么 是没情况下会导致索引失效
- 在数据库中查询数据时用到索引如果不创建索引,查询效低,我们通过创建索引提高查询效率
- 再引用列使用函数
- 如果条件中用的or即使条件中带有索引也不会使用
- where后面有like 以%开头
- 如果mybatis 中使用全白扫描。
- java8新特性
- 默认方法:就是接口可以实现方法,而不是实现类实现方法
- 放法引用: 通过名字指向一个方法
- 函数接口:就是有一个且仅有一个抽象方法,但是可以有多个抽象方法
- mybatis中的${}和#{}的区别
${}是properties 文件中的变量占位符,他可以通过标签和sql内部属性静态文本替换,#{}是sql参数占位符,mybatis将会sql中的#{}转换为?号,在使用preparedStatement的参数设置方法,按sql的?号占位符设置产参数值
- mybatis中怎么<>怎么处理
用了转义宇把<>替换掉,<和>
- map 如何遍历出来
Map<String,Object>map =new HashMap<>();
map.put("1","ab");
map.put("2","ba");
for(String str:Map.KeySet){
Object o=map.get(str);
system.out.println(str+" "+o);
}
- list如何遍历出来写出来
List<String>list=new Arrlist<>();
list.add("张三");
list.add("李四");
for(String str:list){
system.out.println(str);
}
- 谈谈arraylist和linklist
Arraylsit 实现了动态数组结构,linklist基于链表的数据结构对于随机访问get和set,Arraylist要优于linklist,因为linklist需要指针
- SQL优化
- 尽量避免对全表扫码,首先考虑where及order by 涉及的索引
- 避免在where句子中 出现!=或者<>操作符,负责导致引擎放弃索引而进行的全表扫描
- 避免在where后面出现ORl链接条件。like %%;
- in和not in 也要慎用
- 事物是什么
事物分为两种一种是编程事物一种是声明事物。
变成事物利用Jdbc写的commit和rollback的方式提交或回滚事物。这种控制事物的方式比较麻烦,一般做大项目的时候不建议使用这种方式
声明事物在一个地方声明一下。然后程序中不在需要在有事物声明控制代码,使用起来简单