Java基础笔试练习(三)

2,643 阅读10分钟

在这里插入图片描述

1.下列InputStream类中哪个方法可以用于关闭流?

A.skip() B.close() C.mark() D.reset()

答案: B

解析: inputstream的close方法用来关闭流 skip()用来跳过一些字节 mark()用来标记流 reset()复位流

2.下面语句正确的是()

A.x+1=5 B.i++=1 C.a++b=1 D.x+=1

答案: D

解析: 选D,+=,-=,*=,/=最常见。 ABC都编译错误。

3.下面关于继承的描述正确的是?

A.在Java中只允许单一继承 B.在Java中一个类只能实现一个接口 C.在Java中一个类不能同时继承一个类和实现一个接口 D.Java的单一继承使代码不可靠

答案: A

解析:

4.下列哪种说法是正确的?

A.实例方法可直接调用超类的实例方法 B.实例方法可直接调用超类的类方法 C.实例方法可直接调用本类的类方法 D.实例方法可直接调用其他类的实例方法

答案: C

解析: a.实例方法可以调用超类公有实例方法 b.实例方法可以直接调用超类的公有类方法 d.实例方法可以通过类名调用其他类的类方法

5.A派生出子类B,B派生出子类C,并且在java源代码中有如下声明:

1.A a0=new A();
2.A a1=new B();
3.A a2=new C();

以下哪个说法是正确的?

A.第1行,第2行和第3行的声明都是正确的 B.第1,2,3行都能通过编译,但第2,3行运行时出错 C.第1,2行能通过编译,但第3行编译出错 D.只有第1行能通过编译

答案: A

解析: 一句话 向上转型是无条件的

6.java中,静态变量static在不同线程的不同实例中地址是否一样?他们储存在什么区域?()

A.地址一样,在堆栈区。 B.地址不一样,在堆栈区。 C.地址一样,在全局区。 D.地址不一样,在全局区。

答案: C

解析: static变量存储在方法区,线程共享,全局区是方法区的一部分,其实用排除法也可以知道 static变量不可能位于堆栈区

7.下面代码的输出结果是什么?

public class ZeroTest {
    public static void main(String[] args) {
     try{
       int i = 100 / 0;
       System.out.print(i);
  }catch(Exception e){
       System.out.print(1);
       throw new RuntimeException();
  }finally{
       System.out.print(2);
  }
      System.out.print(3);
  }
}

A.3 B.123 C.1 D.12

答案: D

解析: 1、inti = 100/ 0; 会出现异常,会抛出异常,System.out.print(i)不会执行, 2、catch捕捉异常,继续执行System.out.print(1); 3、当执行 thrownewRuntimeException(); 又会抛出异常,这时,除了会执行finally中的代码,其他地方的代码都不会执行

8.以下代码将打印出?

public static void main(String args[]) {
      List  Listlist1 = new ArrayList();
      Listlist1.add(0);
      List Listlist2 = Listlist1;
	  System.out.println(Listlist1.get(0) instanceof Integer);
	  System.out.println(Listlist2.get(0) instanceof Integer);
}

A.编译错误 B.true true C.true false D.false false

答案: B

解析: collection类型的集合(ArrayList,LinkedList)只能装入对象类型的数据,该题中装入了0,是一个基本类型,但是JDK5以后提供了自动装箱与自动拆箱,所以int类型自动装箱变为了Integer类型。编译能够正常通过。 将list1的引用赋值给了list2,那么list1和list2都将指向同一个堆内存空间。instanceof是Java中关键字,用于判断一个对象是否属于某个特定类的实例,并且返回boolean类型的返回值。显然,list1.get(0)和list2.get(0)都属于Integer的实例

9. 在运行时,由java解释器自动引入,而不用import语句引入的包是()。

A.java.lang B.java.system C.java.io D.java.util

答案: A

解析: ava.lang包是java语言包,是自动导入的。 java.util包是java的工具包,需要手动导入。 java.sql包,JDBC接口类,需要手动导入。 java.io;各种输入输入流,需要手动导入。

10.下面这三条语句

System.out.println(“is ”+ 100 + 5);
System.out.println(100 + 5 +“ is”);
System.out.println(“is ”+ (100 + 5));

的输出结果分别是? ( )

A.is 1005, 1005 is, is 1005 B.is 105, 105 is, is 105 C.is 1005, 1005 is, is 105 D.is 1005, 105 is, is 105

答案: D

解析: 1."is"说明后面的内容都会被强制转换为string,所以是最后结果是拼接起来的 2.100+5先得到105,然后与is拼接 3.先算括号内的

11.Given:

public class IfTest{
    public static void main(string[]args){
        int x=3;
        int y=1;
        if(x=y)
            System.out.println(“Not equal”);
        else
            System.out.println(“Equal”);
     }
}

What is the result?

A.The output is “Equal” B.The output in “Not Equal” C.An error at line 5 causes compilation to fall. D.The program executes but does not print a message.

答案: C

解析: 这个题考查两个知识点。 1、Java中,赋值是有返回值的 ,赋什么值,就返回什么值。比如这题,x=y,返回y的值,所以括号里的值是1。 2、Java跟C的区别,C中赋值后会与0进行比较,如果大于0,就认为是true;而Java不会与0比较,而是直接把赋值后的结果放入括号。

12.在一个基于分布式的游戏服务器系统中,不同的服务器之间,哪种通信方式是不可行的()?

A.管道 B.消息队列 C.高速缓存数据库 D.套接字

答案: A

解析: 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

13.下列程序的运行结果

public void getCustomerInfo() {
	try {
		// do something that may cause an Exception
	} catch (java.io.FileNotFoundException ex) {
		System.out.print("FileNotFoundException!");
	} catch (java.io.IOException ex) {
		System.out.print("IOException!");
	} catch (java.lang.Exception ex) {
		System.out.print("Exception!");
	}
}

A.IOException! B.IOException!Exception! C.FileNotFoundException!IOException! D.FileNotFoundException!IOException!Exception!

答案: A

解析: 题目说抛出一个异常,但是没说具体是什么异常,那么就要分情况了: 1.如果抛出一个FileNotFoundException(或其子类),那么最终结果就打印FileNotFoundException 2.如果抛出一个IOException,或者IOException的子类(不包含FileNotFoundException及其子类),那么最终结果就打印IOException 3.如果抛出一个Exception(不包含IOException及其子类),那么最终结果就打印Exception. 以上,所以3个皆有可能.但是,不管是哪一种情况,只会输出其中之一。 从答案上来看,B,C,D的输出情况是不存在的。因此选A

14.如下代码的输出结果是什么?

public class Test {
    public int aMethod(){
        static int i = 0;
        i++;
        return i;
    }
public static void main(String args[]){
    Test test = new Test();
    test.aMethod();
    int j = test.aMethod();
    System.out.println(j);
    }
}

A.0 B.1 C.2 D.编译失败

答案: D

解析: 静态变量只能在类主体中定义,不能在方法中定义

15.下面有关servlet和cgi的描述,说法错误的是?

A.servlet处于服务器进程中,它通过多线程方式运行其service方法 B.CGI对每个请求都产生新的进程,服务完成后就销毁 C.servlet在易用性上强于cgi,它提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等 D.cgi在移植性上高于servlet,几乎所有的主流服务器都直接或通过插件支持cgi

答案: D

解析: 选择D,servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

16.下列关于构造方法的叙述中,错误的是()

A.java语言规定构造方法名与类名必须相同 B.java语言规定构造方法没有返回值,但不同void声明 C.java语言规定构造方法不可以重载 D.java语言规定构造方法只能通过new自动调用

答案: CD

解析: 关于答案d,通过this也可以调用

17.What is Static Method in Java()

A.It is a method which belongs to the class and not to the object(instance) B.A static method can access only static data. It can not access non-static data (instance variables) C.A static method can call only other static methods and can not call a non-static method from it. D.A static method can not be accessed directly by the class name and doesn’t need any object

答案: ABC

解析:

A:静态方法是一个属于类而不属于对象(实例)的方法。(√) B:静态方法只能访问静态数据。无法访问非静态数据(实例变量)。(√) C:静态方法只能调用其他静态方法,不能从中调用非静态方法。(√) D:静态方法不能通过类名直接访问,也不需要任何对象。(×) 静态方法可以直接用类名访问。

18.下列哪种情况会调用拷贝构造函数()

A.用派生类的对象去初始化基类对象时 B.将类的一个对象赋值给该类的另一个对象时 C.函数的形参是类的对象,调用函数进行形参和实参结合时 D.函数的返回值是类的对象,函数执行返回调用时

答案: A C D

解析:

复制构造函数被调用的三种情况

1.定义一个对象时,以本类另一个对象作为初始值,发生复制构造;

2.如果函数的形参是类的对象,调用函数时,将使用实参对象初始化形参对象,发生复制构造;

3.如果函数的返回值是类的对象,函数执行完成返回主调函数时,将使用return语句中的对象初始化一个临时无名对象,传递给主调函数,此时发生复制构造。

19.Java对象的初始化方式有( )

A.初始化块 B.构造器 C.定义变量时指定初始化值 D.其它各项都不对

答案: A B C

解析:

对象的初始化方式: 1.new时初始化 ; 2.静态工厂 newInstance; 3.反射Class.forName(); 4.clone方式; 5.反序列化;

20.截止JDK1.8版本,java并发框架支持锁包括?

A.读写锁 B.自旋锁 C.X锁 D.乐观锁 E.排他锁

答案: A B D

解析:

1、自旋锁 ,自旋,jvm默认是10次吧,有jvm自己控制。for去争取锁 2、阻塞锁 被阻塞的线程,不会争夺锁。 3、可重入锁 多次进入改锁的域 4、读写锁 5、互斥锁 锁本身就是互斥的 6、悲观锁 不相信,这里会是安全的,必须全部上锁 7、乐观锁 相信,这里是安全的。 8、公平锁 有优先级的锁 9、非公平锁 无优先级的锁 10、偏向锁 无竞争不锁,有竞争挂起,转为轻量锁 11、对象锁 锁住对象 12、线程锁 13、锁粗化 多锁变成一个,自己处理 14、轻量级锁 CAS 实现 15、锁消除 偏向锁就是锁消除的一种 16、锁膨胀 jvm实现,锁粗化 17、信号量 使用阻塞锁 实现的一种策略 18、排它锁:X锁,若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。

注:以上笔试题均来自网络,由笔者整理得出

推荐

Java笔试内容集合 欢迎关注,持续更新中....

文末

欢迎关注个人微信公众号:Coder编程 获取最新原创技术文章和免费学习资料,更有大量精品思维导图、面试资料、PMP备考资料等你来领,方便你随时随地学习技术知识!

文章收录至 Github: github.com/CoderMerlin… Gitee: gitee.com/573059382/c… 欢迎关注并star~

微信公众号