2023年6月20日发(作者:)

程序员考试试题库-真题-附答案解析

一、 选择题

1. (2018年)下列选项中,关于java的抽象类和抽象方法说法不正确的是()?

A. 抽象类和抽象方法都通过abstract关键字来修饰

B. abstract可以用来修饰类和方法,但不能用来修饰构造方法

C. 抽象类中可以没有,有一个或多个抽象方法,但不可以全部方法都是抽象方法

D. 子类必须重写父类所有的抽象方法才能实例化,否则子类还是一个抽象类

2. (2017年)下列关于接口的说法,不正确的是()?

A. 接口中全部方法都是抽象方法,所有方法都必须是public访问权限

B. 接口可以有构造方法

C. 一个接口可以继承多个接口,但接口不能继承类

D. 接口不能实例化

3. (2018年)对于java的多态,以下说法不正确的为()。

A. 多态不仅可以减少代码量,还可以提高代码的可扩展性和可维护性

B. 把子类转换为父类,称为向下转型,自动进行类型转换

C. 多态是指同一个实现接口,使用不同的实例而执行不同的操作

D. 继承是多态的基础,没有继承就没有多态

4. (2018年)关于java中的abstract,以下说法正确的为()。(多选)

A. abstract类中可以没有abstract方法

B. abstract类的子类也可以是abstract类

C. abstract方法可以有方法体

D. abstract类可以创建对象

5. (2018年)关于java中的静态方法,下列说法中不正确的是()(多选)

A. 静态方法中不能直接调用非静态方法

B. 非静态方法中不能直接调用静态方法

C. 静态方法可以用类名直接调用

D. 静态方法里可以使用this

6. (2017年)关于java语言中多态的说法错误的是()。

A. 多态是面向对象三大特征之一

B. 通过多态可以提高代码的可扩展性和可维护性

C. 把子类转换为父类,称为向下转型

D. 使用父类作为方法的形参是使用多态的常用方式

7. (2018年)下列关于Java中集合接口的说法不正确的是()。

A. collection接口存储一组不唯一、无序的对象

B. set接口继承collection接口,存储一组唯一、无序的对象

C. list接口继承collection接口,存储一组不唯一、有序的对象

D. Map接口存储一组成对的键值对象,其中key要求有序,不允许重复,value不要求有序,但允许重复

8. (2017年)在AB类的方法method的声明中,可使用()直接调用方法的正确声明是()。

A. public static void method()

B. public final void method()

C. public abstract void method()

D. public void method()

9. (2018年)在Java中,为使类不能派生出子类,可使用关键字()

A. private

B. abstract

C. interface

D. final

10. (2019年)下面那些是Thread类的方法()?

A. start()

B. run()

C. exit()

D. getPriority()

11. (2020年)下列说法正确的是()

A. Class中的constructor不可省略

B. Constructor必须与class同名,但方法不能与class同名

C. Constructor在一个对象被new时执行

D. 一个class只能定义一个constructor

12. (2020年)下面哪个流类属于面向字符的输入流()

A. BufferedWriter

B. FileInputStream

C. ObjectInputStream

D. InputStreamReader

13. (2019年)Java接口的修饰符可以为()(多选)

A. private

B. protected

C. final

D. abstract

14. (2019年)下面()接口是负责保存和处理查询结果的。

A. Connection

B. Statement

C. ResultSet

D. PreparedStatement

二、 简答题

15. (2019年)String和StringBuffer有什么区别?

16. (2019年)接口和抽象类的区别是什么?

17. (2020年)什么是cookie?session和cookie有什么区别?

18. (2017年)类exampleA继承Exception,类ExampleB继承ExampleA。有如下代码片断:

请问执行此段代码的输出是什么?

19.(2020年)Collection和Collections的区别?

20.(2020年)线程的sleep()方法和yield()方法有什么区别?

程序员考试试题库-真题答案

1. B

2. C

3. C

4. AB

5. AC

6. D

7. A

8. A

9. D

10. ABD

解析:查看Java API docs:/javase/7/docs/api/,exit()是System类的方法,如(0)。

11. C

解析:这里可能会有误区,其实普通的类方法是可以和类名同名的,和构造方法唯一的区分就是,构造方法没有返回值。

12. D

解析:Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式。

面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是InputStream和OutputStream的子类。

面向字符的操作为以字符为单位对数据进行操作,在读的时候将二进制数据转为字符,在写的时候将字符转为二进制数据,这些类都是Reader和Writer的子类。

总结:以InputStream(输入)/OutputStream(输出)为后缀的是字节流;

以Reader(输入)/Writer(输出)为后缀的是字符流。

扩展:Java流类图结构,一目了然,解决大部分选择题:

13. CD

解析: 接口的方法默认是public abstract;

接口中不可以定义变量即只能定义常量(加上final修饰就会变成常量)。所以接口的属性默认是public static final 常量,且必须赋初值。

注意:final和abstract不能同时出现。

14. C

15. 简单地说,就是一个变量和常量的关系,StringBuffer对象的内容可以修改,而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象。

StringBuffer的内部实现方式和String不同,StringBuffer在进行字符处理是,不生成新的对象,在内存使用上要优于String类。所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。

16. Java提供和支持创建抽象类和接口,他们的实现有共同点,不同点在于:

接口中所有的方法隐含的都是抽象的,而抽象类则可以同时包含抽象和非抽象的方法。

类可以实现很多个接口,但是只能继承一个抽象类

类可以不实现抽象类和接口声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。

抽象类可以在不提供接口方法实现的情况下实现接口。

Java接口中声明的变量默认都是final的,抽象类可以包含费final的变量。

Java接口中的成员函数默认是public的,抽象类的成员函数可以使private,protected或者是public。

接口是绝对抽象的,不可以被实例化,抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。

17. cookie是浏览器(user agent)访问一些网站后,这些网站存放在客户端的一组数据,用于使网站等跟踪用户,实现用户自定义功能。通俗的说就是当一个用户通过HTTP协议访问一个服务器的时候,这个服务器会将一些key-value键值对返回给客户端浏览器, 并给这些数据加入一些限制条件,在条件符合是这个用户下次访问这个服务器的时候,数据又被完整地带回给服务器。

Cookie和session的区别:

1. 存取方式的不同。cookie中只能保管ASCII字符串,加入需求存取unicode字符或者二进制数据,需求先进行编码,cookie中也不能直接存取java对象,若要存储略微复杂的信息,运用cookie是比较艰难的;而session中能够存取任何类型的数据,包括但不限于String、Integer、List、Map等,Session中也能够保管Java Bean乃至任何Java类,对象等,运用起来十分方便,能够把Session看做是一个Java容器类。

2. 隐私策略的不同。Cookie存储在客户端阅读器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修正Cookie中的内容。而Session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。

假如选用Cookie,比较好的方法是,敏感的信息如账号密码等尽量不要写到Cookie中。最好是像Google、Baidu那样将Cookie信息加密,提交到服务器后再进行解密,保证Cookie中的信息只要本人能读得懂。而假如选择Session就省事多了,反正是放在服务器上,Session里任何隐私都能够有效的保护。

3. 有效期上的不同。使用过Google的人都晓得,假如登录过Google,则Google的登录信息长期有效。用户不用每次访问都重新登录,Google会持久地记载该用户的登录信息。要到达这种效果,运用Cookie会是比较好的选择。只需要设置Cookie的过期时间属性为一个很大很大的数字。

由于Session依赖于名为JSESSIONID的Cookie,而Cookie JSESSIONID的过期时间默许为–1,只需关闭了阅读器该Session就会失效,因而Session不能完成信息永世有效的效果。运用URL地址重写也不能完成。而且假如设置Session的超时时间过长,服务器累计的Session就会越多,越容易招致内存溢出。

18. 输出:ExampleA。(根据里氏代换原则【能使用父类型的地方一定能使用子类型】,抓取ExampleA类型异常的catch块能够抓住try块抛出的ExampleB类型的异常)

19. Collection是一个接口,它是Set、List等容器的父接口;Collections是一个工具类,提供了一系列的静态方法来辅助容器操作,这些方法包括对容器的搜索、排序、线程安全化等等。

20. ()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会,yield()方法只会给相同或更高优先级的线程以运行的机会;

2.线程执行sleep()方法后转入阻塞(blocked)状态,而执行yield()方法后转入就绪(ready)状态;

()方法声明抛出InterruptedException,而yield()方法没有声明任何异常;

()方法比yield()方法具有更好的可移植性。

2023年6月20日发(作者:)

程序员考试试题库-真题-附答案解析

一、 选择题

1. (2018年)下列选项中,关于java的抽象类和抽象方法说法不正确的是()?

A. 抽象类和抽象方法都通过abstract关键字来修饰

B. abstract可以用来修饰类和方法,但不能用来修饰构造方法

C. 抽象类中可以没有,有一个或多个抽象方法,但不可以全部方法都是抽象方法

D. 子类必须重写父类所有的抽象方法才能实例化,否则子类还是一个抽象类

2. (2017年)下列关于接口的说法,不正确的是()?

A. 接口中全部方法都是抽象方法,所有方法都必须是public访问权限

B. 接口可以有构造方法

C. 一个接口可以继承多个接口,但接口不能继承类

D. 接口不能实例化

3. (2018年)对于java的多态,以下说法不正确的为()。

A. 多态不仅可以减少代码量,还可以提高代码的可扩展性和可维护性

B. 把子类转换为父类,称为向下转型,自动进行类型转换

C. 多态是指同一个实现接口,使用不同的实例而执行不同的操作

D. 继承是多态的基础,没有继承就没有多态

4. (2018年)关于java中的abstract,以下说法正确的为()。(多选)

A. abstract类中可以没有abstract方法

B. abstract类的子类也可以是abstract类

C. abstract方法可以有方法体

D. abstract类可以创建对象

5. (2018年)关于java中的静态方法,下列说法中不正确的是()(多选)

A. 静态方法中不能直接调用非静态方法

B. 非静态方法中不能直接调用静态方法

C. 静态方法可以用类名直接调用

D. 静态方法里可以使用this

6. (2017年)关于java语言中多态的说法错误的是()。

A. 多态是面向对象三大特征之一

B. 通过多态可以提高代码的可扩展性和可维护性

C. 把子类转换为父类,称为向下转型

D. 使用父类作为方法的形参是使用多态的常用方式

7. (2018年)下列关于Java中集合接口的说法不正确的是()。

A. collection接口存储一组不唯一、无序的对象

B. set接口继承collection接口,存储一组唯一、无序的对象

C. list接口继承collection接口,存储一组不唯一、有序的对象

D. Map接口存储一组成对的键值对象,其中key要求有序,不允许重复,value不要求有序,但允许重复

8. (2017年)在AB类的方法method的声明中,可使用()直接调用方法的正确声明是()。

A. public static void method()

B. public final void method()

C. public abstract void method()

D. public void method()

9. (2018年)在Java中,为使类不能派生出子类,可使用关键字()

A. private

B. abstract

C. interface

D. final

10. (2019年)下面那些是Thread类的方法()?

A. start()

B. run()

C. exit()

D. getPriority()

11. (2020年)下列说法正确的是()

A. Class中的constructor不可省略

B. Constructor必须与class同名,但方法不能与class同名

C. Constructor在一个对象被new时执行

D. 一个class只能定义一个constructor

12. (2020年)下面哪个流类属于面向字符的输入流()

A. BufferedWriter

B. FileInputStream

C. ObjectInputStream

D. InputStreamReader

13. (2019年)Java接口的修饰符可以为()(多选)

A. private

B. protected

C. final

D. abstract

14. (2019年)下面()接口是负责保存和处理查询结果的。

A. Connection

B. Statement

C. ResultSet

D. PreparedStatement

二、 简答题

15. (2019年)String和StringBuffer有什么区别?

16. (2019年)接口和抽象类的区别是什么?

17. (2020年)什么是cookie?session和cookie有什么区别?

18. (2017年)类exampleA继承Exception,类ExampleB继承ExampleA。有如下代码片断:

请问执行此段代码的输出是什么?

19.(2020年)Collection和Collections的区别?

20.(2020年)线程的sleep()方法和yield()方法有什么区别?

程序员考试试题库-真题答案

1. B

2. C

3. C

4. AB

5. AC

6. D

7. A

8. A

9. D

10. ABD

解析:查看Java API docs:/javase/7/docs/api/,exit()是System类的方法,如(0)。

11. C

解析:这里可能会有误区,其实普通的类方法是可以和类名同名的,和构造方法唯一的区分就是,构造方法没有返回值。

12. D

解析:Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式。

面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是InputStream和OutputStream的子类。

面向字符的操作为以字符为单位对数据进行操作,在读的时候将二进制数据转为字符,在写的时候将字符转为二进制数据,这些类都是Reader和Writer的子类。

总结:以InputStream(输入)/OutputStream(输出)为后缀的是字节流;

以Reader(输入)/Writer(输出)为后缀的是字符流。

扩展:Java流类图结构,一目了然,解决大部分选择题:

13. CD

解析: 接口的方法默认是public abstract;

接口中不可以定义变量即只能定义常量(加上final修饰就会变成常量)。所以接口的属性默认是public static final 常量,且必须赋初值。

注意:final和abstract不能同时出现。

14. C

15. 简单地说,就是一个变量和常量的关系,StringBuffer对象的内容可以修改,而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象。

StringBuffer的内部实现方式和String不同,StringBuffer在进行字符处理是,不生成新的对象,在内存使用上要优于String类。所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。

16. Java提供和支持创建抽象类和接口,他们的实现有共同点,不同点在于:

接口中所有的方法隐含的都是抽象的,而抽象类则可以同时包含抽象和非抽象的方法。

类可以实现很多个接口,但是只能继承一个抽象类

类可以不实现抽象类和接口声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。

抽象类可以在不提供接口方法实现的情况下实现接口。

Java接口中声明的变量默认都是final的,抽象类可以包含费final的变量。

Java接口中的成员函数默认是public的,抽象类的成员函数可以使private,protected或者是public。

接口是绝对抽象的,不可以被实例化,抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。

17. cookie是浏览器(user agent)访问一些网站后,这些网站存放在客户端的一组数据,用于使网站等跟踪用户,实现用户自定义功能。通俗的说就是当一个用户通过HTTP协议访问一个服务器的时候,这个服务器会将一些key-value键值对返回给客户端浏览器, 并给这些数据加入一些限制条件,在条件符合是这个用户下次访问这个服务器的时候,数据又被完整地带回给服务器。

Cookie和session的区别:

1. 存取方式的不同。cookie中只能保管ASCII字符串,加入需求存取unicode字符或者二进制数据,需求先进行编码,cookie中也不能直接存取java对象,若要存储略微复杂的信息,运用cookie是比较艰难的;而session中能够存取任何类型的数据,包括但不限于String、Integer、List、Map等,Session中也能够保管Java Bean乃至任何Java类,对象等,运用起来十分方便,能够把Session看做是一个Java容器类。

2. 隐私策略的不同。Cookie存储在客户端阅读器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修正Cookie中的内容。而Session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。

假如选用Cookie,比较好的方法是,敏感的信息如账号密码等尽量不要写到Cookie中。最好是像Google、Baidu那样将Cookie信息加密,提交到服务器后再进行解密,保证Cookie中的信息只要本人能读得懂。而假如选择Session就省事多了,反正是放在服务器上,Session里任何隐私都能够有效的保护。

3. 有效期上的不同。使用过Google的人都晓得,假如登录过Google,则Google的登录信息长期有效。用户不用每次访问都重新登录,Google会持久地记载该用户的登录信息。要到达这种效果,运用Cookie会是比较好的选择。只需要设置Cookie的过期时间属性为一个很大很大的数字。

由于Session依赖于名为JSESSIONID的Cookie,而Cookie JSESSIONID的过期时间默许为–1,只需关闭了阅读器该Session就会失效,因而Session不能完成信息永世有效的效果。运用URL地址重写也不能完成。而且假如设置Session的超时时间过长,服务器累计的Session就会越多,越容易招致内存溢出。

18. 输出:ExampleA。(根据里氏代换原则【能使用父类型的地方一定能使用子类型】,抓取ExampleA类型异常的catch块能够抓住try块抛出的ExampleB类型的异常)

19. Collection是一个接口,它是Set、List等容器的父接口;Collections是一个工具类,提供了一系列的静态方法来辅助容器操作,这些方法包括对容器的搜索、排序、线程安全化等等。

20. ()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会,yield()方法只会给相同或更高优先级的线程以运行的机会;

2.线程执行sleep()方法后转入阻塞(blocked)状态,而执行yield()方法后转入就绪(ready)状态;

()方法声明抛出InterruptedException,而yield()方法没有声明任何异常;

()方法比yield()方法具有更好的可移植性。