Java基础周测-07-综合

一、单选题 

  异常处理

  1. 在异常处理中,以下描述不正确的有

  A、 try块不可以省略

  B、 可以使用多重catch块

  C、 finally块可以省略

  D、 catch块和finally块可以同时省略

  参考答案:D

题目解析:

try语句后面是可以省略catch语句的,但是必须有finally语句。

也可以省略finally语句,但是必须要有catch语句。

也就是说try语句后面必须要有一个别的语句跟在后面

try-catch
try-finally
try-catch-finally

切记:catch和finally语句不能同时省略!!!

 

  事务隔离级别

  1. 事务隔离级别是由谁实现的?

  A、 Java应用程序

  B、 Hibernate

  C、 数据库系统

  D、 JDBC驱动程序

  参考答案:C

 

  编码

  1. 语句:char foo='中',是否正确?(假设源文件以GB2312编码存储,并且以javac – encoding GB2312命令编译)

  A、 正确

  B、 错误

  参考答案:A

知识点:

java中,byte和C++中的char类型是一样的,8位,1个字节,-128-127。但是,char类型,是16位,2个字节, '\u0000'-'\uFFFF'。

Java语言中,中文字符所占的字节数取决于字符的编码方式,一般情况下,采用ISO8859-1编码方式时,一个中文字符与一个英文字符一样只占1个字节;采用GB2312或GBK编码方式时,一个中文字符占2个字节;而采用UTF-8编码方式时,一个中文字符会占3个字节

 

  垃圾回收机制

  1. 以下哪项陈述是正确的?

  A、 垃圾回收线程的优先级很高,以保证不再使用的内存将被及时回收

  B、 垃圾收集允许程序开发者明确指定释放哪一个对象

  C、 垃圾回收机制保证了JAVA程序不会出现内存溢出

  D、 进入”Dead”状态的线程将被垃圾回收器回收

  E、 以上都不对

  参考答案:E

题目解析:

A:垃圾回收在jvm中优先级相当相当低。
B:垃圾收集器(GC)程序开发者只能推荐JVM进行回收,但何时回收,回收哪些,程序员不能控制。
C:垃圾回收机制只是回收不再使用的JVM内存,如果程序有严重BUG,照样内存溢出。
D:进入DEAD的线程,它还可以恢复,GC不会回收

知识点:

当程序运行时,至少会有两个线程开启启动,一个是我们的主线程,一个是垃圾回收线程,垃圾回收线程的priority(优先级)较低

垃圾回收器会对我们使用的对象进行监视,当一个对象长时间不使用时,垃圾回收器会在空闲的时候(不定时)对对象进行回收,释放内存空间,程序员是不可以显示的调用垃圾回收器回收内存的。

但是可以使用System.gc()方法建议垃圾回收器进行回收,但是垃圾回收器不一定会执行。

Java的垃圾回收机制可以有效的防止内存溢出问题,但是它并不能完全保证不会出现内存溢出。

例如当程序出现严重的问题时,也可能出现内存溢出问题

  

  访问修饰符

  1. 下列哪个对访问修饰符作用范围由大到小排列是正确的?()

  A、 public>protected>default>private

  B、 public>default>protected>private

  C、 private>protected>default>public

  D、 private>default>protected>public

  参考答案:A

  

 

  1. 下列符号中可以在 java 程序里表示单行注释的是( )

  A、 --

  B、 /* ……*/

  C、 //

  D、 /** ……*/

  参考答案:C

 

  1. Java 语言中创建一个对象使用的关键字是()

  A、 class

  B、 interface

  C、 new

  D、 create

  参考答案:C

 

  1. 下面关于 new 关键字的表述错误的是()

  A、 new关键字在生成一个对象时会为对象开辟内存空间

  B、 new关键字在生成一个对象时会调用类的构造方法

  C、 new关键字在生成一个对象时会将生成的对象的地址返回

  D、 Java中只能通过new关键字来生成一个对象

  参考答案:D

 

  list,set

  1. 有这样一段程序

public class Test{ 

    public static void main(String [] args){ 

        List list=new ArrayList(); 

        list.add("a"); list.add("b"); list.add("a");

        Set set=new HashSet(); 

        set.add("a"); set.add("b");  set.add("a"); 

       System.out.println(list.size()+","+set.size()); 

    } 

}

  请问运行主要的程序会打印出的是什么()

  A、 2,2

  B、 2,3

  C、 3,2

  D、 3,3

  参考答案:C

 

  默认值

  1. 当你编译和运行下面的代码时,会出现下面选项中的哪种情况?( )

public class Pvf{

    static boolean Paddy;

    public static void main(String args[]){

    System.out.println(Paddy);

    }

}

  A、 编译时错误

  B、 编译通过并输出结果false

  C、 编译通过并输出结果true

  D、 编译通过并输出结果null

  参考答案:B

题目解析:

Paddy是成员变量,其默认是是0 -> false

 

  异常处理

  1. 给定以下JAVA代码,这段代码运行后输出的结果是()

public class Test1 {
    public static int aMethod(int i) throws Exception {
        try {
            return i / 10;//①
        } catch (Exception ex) {
            throw new Exception("exception in a aMethod");//②
        } finally {
            System.out.printf("finally");//③
        }
    }

    public static void main(String[] args) {
        try {
            aMethod(0);//④
        } catch (Exception ex) {
            System.out.printf("exception in main");//⑤
        }//⑦
        System.out.printf("finished");//⑥
    }//⑧
}

  A、 exception in main finished

  B、 finallyfinished

  C、 exception in main finally

  D、 finally exception in main finally

  参考答案:B

题目解析:代码执行顺序 -> ④ ->① ->③ ->① ->④ ->⑦ ->⑥->⑧

i / 10;无论i是多少,永远不会抛出异常,所以catch语句不会执行。
而finally语句是必定执行的语句。
所以先指向aMathod()的finally代码块,输出finally,
然后执行main()方法的最后一条输出语句,输出finished。

 

  方法的调用

  1. 假设 A 类有如下定义,设 a 是 A 类同一个包下的一个实例,下列语句调用哪个是错误的?()

public class A {
    int i;
    static String s;
    void method1() {
    }
    static void method2() {
    }
}

  A、 System.out.println(a.i);

  B、 a.method1();

  C、 A.method1();

  D、 A.method2()

  参考答案:C

知识点:

静态成员和静态方法, 可以直接通过类名进行调用;

其他的成员和方法则需要进行实例化成对象之后, 通过对象来调用。

 

  默认值

  1. 关于如下程序的描述哪个是正确的?( )

public class Person {
    static int arr[] = new int[5];

    public static void main(String a[]) {
        System.out.println(arr[0]);
    }
}

  A、 编译将产生错误

  B、 编译时正确,但运行时将产生错误

  C、 正确,输出0

  D、 正确,输出 null

  参考答案:C

题目解析:

char[] ch = new char[3]; //默认空字符
int [] Int = new int[2]; //默认0
String[] strings = new String[2]; //默认null

 

  异常处理

  1. 执行下列代码的输出结果是( )

public class Demo {
    public static void main(String args[]) {
        int num = 10;
        System.out.println(test(num));
    }

    public static int test(int b) {
        try {
            b += 10;
            return b;
        } catch (RuntimeException e) {
        } catch (Exception e2) {
        } finally {
            b += 10;
            return b;
        }
    }
}

  A、 10

  B、 20

  C、 30

  D、 40

  参考答案:C

 

  volatile,synchronized 

  1. 下列说法正确的是( )

  A、 volatile,synchronized 都可以修改变量,方法以及代码块

  B、 volatile,synchronized 在多线程中都会存在阻塞问题

  C、 volatile能保证数据的可见性,但不能完全保证数据的原子性,synchronized即保证了数据的可见性也保证了原子性

  D、 volatile解决的是变量在多个线程之间的可见性、原子性,而sychroized解决的是多个线程之间访问资源的同步性

  参考答案:C

知识点:

1、一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:
(1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。
(2)禁止进行指令重排序。
2、volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取; synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。
3、volatile仅能使用在变量级别; synchronized则可以使用在变量、方法、和类级别的。
4、volatile仅能实现变量的修改可见性,并不能保证原子性; synchronized则可以保证变量的修改可见性和原子性。
5、volatile不会造成线程的阻塞;synchronized可能会造成线程的阻塞。
6、volatile标记的变量不会被编译器优化; synchronized标记的变量可以被编译器优化。

 

  start,run

  1. 下面程序的运行结果是:( )

public class Thread1 {
    public static void main(String args[]) {
        Thread t = new Thread() {
            public void run() {
                pong();
            }
        };
        t.run();
        System.out.print("ping");
    }

    static void pong() {
        System.out.print("pong");
    }
}

  A、 pingpong

  B、 pongping

  C、 pingpong和pongping都有可能

  D、 都不输出

  E、 pong

  F、 ping

  参考答案:B

 

  访问修饰符

  1. 根据以下代码段,下列说法中正确的是( )。

public class Parent {
    private void m1() {
    }

    void m2() {
    }

    protected void m3() {
    }

    public static void m4() {
    }
}

  A、 子类中一定能够继承和覆盖Parent类的m1方法

  B、 子类中一定能够继承和覆盖Parent类的m2方法

  C、 子类中一定能够继承和覆盖Parent类的m3方法

  D、 子类中一定能够继承和覆盖Parent类的m4方法

  参考答案:C

题目解析:通过继承,子类可以拥有所有父类对其可见的方法和域
A.私有方法只能在本类中可见,故不能继承,A错误
B.缺省访问修饰符只在本包中可见,在外包中不可见,B错误
C.保护修饰符凡是继承自该类的子类都能访问,可以被继承覆盖,C正确
D.static修饰的成员属于类成员,父类字段或方法只能被子类同名字段或方法遮蔽,不能被继承覆盖,D错误

  

 

  ResultSet

  1. ResultSet中记录行的第一列索引为?

  A、 -1

  B、 0

  C、 1

  D、 以上都不是

  参考答案:C

 

  三元操作符

  1. 以下JAVA程序的运行结果是什么( )

public class Object1 {
    public static void main(String[] args) {
        Object o1 = true ? new Integer(1) : new Double(2.0);
        Object o2;
        if (true) {
            o2 = new Integer(1);
        } else {
            o2 = new Double(2.0);
        }
        System.out.print(o1);
        System.out.print(" ");
        System.out.print(o2);
    }
}

  A、 1 1

  B、 1.0   1.0

  C、 1     1.0

  D、 1.0  1

  参考答案:D

知识点:

三元操作符类型的转换规则
    三元运算符会对两个结果的数据类型,进行自动的类型提升。
1.若两个操作数不可转换,则不做转换,返回值为Object类型。
2.若两个操作数是明确类型的表达式(比如变量),则按照正常的二进制数字来转换,int类型转换为long类型,long类型转换为float类型等。
3.若两个操作数中有一个是数字S,另外一个是表达式,且其类型标示为T,那么,若数字S在T的范围内,则转换为T类型;若S超出了T类型的范围,则T转换为S类型。
4.若两个操作数都是直接量数字,则返回值类型为范围较大者 

题目解析:

符合4,所以选D。

 

  SQL的执行顺序

  1. 当WHERE子句、GROUP BY子句、HAVING子句、ORDER BY子句同时出现在一个SQL查询语块中时,最后执行的()

  A、 WHERE子句

  B、 GROUP BY子句

  C、 HAVING子句

  D、 ORDER BY子句

  参考答案:D

题目解析:SQL的执行顺序是 -> FROM--WHERE--JOIN--GROUP BY--HAVING--UNION--SELECT--ORDER BY--LIMIT

 

  SQL语句

  1. 检索销量表中销量最好的商品id和销量(假设每件商品只有一个订单),下列SQL语句正确的是()

  A、 SELECT 商品id,销量 FROM 销量表 WHERE 销量=MAX(销量)

  B、 SELECT 商品id,MAX(销量) FROM 销量表 GROUP BY 销量

  C、 SELECT 商品id,MAX(销量) FROM 销量表 GROUP BY 商品id

  D、 SELECT 商品id,销量 FROM 销量表WHERE 销量=(SELECT MAX(销量) FROM 销量表)

  参考答案:D

 

  case when

  1. Mysql中表student_table(id,name,birth,sex),插入如下记录:

('1003' ,'男生姓名' , '2000-05-20' , '男');

('1004' , '张三' , '2000-08-06' , '男');

('1005' , '李四' , '2001-12-01' , '女');

('1006' , '女生姓名' , '2001-12-02' , '女');

删除符合条件的记录:是男生时删除name='男生姓名'的记录,是女生时删除name='女生姓名'的记录,如下SQL正确的是()?

  A、 delete from table student_table where  name  = ( case when sex = '男' then '男生姓名' when sex = '女' then '女生姓名' end) ;

  B、 delete from student_table where  name  = ( case when sex = '男' then '男生姓名' when sex = '女' then '女生姓名' end) ;

  C、 delete from student_table where  name  = ( case when sex = '男' then '男生姓名' when sex = '女' then '女生姓名') ;

  D、 delete from student_table where  name  = ( case sex = '男' then '男生姓名' case sex = '女' then '女生姓名' end) ;

  参考答案:B

case when[value1] then [result]...else [default] end 如果value1是真,返回result,否则返回default

 

  子查询与表的连接

  1. Mysql中表student_table(id,name,birth,sex),插入如下记录:

('1001' , '' , '2000-01-01' , '男');

('1002' , null , '2000-12-21' , '男');

('1003' , NULL , '2000-05-20' , '男');

('1004' , '张三' , '2000-08-06' , '男');

('1005' , NULL , '2001-12-01' , '女');

('1006' , '张三' , '2001-12-02' , '女');

执行

 select t1.name from 

 (select * from student_table where sex = '女')t1  inner join 

 (select * from student_table where sex = '男')t2  on t1.name = t2.name;

的结果行数是()?

  A、 4

  B、 3

  C、 2

  D、 1

  参考答案:D

题目解析:
将男生的数据查询出,设为一张表t1
将女生的数据查询出,设为一张表t2
再将t1和t2进行内连接,连接条件为姓名相同。(仅保留名称相同的数据)
连接后的数据即是相同的名称,最后对姓名去重。
空字符串结果为0,空值NUll不显示。
知识点:子查询与表的连接
在本题中,查询出的数据作为临时表,放在FROM子句后。并将临时表进行连接。

 

  内连接 VS 外连接

  1. 有一张person表,主键是id,数据如下:

  

  同时还有一张任务表task,主键也是id:

  

  请找出每个人的任务情况(注意:没有任务也要输出),结果按id降序排列,输出如下:

  

  下面正确的SQL查询语句是:(    )

  A、 SELECT p.id, p.name, t.content FROM person AS p LEFT JOIN task AS t ON p.id = t.person_id ORDER BY p.id DESC;

  B、 SELECT p.id, p.name, t.content FROM person AS p JOIN task AS t ON p.id = t.person_id ORDER BY p.id DESC;

  C、 SELECT p.id, p.name, t.content FROM person AS p RIGHT JOIN task AS t ON p.id = t.person_id ORDER BY p.id DESC;

  D、 SELECT p.id, p.name, t.content FROM person AS p INNER JOIN task AS t ON p.id = t.person_id ORDER BY p.id DESC;

  参考答案:A

题目解析:

内连接 VS 外连接  在表中有相同列时,在列名之前加上表名前缀。
内连接:合并具有同一列的两个以上的表的行,结果集中不包含一个表与另一个表不匹配的行
-- 隐式内连接:使用where条件消除无用数据
SELECT 字段名 FROM 表名1,表名2 WHERE 连接条件;
-- 显示内连接
SELECT 字段名 FROM 表名1 [INNER] JOIN 表名2 ON 连接条件; 
外连接:两个表在连接过程中除了返回满足连接条件的行以外还返回左(右)表中不满足条件的行,这种方式称为左(右)外连接,没有匹配的行时,结果表中相应的列为空(NULL)
-- 左外连接:连接条件中左边的表称为主表,右边的表称为从表
SELECT 字段名 FROM 表名1 LEFT [OUTER] JOIN 表名2 ON 连接条件;      
-- 右外连接:连接条件中右边的表称为主表,左边的表称为从表
SELECT 字段名 FROM 表名1 RIGHT [OUTER] JOIN 表名2 ON 连接条件;
如果给表起了别名后,一旦在SELECT或WHERE中使用别名的话,则必须使用表的别名,而不能使用表的原名

 

  父类,子类代码执行顺序

  1. 以下程序执行的结果是:( )

class X {
    Y y = new Y();

    public X() {
        System.out.print("X");
    }
}

class Y {
    public Y() {
        System.out.print("Y");
    }
}

public class Z extends X {
    Y y = new Y();

    public Z() {
        System.out.print("Z");
    }

    public static void main(String[] args) {
        new Z();
    }
}

  A、 ZYXX

  B、 ZYXY

  C、 YXYZ

  D、 XYZX

  参考答案:C

题目解析:
父类静态块/静态变量(按代码的先后顺序执行)→
子类静态块/静态变量(按代码的先后顺序执行)→
父类非静态代码块/非静态变量(按代码的先后顺序执行)→
父类构造方法→
子类非静态代码块/非静态变量(按代码的先后顺序执行)→
子类构造方法

 

二、多选题 

  Object类的方法

  1.  java中下面哪些是Object类的方法()

  A、 notify()

  B、 notifyAll()

  C、 sleep()

  D、 wait()

  参考答案:A,B,D

 

   Class类,Object类, String类

  1. 关于Java以下描述正确的有( )

  A、 Class类是Object类的超类

  B、 Object类是一个final类

  C、 String类是一个final类

  D、 Class类可以装载其它类

  参考答案:C,D

 

  调用构造方法

  1. 下面的对象创建方法中哪些会调用构造方法 ()?

  A、 new语句创建对象

  B、 调用Java.io.ObjectInputStream的readObject方法

  C、 java反射机制使用java.lang.Class或java.lang.reflect.Constructor的newInstance()方法

  D、 调用对象的clone()方法

  参考答案:A,C

题目解析:
构造函数的作用是完成对象的初始化。
当程序执行到new操作符时, 首先去看new操作符后面的类型,因为知道了类型,才能知道要分配多大的内存空间。
分配完内存之后,再调用构造函数,填充对象的各个域,这一步叫做对象的初始化。
而选项B、D中,对象的初始化并不是通过构造函数完成的,而是读取别的内存区域中的对象的各个域来完成。

 

  StackOverflowError ,OutOfMemoryError 

  1. 关于以下方法调用描述正确的是:()

private static final List<String> list = new ArrayList<>();

    public static String test(String j) {

        int i = 1, s = 1, f = 1, a = 1, b = 1, c = 1, d = 1, e = 1;

        list.add(new String("11111111111111111111111111111"));

        return test(s + i + f + a + b + c + d + e + "");

    }

  A、 一定会发生” OutOfMemoryError: Java heap space”

  B、 一定会发生” StackOverflowError”

  C、 一定会发生” OutOfMemoryError: Java heap space与StackOverflowError”

  D、 当发生内存溢出错误时不需要用try…catch来捕获,需检查代码及jvm参数配置的合理性

  参考答案:B,D

题目解析:
(1)StackOverflowError 原因在于 : 无限调用递归函数, 函数是以栈帧的形式存在于虚拟机栈内存中, 一直创建栈帧, 导致栈溢出。
(2)OutOfMemoryError :Java堆用于存储对象实例, 只要不断地创建对象, 并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制来清除这些对象, 那么在对象数量到达最大堆的容量限制后就会产生内存溢出异常. (摘抄自深入理解java虚拟机), 所以一直new String() 并不会造成堆内存溢出。
(3)java异常可以分为checkedException和uncheckedException, 检查异常(不包括runtimeException及其子类的exception的子类)必须使用try catch或者throws处理, 而error属于非检查异常,非检查异常可以使用try catch捕获,但是没必要.

 

  Lanbda表达式

  1. 下面哪些写法能在 java8 中编译执行()

  A、 dir.listFiles((File f)->f.getName().endsWith(“.Java”));

  B、 dir.listFiles((File f)=>f.getName().endsWith(“.Java”));

  C、 dir.listFiles((_.getName().endsWith(“.Java”)));

  D、 dir.listFiles( f->f.getName().endsWith(“.Java”));

  参考答案:A,D

知识点:
Lanbda表达式的主要作用就是代替匿名内部类的繁琐语法, 它由三部分组成:
(1) 形参列表。形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至连形参列表的圆括号也可以省略。
(2) 箭头(→)。必须通过英文中画线和大于符号组成。
(3)代码块。如果代码块只包含一条语句,Lambda表达式允许省略代码块的花括号,那么那条语句就不要用花括号表示语句结束。Lambda代码块只有一条return语句,甚至可以省略return关键字。Lambda表达式需要返回值,而它的代码块中仅有一套省略了return的语句。Lambda表达式会自动返回这条语句的值。

 

  SQL语句

  1. 在MySql中进行数据查询时,如果要对查询结果的列名重新命名,将sno列重新命名为学号,则下列语句正确的是( )

  A、 select sno as 学号 from T

  B、 select 学号= sno from T

  C、 select sno 学号 from T

  D、 select sno=学号 from T

  参考答案:A,C

 

  Java创建对象

  1. Java创建对象的说法正确的有()

  A、 用new语句创建对象,是最常见的创建对象的方法。

  B、 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。

  C、 调用对象的clone()方法。

  D、 运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。

  参考答案:A,B,C,D

 

  面向对象的理解

  1. 下面关于面向对象的一些理解哪些是错误的( )

  A、 面向对象的最重要的特性是支持继承、封装和多态

  B、 系统设计应该遵循开闭原则,系统应该稳定不可修改,但应支持通过继承、组合等方式进行扩展

  C、 函数式的语言必然是面向对象的语言

  D、 面向对象设计时,每个类的职责应该单一,不要再一个类中引入过多的接口

  E、 过程式语言和面向对象的语言各有其优势,过程式语言更加灵活,面向对象语言更加强调抽象和封装

  F、 Java和C++都是静态类型的面向对象编程语言

  参考答案:C

题目解析:C语言不是面向对象,但是函数式。

知识点:在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。

JavaScript面向对象语言,天生就是多态。【var什么类型运行出来才会知道】

 

  局部内部类

  1. 局部内部类可以用哪些修饰符修饰?( )

  A、 public

  B、 private

  C、 abstract

  D、 final

  参考答案:C,D

 

  Statement,PreparedStatement

  1. 下列代码哪些是正确的( )

  A、 Statement sta=con.createStatement();

    ResultSet rst=sta.executeQuery("select * from book");

  B、 Statement sta=con.createStatement("select * from book"); 

    ResultSet rst=sta.executeQuery();

  C、 PreparedStatement pst=con.prepareStatement();

    ResultSet rst=pst.executeQuery("select * from book");

  D、 PreparedStatement pst=con.prepareStatement("select * from book");

    ResultSet rst=pst.executeQuery();

  参考答案:A,D

 

三、填空题

  1. Java语言规定标识符由 ______、______、______和数字组成,并且第一个字符不能是______ 。

参考答案: 1、 字母2、 美元符号3、 下划线4、 数字

 

  1. Java中包含 ___________________________ 等8种基本数据类型。

参考答案: byte,short,int,long,float,double,boolean,char

 

  1. 自定义线程的实现可以通过            和               方式实现。

参考答案: 1、 继承thread  2、 实现runnable接口

 

  1. 集合中,LinkedList采用了双向链表数据结构作为实现,而HashMap通过_________、_________ 、_________ 作为底层数据结构实现。

参考答案: 1、 数组2、 链表3、 红黑树

 

  1. 在Java中,可以通过Fle类中的_____方法判断文件是否存在,通过____方法建立多级文件夹。

参考答案: 1、 exists()2、 mkdirs()

 

  1. 数据库中,事务的四大特性包括 。

参考答案: 1、 原子性、一致性、隔离性、持久性

 

  1. MySQL中,事务的隔离别级别包括_______________________________,MySQL默认采用的是 ___________。

参考答案: 1、 读未提交,读已提交,可重复读,可串行化读2、 可重复读

 

四、简答题 

  1. 请简述JAVA中List、Set、Map集合的特点及其实现类。详细说明各实现类的特点及区别。

参考答案: 正确阐述各接口的特点  2分

能够正确阐述各实现类,ArrayList、LinkedList、HashSet、TreeSet、HashMap各接口特点  0~3分

 

  1. 详细说明String、StringBuffer、StringBuilder的区别

参考答案: 能够分别概述三种类的作用和特点  1分

能够说明String是final修饰,无法被继承  2分

能够强调线程安全性及性能方面问题   2分

 

  1. 阐述你所理解的JVM垃圾回收机制

参考答案: 能够大体说明JVM内存模型  1分

能够说明垃圾回收的作用  1分

能够阐述垃圾回收中的算法实现思想 2分

能够表述jvm使用垃圾回收方式方法  1分

 

  1. 请详细阐述final及static关键字的特点

参考答案: 能够说明final作用  1分

能够说明final的使用场景及特点 1分

能够说明static作用 1分

能够说明static的使用场景及特点2分

 

  1. 请编写伪代码说明JDBC执行的完整流程,同时阐述PreparedStatement与Statement之间的区别。

参考答案: 正确编写整体流程  1分

能够正确使用异常处理  1分

能够释放资源   1分

能够完整正确阐述PreparedStatement与Statement之间的区别  2分

 

posted @ 2022-05-11 14:15  carat9588  阅读(127)  评论(0编辑  收藏  举报