java面试题
1.事务的特性,事务的概念:是构成单一逻辑工作单元的操作集合
1.原子性:指事务包含的所有操作要么全部成功,要么全部失败回滚,失败回滚的操作事务,将不能对数据库有任何影响
2.一致性:指事务必须使数据库从一个一致性状态变换到另一个一致性状态,一个事务执行前或执行后都必须处于一致性状态
3.隔离性:指多个线程并发访问数据库时,比如同时访问一张表时,数据库每一个用户开启的事务,不能被其他事务所做的事务干扰,多个并发事务之间,应当互相隔离
4.持久性:指事务的操作,一旦提交,对数据库中的数据改变是永久的,即使数据库发生故障也不能丢失已提交事务所完成的改变
2.单例模式:确保某一个类只有一个实例,并且提供一个全局访问点,属于设计模式三大类中的创建型模式
特点:只有一个实例
自我实例化
提供全局访问点
优点:由于单例模式只生成了一个实例,所以能够节约系统资源,减少性能开销,提高系统效率,也能严格控制客户对他的访问
缺点:系统中只有一个实例,导致单例类指责过重,违背了单一职责原则,同时也没有抽象类,扩展起来也有一定的困难
3.多例模式:可以看做是单例模式的一个推广,区别在于,单例模式有且只有一个对象产生,而多例模式则会产生多个我们需要的对象
使用方法:私有化构造方法,使其在外部无法被调用,构造相应getter()和setter()方法
创建自己所需要的对象
调用多线程进行调试,查看是否生效
4.工厂模式:是为创建对象提高过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的
三类:
简单工厂模式
工厂方法模式
抽象工厂模式
5.代理模式:客户端不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象
代理模式实现
代理模式可以有两种实现的方式,一种是静态代理类,另一种是各大框架都喜欢的动态代理。
6.jquery选择器
元素选择器
属性选择器
css选择器
7.集合框架
集合与数组的区别:
1.数组长度不可变化而且无法保存具有映射关系的数据;集合类用于保存数量不确定的数据,以及保存具有映射关系的数据
2.数组元素既可以是基本类型的值,也可以是对象;集合只能保存对象
List集合特点:
1.有下标
2.有序
3.可以存重复元素
Set集合:
1.无序
2.不可重复
3.没有下标
Collection接口常用方法
add(),clear()清除集合中的所有元素,contains()判断集合中是否存在某元素,equal()方法判断内容是否相等,hashCode()方法返回哈希值,isEmpty()判断集合是否包含元素,iterator()转换成迭代器对象,remove()移除元素,size()集合长度,toArray()转换成数组
Set集合不能存重复元素原理:
由于String类中重写了hashCode()和equals()方法,用来比较指向的字符串对象所存储的字符串是否相等
HashSet集合特点:
无序,不是线程同步的,集合元素值可以是null
hashSet存储原理如下:
当向hashset集合存储一个元素时,hashSet会调用该对象的hashCode方法得到哈希值,如果hashCode相等,则调用equals方法判断内容是否相等;如果哈希值相等,内容不相等,会存入集合
List集合:
堆栈,先进后出
队列,先进先出
数组,查找元素快,增删元素慢
链表,查找元素慢,增删元素快
LinkedHashSet集合是有序的
ArrayList集合contains方法判断元素是否重复
Map接口
键值对形式存值
HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法
常用方法:
get()方法根据key获取值
put()存值
remove()删除值
遍历map集合方法
keySet方法+增强for
步骤先调用keyset方法,把key转换成set集合,再使用增强for
keySet方法+迭代器
步骤先调用keyset方法,把key转换成set集合,再转换成迭代器对象,使用迭代器遍历
entrySet方法+增强for
步骤:先调用entryset方法,把每一个值当成一个对象封装到set集合里,再使用增强for遍历
entrySet方法+迭代器
步骤:先调用entryset方法,把每一个键值对当成一个对象封装到set集合里,在使用迭代器遍历
2。八个基本数据类型
byte short int long float double char boolean
3.方法的重写
在子父类中,子类重写父类可以访问的方法,方法的返回值、形参列表、方法名全都一样
4.方法的重载
再同一个类中,方法的方法名一样,参数列表的数据类型,个数,顺序不一样
5.值传递、引用传递
(1)基本数据类型传值,对形参的修改不会影响实参;
(2)引用类型传引用,形参和实参指向同一个内存地址(同一个对象),所以对参数的修改会影响到实际的对象;
(3)String, Integer, Double等immutable的类型特殊处理,可以理解为传值,最后的操作不会修改实参对象。
6.jsp九大内置对象
request response session application pageContext out cookie config page exception
7.http协议
http请求和http响应组成
请求包括请求行、请求头、请求体,响应包括响应行、响应头、响应体
8.面向对象的三大特性:
封装:隐藏对象的属性和实现细节,但要对外提供公共的访问方式
继承:子类继承父类可继承的属性和方法
多态:父类引用遍历执行子类对象
继承的优点:降低了耦合性,提高了扩展性
9.怎么理解mvc
是一种软件设计模式,用于将数据层和表示层分离
多个视图共享一个数据模式,可以最大化的重用代码
10.运行时期异常
空指针异常,类不存在异常,数组越界异常,方法不存在异常,数字格式异常,sql语句异常
11.Http协议的理解
客户端发起请求,服务器响应
12.创建线程池的方式:
1.类继承Thread类
2.类实现runnable()接口
3.类实现callable()接口
4.创建线程池
13反射的定义
在运行过程中,动态获取类的属性和方法,动态获取对象的属性和方法,这种动态获取信息以及动态调用对象中方法的功能称为反射机制
反射创建对象的三种方式
1.先创建对象,对象调用getclass方法获取字节码文件对象,在调用newinstance方法创建对象
2.类名调用class属性,获取字节码文件对象,再创建对象
3.class的forname(完整的包名+类名)方法
浙公网安备 33010602011771号