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(完整的包名+类名)方法

posted @ 2020-12-15 11:55  杰斯-java  阅读(113)  评论(0)    收藏  举报