Java基础笔试练习(十四)

1. Java 语言中,负责并发管理的机制是( )

A.垃圾回收
B.虚拟机
C.代码安全
D.多线程

答案:
D

解析:
选项A,Java语言中,垃圾回收机制对系统中不使用的内存进行回收,从而使程序员从繁忙的内存管理中解放出来。
选项B,Java编写好的程序首先由编译器转换为标准字节代码,然后由虚拟机执行。虚拟机把字节代码程序与各操作系统和硬件分开,使Java程序独立于平台。
选项C,Java的代码安全检测体现在多个层次上,在编译层、解释层、平台层分别作不同的安全检查。
选项D,多线程是Java程序的并发机制,它能同步共享数、处理不同的事件。

2.下列不属于访问控制符的是()

A.public
B.private
C.protected
D.static

答案:
D

解析:
public 公有 private私有 protected受保护
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块。

3.以下的变量定义语句中,合法的是()

A.byte=128
B.boolean=null
C.long a=123L
D.double=0.9239d

答案:
C

解析:

4.以下哪个不是Collection的子接口?

A.List
B.Set
C.SortedSet
D.Map

答案:
D

解析:
集合框架图

5.在使用super和this关键字时,以下描述正确的是()

A.在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
B.super()和this()不一定要放在构造方法内第一行
C.this()和super()可以同时出现在一个构造函数中
D.this()和super()可以在static环境中使用,包括static方法和static语句块

答案:
A

解析:
使用super()或者this()方法是必须放在构造函数的第一行
由于this函数指向的构造函数默认有super()方法,所以规定this()和super()不能同时出现在一个构造函数中。
因为staic方法或者语句块没有实例时可以使用,而此时不需要构造实例,所以不能用this()和super()

6. 不考虑反射,String类型变量所指向内存空间中的内容是不能被改变的( )

A.正确
B.错误

答案:
A

解析:

7. 如果一个接口Glass有个方法setColor(),有个类BlueGlass实现接口Glass,则在类BlueGlass中正确的是? ( )

A.protected void setColor() { …}
B.void setColor() { …}
C.public void setColor() { …}
D.以上语句都可以用在类BlueGlass中

答案:
C

解析:
JAVA 子类重写继承的方法时,不可以降低方法的访问权限,子类继承父类的访问修饰符要比父类的更大,也就是更加开放,假如我父类是protected修饰的,其子类只能是protected或者public,绝对不能是friendly(默认的访问范围)或者private,当然使用private就不是继承了。还要注意的是,继承当中子类抛出的异常必须是父类抛出的异常的子异常,或者子类抛出的异常要比父类抛出的异常要少。

8.下列命令中,用来运行 Java 程序的是()

A.java
B.javadoc
C.jar
D.javac

答案:
A

解析:
A.java用来运行一个.class文件
B.javadoc用来生成api文档
C.jar用来生成jar包
D.javac用来把.java文件编译为.class文件

9. java 语言使用的字符码集是

A.ASCII
B.BCD
C.DCB
D.Unicode

答案:
D

解析:
Java语言使用的是Unicode字符集。而ASCII是国际上使用最广泛的字符编码;BCD是一种数字压缩存储编码方法。

10. 如果要建立一个java.scut.computer的包,叙述正确的是?( )

A.只需在代码中加入“package java.scut.computer;”一个语句,并且必须放在代码的第一行
B.只需在代码中加入“package java.scut;”一个语句
C.必须在代码中加入“package java.scut;”和“package java.scut.computer;”两个语句
D.在代码中,不一定是第一句,只要是类定义前,加入package语句即可

答案:
A

解析:
实际上在Java语言规范中,不允许package name以“java”开头,不然会报一个java.lang.SecurityException 的错误。因为假如我们允许包名以java开头,那么我们完全可以编写和jdk标准包下一模一样的类,如Java.lang.Integer。因此在虚拟机进行类或接口解析时可能会发生冲突。一句话总结就是:假如允许包名以java开头,可能会导致命名空间污染的问题。

11. 如下代码的 结果是什么 ?

class Base {
    Base() {
    System.out.print("Base");
    }
}
public class Alpha extends Base {
    public static void main( String[] args ) {
        new Alpha();
        //调用父类无参的构造方法
        new Base();
    }
}

A.Base
B.BaseBase
C.编译失败
D.代码运行但没有输出
E.运行时抛出异常

答案:
B

解析:

12.假设有以下代码,下列选项中返回false的语句是:()?

String s=”hello”;
String t=”hello”;
char c[] ={‘h’,’e’,’l’,’l’,’o’};

A.s.equals(t);
B.t.equals©;
C.s==t;
D.t.equals(new String(“hello”));

答案:
B

解析:

String s=”hello”;//首先会在字符串缓冲区找找有没有hello,结果没有找到,就创建了一个hello,然后引用是s
String t=”hello”;//会在字符串缓冲区找hello,结果找到了,就返回了引用,也就是s;所以这句话等同于t=s;所以两个引用一样;所以t==s是true
Char c[] ={‘h’,’e’,’l’,’l’,o’’};//这就是一个数组,而且数组在堆上
equlse函数可以看源码!比较值相等之前会先比较类型是不是一样;如果类型一样才会比较值;如果类型不一致就直接return false;
所以综上所述:ACD返回true Bfalse

13.下列哪个说法是正确的()

A.ConcurrentHashMap使用synchronized关键字保证线程安全
B.HashMap实现了Collection接口
C.Array.asList方法返回java.util.ArrayList对象
D.SimpleDateFormat是线程不安全的

答案:
D

解析:

A、ConcurrentHashMap实际上时 HashTable的升级版,使用segment来分段和管理锁,并不是synchronized;
B、HashMap实现的接口有:Serializable, Cloneable, Map<K,V> ,没有实现Collection
C、Arrays.asList()方法返回的列表是Arrays.ArrayList类型的,并不是java.util.ArrayList;
D、正确

14. 假定Base b = new Derived(); 调用执行b.methodOne()后,输出结果是什么?

public class Base{
		public void methodOne(){
			System.out.print("A");
			methodTwo();
		}
	
		public void methodTwo(){
			System.out.print("B");
		}
	}

	public class Derived extends Base{
		public void methodOne(){
			super.methodOne();
			System.out.print("C");
		}
	
		public void methodTwo(){
			System.out.print("D");
			super.methodTwo();
		}
	} 

A.ABDC
B.AB
C.ABCD
D.ABC

答案:
A

解析:

程序开始执行,Base b = new Derived();new了一个子类
调用执行b.methodOne()后,
第一步:因为子类重写了methodOne()方法,故调用的方法是子类的methodOne()方法
第二步:进入methodOne()方法后,执行super.methodOne();调用父类methodOne()方法 输出:A
第三步:继续执行父类methodOne()方法中的methodTwo()方法
第四步:因为子类重写了methodOne()方法,故调用的方法是子类的methodTwo()方法
第五步:调用子类methodTwo()方法,执行super.methodTwo();回到父类methodTwo()方法中 输出B
第六步:输出B后,执行子类methodTwo()中的System.out.print(“D”); 输出D
第七步:回到子类methodOne(),继续往下执行,System.out.print(“C”); 输出C
所以结果为:ABDC

15.对于子类的构造函数说明,下列叙述中错误的是( )。

A.子类不能继承父类的无参构造函数。
B.子类可以在自己的构造函数中使用super关键字来调用父类的含参数构造函数,但这个调用语句必须是子类构造函数的第一个可执行语句。
C.在创建子类的对象时,若不含带参构造函数,将先执行父类的无参构造函数,然后再执行自己的无参构造函数。
D.子类不但可以继承父类的无参构造函数,也可以继承父类的有参构造函数。

答案:
D

解析:
构造函数不能被继承,构造方法只能被显式或隐式的调用。 如果说有参构造可以被继承,那么在子类中有参构造就可以被重写;那么就无法通过父类的有参构造创建对象了;所以有参构造不能被继承。

16.下面有关JSP内置对象的描述,说法错误的是?

A.session对象:session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止
B.request对象:客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应
C.application对象:多个application对象实现了用户间数据的共享,可存放全局变量
D.response对象:response对象包含了响应客户请求的有关信息

答案:
C

解析:
application对象是共享的,多个用户共享一个,以此实现数据共享和通信
JSP内置对象和属性列举如下:
1.request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。
2.response对象
response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。
3.session对象
session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例.
4.out对象
out对象是JspWriter类的实例,是向客户端输出内容常用的对象
5.page对象
page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例
6.application对象
application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。
7.exception对象
exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象
8.pageContext对象
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本 类名也叫pageContext。
9.config对象
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)

17.表达式(short)10/10.2*2运算后结果是什么类型?

A.short
B.int
C.double
D.float

答案:
C

解析:
强制类型转换的优先级高于+ - * /
java 黙认浮点类型为double
float数据类型有一个后缀为" f “或” F “。
long类型有一个后缀,为” l " 或者" L "。

18.下列代码执行结果为()

public static void main(String args[])throws InterruptedException{
	Thread t=new Thread(new Runnable() {
		public void run() {
			try {
				Thread.sleep(2000);
			} catch (InterruptedException e) {
				throw new RuntimeException(e);
			}
			System.out.print("2");
		}
	});
	t.start();
	 
	t.join();
	System.out.print("1");
}

A.21
B.12
C.可能为12,也可能为21
D.以上答案都不对

答案:
A

解析:
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。
t.join(); //使调用线程 t 在此之前执行完毕。
t.join(1000); //等待 t 线程,等待时间是1000毫秒

19.以下哪个I / O类可以附加或更新文件

A.RandomAccessFile()
B.OutputStream()
C.DataOutputStream()
D.None of the above

答案:
A

解析:
RandomAccessFile直接继承于Java. Lang. Object类,实现了DataInput和DataOutput接口,它既可以作为一个输入流,又可以作为一个输出流

20.Java语言中,下面哪个语句是创建数组的正确语句?()

A.float f[][] = new float[6][6];
B.float []f[] = new float[6][6];
C.float f[][] = new float[][6];
D.float [][]f = new float[6][6];
E.float [][]f = new float[6][];

答案:
A B D E

解析:

推荐

笔试内容集合 持续更新中…

ProcessOn是一个在线作图工具的聚合平台

文末

欢迎关注个人微信公众号:Coder编程
欢迎关注Coder编程公众号,主要分享数据结构与算法、Java相关知识体系、框架知识及原理、Spring全家桶、微服务项目实战、DevOps实践之路、每日一篇互联网大厂面试或笔试题以及PMP项目管理知识等。更多精彩内容正在路上~
新建了一个qq群:315211365,欢迎大家进群交流一起学习。谢谢了!也可以介绍给身边有需要的朋友。

文章收录至
Github: https://github.com/CoderMerlin/coder-programming
Gitee: https://gitee.com/573059382/coder-programming
欢迎关注并star~
微信公众号

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐