JavaSE复盘

之前学的很多都忘了,而且之前的知识就没有理解清楚,这次做题的时候连接池的这些种类还有ThreadPoolExecutor 的状态没有印象了。

关于继承和实现说法正确的 是 ? ( )

A.类和接口都不可以实现多个接口

B.类可以实现多个接口,接口不能继承 (或扩展) 多个接口

C.类可以实现多个接口,接口可以继承 (或扩展) 多个接口

D.类和接口都可以实现多个接口

继承:类可以通过继承来获得父类的属性和方法,并可以扩展或重写这些方法和属性,在继承关系中,一个类只能继承一个父类

实现:接口定义了一组要求实现的方法和属性,类可以实现一个或多个接口,通过实现接口,类需要提供接口中定义的所有属性和方法的具体实现

类可以实现多个接口,这使得类可以具有多个不同的行为。同时,接口也可以继承(或扩展)多个接口,这样可以组合和扩展接口的功能

以下关于Java传递方法参数说法正确的是?

A.Java的参数传递在参数为基本数据类型时是值传递,在参数为对象时传递的是参数的引用

B.Java中的参数传递是引用传递,其传递的是参数的引用

C.Java的参数传递是值传递,其传递的是引用的地址值,所以是值传递

基本数据类型:当参数为基本数据类型时,方法接收的是实际值的拷贝,对该拷贝进行操作不会影响到原始值。

对象类型:当参数为对象类型时,实际上传递的是对象的引用的拷贝。这意味着方法内部可以修改对象的状态,并且这些修改会反映在方法外部,拷贝的地址和真实地址指向的都是同一个真实数据,因此可以修改原变量中的值

在jdk1.5之后,下列 java 程序输出结果为

int i=0;
Integer j = new Integer(0);
System.out.println(i= =j);
System.outprintln(j.equals(i));

A.true,false
B.程序无法执行
C.true,true
D.false,true
E.false,false

jdk1.5之后出现的自动拆装箱
”== ”比较的是址,equals()比较的是值。

i为基本类型,j为new出的Integer类型的引用。i==j比较时j会先进行拆箱,所以就是0 == 0 结果为true;j.equals(i)i会进行装箱,equals()进行比较判断两个类型都是Integer类型,再去比较两个的值两个都是0 所以结果就是true

以下说法对于集合类底层实现错误的是?
A.TreeMap 的底层存储采用的是 AVL-树 数据结构
B.ArrayList 的底层采用的数据结构是数组
HashMap 底层存储使用到数组、链表、树等数据结构
HashSet 是依靠 HashMap 来实现的

 TreeMap 的底层存储采用的是红黑树(自平衡的排序二叉树)

String s = new String("xyz");创建了几个StringObject

A两个

B.一个

C.三个

D.两个或一个都有可能

当常量池中没有“xyz”是,在堆中创建一个object,在常量池中创建一个object,此时有两个object

当常量池中存在“xyz”时,仅在堆中创建一个object

ArrayList和Vector主要区别是什么?
A.Vector与ArrayList一样,也是通过数组实现的,不同的是ArrayList支持线程的同步
B.vector是通过链表结构存储数据,ArrayList是通过数组存储数据
C.上述说法都不正确
D.Vector与ArrayList一样,也是通过数组实现的,不同的是vector支持线程的同步

关于线程池ThreadPoolExecutor生命周期的说法错误的是:
A.RUNNING: 可以接受新的请求并执行排队的任务
B.STOP: 不接受新的任务,打断所有线程,清空任务队列,并返回队列中未完成的任务
C.SHUTDOWN: 不接受新的任务,打断空闲线程,但是继续执行完内部队列中排队的任务
D.WAITING: 将新的任务加入任务队列,打断空闲线程,并挂起所有正在执行的线程

ThreadPoolExecutor 的五种状态

1. RUNNING : 线程池创建之后的初始状态,在该状态下可以执行任务

2.SHUTDOWN 该状态下线程池不接收新任务,但是会将工作队列中的任务执行完毕

3. STOP : 该状态下线程池不再接收新任务,也不会处理工作队列中的剩余任务,并且将会中断所有工作进程

4. TIDYING : 该状态下所有任务都已终止或处理完成,将会执行terminated()钩子方法

5. TERMINATED : 执行完terminated方法之后的状态

下面程序的运行结果是:

String strl ="hello";
String str2 = "he" + new String("llo");System.err.println(strl == str2);

A.无输出

B.exception

C.false

D.true

== :比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。

equals:用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。

(基本数据类型只能用"=="比较两个值是否相同,不能用equals(因为基本数据类型不是类,不存在方法))

事务的四大特性:()、()、()、()

(1) 原子性

(2) 一致性

(3) 隔离性

(4) 持久性

SQL的 SELECT 语句中,"HAVING 条件表达式"用来筛选满足条件的:分组

HAVING短语要结合GROUP BY使用,用来限定满足分组条件的元组

WHERE 用于过滤数据行,而 HAVING 用于过滤分组

创建线程的三种方式: 继承 () 类、实现 () 接口、实现 () 接口

(1) Thread

(2) Runnable

(3) Callable

Runnable和Callable的区别是,

Callable规定的方法是call(),Runnable规定的方法是run()。

Callable的任务执行后可返回值,而Runnable的任务是不能返回值

call方法可以抛出异常,run方法不可以

Java语言中,子类继承父类时使用()关键字,而类实现接口时采用()关键字。实例化对象时,使用()运算符为对象分配存储空间。

(1) extends

(2) implements

(3) new

在Java接口中,下面哪些方法是有效的方法声明
A.void function1()
B.public void functionl()

C.private void function1()
D.protected void function1()

接口中的方法前的访问权限控制符默认(省略的情况)为public,只能是public

关于Java中的数组,下面的一些描述,哪些描述是准确的:
A.可以二维数组,且可以有多维数组,都是在Java中合法的
B.数组是一个对象,不同类型的数组具有不同的类

C.个固定长度的数组可类似这样定义: int array[100]
D.数组长度是可以动态调整的
E.数组是一个连续的存储结构
F.两个数组用equals方法比较时,会逐个便利其中的元素,对每个元素进行比较

下面MySQL中表示时间的数据类型有哪些?
A. timestamp
B. time
C. year
D. date
E. datetime

下面哪些容器是线程安全的?
A. Vector
B.HashMap
C. ArrayList
D.HashSet
E. TreeSet
F.HashTable
G.ConcurrentHashMap

H.LinkedHashMap

有关java静态初始化块说法正确的是? ()
A.用户可以控制何时执行静态初始化块
B.在创建第一个实例前,将自动调用静态初始化块来初始化
C.静态初始化块没有访问修饰符和参数
D.无法直接调用静态初始化块

List有哪些实现类
A.Arrays
B.Linkedlist
C.Vector
D.ArrayList

你可能感兴趣的:(JavaSE面试题,学习,javaSE)