2020-3-3 牛客试题复盘
1、有关线程的叙述正确的是(C)
A、可以获得对任何对象的互斥锁定。
B、通过继承Thread类或实现Runnable接口,可以获得对类中方法的互斥锁定。
C、线程通过使用synchronized关键字可获得对象的互斥锁定。
D、线程的创建只能通过继承Thread类来实现。
2、在 Java 中,属于整数类型变量的是(C)
A、single
B、double
C、byte
D、char
3、下列叙述中,错误的是( B)
A、File类能够存储文件属性
B、File类能够读写文件
C、File类能够建立文件
D、File类能够获取文件目录信息
解析:
IO流才能读写文件。
4、在java中,下列对继承的说法,正确的是( A)
A、子类能继承父类的所有成员
B、子类继承父类的非私有方法和状态
C、子类只能继承父类的public方法和状态
D、子类只能继承父类的方法
5、下面哪些情况下需要使用抽象类? ABD
A、当一个类的一个或多个方法是抽象方法时
B、当类是一个抽象类的子类,并且不能为任何抽象方法提供任何实现细节或方法体时
C、当一个类实现多个接口时
D、当一个类实现一个接口,并且不能为任何抽象方法提供实现细节或方法体时
解析:
A项 一个类中有抽象方法则必须申明为抽象类
B项 抽象类中的抽象方法必须由其子类实现,若子类不能实现则子类也必须定义为抽象类
D项 一个类实现一个接口就必须实现其中所有的抽象方法,若该实现类不能实现接口中的所有方法则实现类定义为抽象类
6、在使用super和this关键字时,以下描述错误的是(BCD)
A、在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
B、super()和this()不一定要放在构造方法内第一行
C、this()和super()可以同时出现在一个构造函数中
D、this()和super()可以在static环境中使用,包括static方法和static语句块
7、下列有关JAVA异常处理的叙述中正确的是(ABD)
A、finally是为确保一段代码不管是否捕获异常都会被执行的一段代码
B、throws是用来声明一个成员方法可能抛出的各种非运行异常情况
C、final用于可以声明属性和方法,分别表示属性的不可变及方法的不可继承
D、throw是用来明确地抛出一个异常情况
解析:
A:明显正确,不懂的可以去看看网上博客
B:throws是用来声明一个成员方法可能抛出的各种异常情况,错误!因为很多运行时异常,不会显示的抛出(当然你愿意的话,也可以,只不过你的代码会乱成翔)
C:final用于可以声明属性和方法,分别表示属性的不可变及方法的不可覆盖。不是方法的不可继承
D:throw是用来明确地抛出一个异常情况。错误,throw不仅仅可以抛出异常,还可以抛出Error以及Throwable.
8、下面有关servlet service描述错误的是? B
A、不管是post还是get方法提交过来的连接,都会在service中处理
B、doGet/doPost 则是在 javax.servlet.GenericServlet 中实现的
C、service()是在javax.servlet.Servlet接口中定义的
D、service判断请求类型,决定是调用doGet还是doPost方法
解析:
doGet/doPost 则是在 javax.servlet.http.HttpServlet 中实现的。
9、JAVA反射机制主要提供了以下哪些功能? ABCD
A、在运行时判断一个对象所属的类
B、在运行时构造一个类的对象
C、在运行时判断一个类所具有的成员变量和方法
D、在运行时调用一个对象的方法
10、Java创建对象的说法正确的有(ABCD)
A、用new语句创建对象,是最常见的创建对象的方法。
B、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
C、调用对象的clone()方法。
D、运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。
11、下面哪几个语句正确的声明一个整型的二维数组(CD)
A、int a[][]=new int[][]
B、int b[10][10]=new int[][]
C、int c[][]=new int[10][10]
D、int []d[]=new int[10][10]
12、下列哪些操作会使线程释放锁资源? BC
A、sleep()
B、wait()
C、join()
D、yield()
13、在Java语言中,下列关于字符集编码(Character set encoding)和国际化(i18n)的问题,哪些是正确的?CD
A、每个中文字符占用2个字节,每个英文字符占用1个字节
B、假设数据库中的字符是以GBK编码的,那么显示数据库数据的网页也必须是GBK编码的。
C、Java的char类型,通常以UTF-16 Big Endian的方式保存一个字符。
D、实现国际化应用常用的手段是利用ResourceBundle类
解析:
A 显然是错误的,Java一律采用Unicode编码方式,每个字符无论中文还是英文字符都占用2个字节。
B 也是不正确的,不同的编码之间是可以转换的,通常流程如下:
将字符串S以其自身编码方式分解为字节数组,再将字节数组以你想要输出的编码方式重新编码为字符串。
例:String newUTF8Str = new String(oldGBKStr.getBytes("GBK"), "UTF8");
C 是正确的。Java虚拟机中通常使用UTF-16的方式保存一个字符
D 也是正确的。ResourceBundle能够依据Local的不同,选择性的读取与Local对应后缀的properties文件,以达到国际化的目的。
14、
public
class
CharToString {
public
static
void
main(String[] args)
{
char
myChar =
'g'
;
String myStr = Character.toString(myChar);
System.out.println(
"String is: "
+myStr);
myStr = String.valueOf(myChar);
System.out.println(
"String is: "
+myStr);
}
}
此代码片段输出正确的值是(A)
A、String is: g
String is: g
B、String is: 103
String is: g
C、String is: g
String is: 103
D、String is: 103
String is: 103
15、一般有两种用于创建线程的方法,一是(),二是()。 BD
A、从Java.lang.Thread类派生一个新的线程类,重写它的runnable()方法
B、从Java.lang.Thread类派生一个新的线程类,重写它的run()方法
C、实现Thread接口,重写Thread接口中的run()方法
D、实现Runnable接口,重写Runnable接口中的run()方法
解析:
创建线程对象两种方式:
1.继承Thread类,重载run方法;
2.实现Runnable接口,实现run方法
16、下面哪些类实现或者继承了Collection接口?BC
A、HashMap
B、ArrayList
C、Vector
D、Iterator
解析:
17、下面关于变量及其范围的陈述哪些是不正确的(BC)
A、实例变量是类的成员变量
B、实例变量用关键字static声明
C、在方法中定义的局部变量在该方法被执行时创建
D、局部变量在使用前必须被初始化
解析:
C选项应该是在线程为该方法创建栈桢时被创建,而不是方法执行时创建。
18、下列说法错误的有(ACD )
A、在类方法中可用this来调用本类的类方法
B、在类方法中调用本类的类方法时可直接调用
C、在类方法中只能调用本类中的类方法
D、在类方法中绝对不能调用实例方法
解析:
A:类方法是指类中被static修饰的方法,无this指针。
C:类方法是可以调用其他类的static方法的。
D:可以在类方法中生成实例对象再调用实例方法。(这个我也打错了,想想应该是这个意思)