1.简述你对面向对象的三大特征理解(必考)。
面向对象的特点主要可以概括为封装性、继承性和多态性。
其中封装是面向对象核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想。
继承性主要描述的是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展。
多态性指的是在程序中允许出现重名现象,它指在一个类中定义的属性和方法被其它类继承后,它们可以具有不同的数据类型或表现出不同的行为,这使得同一个属性和方法在不同的类中具有不同的语义。
2.简述接口和抽象类的区别。
抽象类:1.包含抽象方法的类必须是是抽象类;
2.声明抽象类和抽象方法时都要使用abstract关键词修饰;
3.抽象方法只需要声明而不需要实现;
4.如果一个非抽象类继承了抽象类之后,那么该类必须重写抽象类中的全部抽象方法。
接口:
1、接口使用interface关键词声明;
2、接口不允许继承抽象类,但是允许接口继承接口,并且一个接口可以同时继承多个接口;
区别:
(1).抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象.
(2).抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。
(3). 继承是一个 “是不是”的关系,而接口实现则是 “有没有”的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系。
(4).接口只给出方法的声明,不给出方法的实现。抽象类中可以有抽象方法的一般方法。如果是抽象方法的话,只有方法的声明。如果是一般方法的话,既有方法的声明,也有方法的实现。
3.简述集合list、set和map的区别。
(1)List的特点是元素有序、可重复。List接口的主要实现类有ArrayList和LinkedList。
(2)Set的特点是元素无序、不可重复。Set接口的主要实现类有HashSet和TreeSet。
(3)Map的特点是存储的元素是键(Key)、值(Value)映射关系,元素都是成对出现的。Map接口的主要实现类有HashMap和TreeMap。
4.简述一下实现多线程的三种创建方式。
(1)继承java.lang包中的Thread类,重写Thread类的run()方法,在run()方法中实现多线程代码。
(2)实现java.lang.Runnable接口,在run()方法中实现多线程代码。
(3)实现java.util.concurrent.Vallable接口,重写call()方法,并使用Future接口获取call()方法返回的结果。
5.请描述一下实现Runable接口创建并启动的步骤
(1)定义Runnable接口的实现类,重写该接口的run()方法;
(2)创建Runnable实现类的实例并作为参数传入;
(3)调用线程对象的start()方法来启动该线程。
6.简述什么是运行时异常和编译时异常,两种异常的特点。
(1)编译时异常:在实际开发过程中,经常会在程序编译时产生异常,这些异常必须进行处理,否则程序无法正常运行。 特点:不处理,程序就不能编译通过。
(2)运行时异常:在程序运行时产生,即使不编写异常处理代码,依然可以通过编译。特点:JAVA编译器不会对异常进行检查。
7.简述JDBC语句之间数据库的六个基本步骤(简答/填空)。
(1)加载并注册数据库驱动(2)建立连接,获取连接对象(3)获取Statement对象(4)执行SQL语句(5)操作结果集(6)关闭连接,释放资源。
8.简述Iterator遍历集合时的步骤
通过调用集合的iterator()方法获取Iterator对象,然后使用while循环和hasNext()方法判断是否还有下一个元素,使用next()方法获取下一个元素,对获取到的元素进行处理或者操作。重复执行步骤,直到遍历完所有元素。
9.描述一下匿名内部类 +选择
匿名内部类是Java中一种没有名字的类,它通常在需要时直接在代码中创建,用于实现某个功能或接口。它们通常包含一个或多个静态方法,以及可能的其他实例方法。匿名内部类可以提高代码的可读性和简洁性,尤其适用于较小的、一次性使用的功能实现。
10.泛型接口创建方式
//泛型接口的创建方式与泛型类类似,可以在接口名称后面添加尖括号,并指定泛型类型参数,泛型参数可以是任意标识符,通常使用大写字母开头的单词来表示。
(1)定义泛型接口:使用尖括号<>标识泛型类型,其中尖括号内表示泛型参数。
(2)实现泛型接口:在类或结构体中,使用泛型参数实现泛型接口。
(3)创建泛型类型:使用泛型类型参数创建泛型类型。
(4)使用泛型类型:在代码中使用泛型类型时,需要为泛型类型参数提供具体类型。
11.线程安全是指什么,解决方法。
线程安全问题其实就是由多个线程同时处理共享资源所导致的。
解决方案:(1)为了实现多个线程处理同一个资源,在Java中提供了同步机制。当多个线程使用同一个共享资源时,可以将处理共享资源的代码放在一个使用synchronized关键字修饰的代码块中,这个代码块被称作同步代码块。(2)除了修饰代码块,synchronized关键字同样可以修饰方法,被synchronized关键字修饰的方法为同步方法。同步方法和同步代码块一样,同一时刻,只允许一个线程调用同步方法。
12.string类的equals()方法和==的区别。
String类的equals()方法用于比较两个字符串的内容是否相等,而"=="用于比较两个字符串对象在内存中的引用是否相等。
13.访问控制权限有哪几种?
public:公共访问权限
private:私有访问权限
protected:受保护的访问权限
default:默认访问权限
14.构造方法描述:构造方法时一个特殊的成员方法
(1)构造方法的名称必须和类名一致
(2)构造方法名称前不能有任何返回值类型声明(3)不能在构造方法中使用return返回一个值。
15.关于继承的描述?
类的继承是指在一个现有类的基础上构建一个新的类,构建的新类被称作子类,现有类被称作父类。子类会自动继承父类的属性和方法,使得子类具有父类的特征和行为。如果想声明一个类继承另一个类,需要使用extends关键字。
16.重写但不希望被重写的关键字:final关键字
17.(Throwable)类是所有异常类的父类
18.如何获取全部的构造方法(填空)
要获取类的构造方法,可以使用Class类的getConstructors()方法。
19.反射中通过什么方法获取构造方法的修饰符?
需要调用java.lang.reflect包中Modifier类的toString()方法。