美文网首页
Java基础笔试练习(十五)

Java基础笔试练习(十五)

作者: Coder编程 | 来源:发表于2019-10-12 15:17 被阅读0次
    Java基础笔试练习(十五)

    1. 有以下代码片段,请问输出的结果是()?

    String str1="hello";
    String str2="he"+ new String("llo");
    System.out.println(str1==str2);
    

    A.true
    B.都不对
    C.null
    D.false

    答案:
    D

    解析:
    String str1="hello"; 这样创建字符串是存在于常量池中
    String str2=new String("hello"); str2存在于堆中,
    ==是验证两个对象是否是一个(内存地址是否相同)
    用+拼接字符串时会创建一个新对象再返回。

    2.在如下所示的类Test中,共有()个构造方法。

    public class Test{
        private int x;
        public Test(){
            x = 35;
        }
        public void Test(double f){
            this.x = (int)f;
        }
        public Test(double f){
            this.x = (int)f;
        }
        public Test(String s) {}
    }
    
    

    A.0
    B.1
    C.2
    D.3

    答案:
    D

    解析:
    构造方法形式:
    类名([形式参数表])
    构造方法没有返回值,不能添加void,构造方法可以被重载

    3.一个以”.java”为后缀的源文件

    A.只能包含一个类,类名必须与文件名相同
    B.只能包含与文件名相同的类以及其中的内部类
    C.只能有一个与文件名相同的类,可以包含其他类
    D.可以包含任意类

    答案:
    C

    解析:
    略,前面都做过的- -!

    4.下面哪些不是Thread类的方法

    A.start()
    B.run()
    C.exit()
    D.getPriority()

    答案:
    C

    解析:
    线程常用方法:
    start(): 使该线程开始执行;Java 虚拟机调用该线程的run方法。
    run():如果该线程是使用独立的Runnable运行对象构造的,则调用该Runnable对象的run方法;否则,该方法不执行任何操作并返回。
    join():等待该线程终止。
    getPriority():返回线程的优先级。
    yield():暂停当前正在执行的线程对象,并执行其他线程

    5.关于 JAVA 堆,下面说法错误的是()

    A.所有类的实例和数组都是在堆上分配内存的
    B.对象所占的堆内存是由自动内存管理系统回收
    C.堆内存由存活和死亡的对象,空闲碎片区组成
    D.数组是分配在栈中的

    答案:
    D

    解析:

    1. 对象存储在堆区。
    2. 数组是一种对象。

    6.一个文件中的字符要写到另一个文件中,首先需要( )。

    A.使用标准输出流System.out.println()。
    B.建立文件字符输出流。
    C.建立文件字符输入流。
    D.标准输入流System.in.read()。

    答案:
    C

    解析:
    一个文件中的字符要写到另一个文件中,首先需要读取这个文件,所以要先建立输入流,然后写到另一个文件,这时再建立输出流.所以要先建立输入流,再建立输出流.

    7.尝试编译以下程序会产生怎么样的结果?()

    public class MyClass {
        long var;
        public void MyClass(long param) { var = param; }//(1)
        public static void main(String[] args) {
            MyClass a, b;
            a =new MyClass();//(2)
            b =new MyClass(5);//(3)
        }
    }
    
    

    A.编译错误将发生在(1),因为构造函数不能指定返回值
    B.编译错误将发生在(2),因为该类没有默认构造函数
    C.编译错误将在(3)处发生,因为该类没有构造函数,该构造函数接受一个int类型的参数
    D.该程序将正确编译和执行

    答案:
    C

    解析:
    构造方法就是:public 类名, 没有方法修饰符,所以 (1) 处就是一个普通方法,所以该类没有带参数构造方法 ,编译报错

    8.下面叙述那个是正确的?()

    A.java中的集合类(如Vector)可以用来存储任何类型的对象,且大小可以自动调整。但需要事先知道所存储对象的类型,才能正常使用。
    B.在java中,我们可以用违例(Exception)来抛出一些并非错误的消息,但这样比直接从函数返回一个结果要更大的系统开销。
    C.java接口包含函数声明和变量声明。
    D.java中,子类不可以访问父类的私有成员和受保护的成员。

    答案:
    B

    解析:
    A.vector是线程安全的ArrayList,在内存中占用连续的空间。初始时有一个初始大小,当数据条数大于这个初始大小后会重写分配一个更大的连续空间。如果Vector定义为保存Object则可以存放任意类型。
    B.try{}catch{}会增加额外的开销
    C.接口中声明的'变量'必须为public final static,所以为常量
    D.子类可以访问父类受保护的成员

    9.下面代码的运行结果是()?

    public static void main(String[] args){
        String s;
        System.out.println("s="+s);
    }
    
    

    A.代码编程成功,并输出”s=”
    B.代码编译成功,并输出”s=null”
    C.由于String s没有初始化,代码不能编译通过。
    D.代码编译成功,但捕获到NullPointException异常

    答案:
    C

    解析:
    局部变量没有默认值

    10. 代码 的运行结果是()?

    A.在控制台打印hello sunline!
    B.报异常java.lang.NullPoninterException
    C.编译报错
    D.报异常java.lang.RuntimeExcception

    答案:
    C

    解析:
    1、Java 中单实现通过 implements 关键字,多实现通过 extends 关键字
    2、Java 中单继承通过 extends 关键字,没有多继承
    3、如果同时出现继承和实现,则必须先继承(extends)再实现(implements)

    11.由3 个“1”和 5 个“0”组成的 8 位二进制补码,能表示的最小整数()

    A.-126
    B.-125
    C.-32
    D.-3

    答案:
    B

    解析:
    既然求最小整数,那肯定先想到负数,则最高位(符号位)一定为1,原码中肯定是1所在的位数越高,值越小,而补码是由原码取反加1得到的,则在补码中1所在的位数一定要越低,即补码为1000 0011;由补码求得原码:1111 1101=-(64+32+16+8+4+1)=-125;

    12.运行代码,结果正确的是:()?

    Boolean flag = false;
    if(flag = true){
        System.out.println("true");
    }else{
        System.out.println("false");
    }
    

    A.编译错误
    B.TRUE
    C.FALSE
    D.什么也没有输出

    答案:
    B

    解析:
    if(flag = true)的时候flag已经是true了,所以输出true;
    要是为if(flag == true)输出才为false

    13.下列哪个选项是合法的标识符?()

    A.123
    B._name
    C.class
    D.first

    答案:
    B D

    解析:
    Java标识符由 数字、字母、下划线(_)、美元符号($) 组成,首位不能是数字 。并且Java关键字不能作为标识符 。

    14.Why would a responsible Java programmer want to use a nested class?

    A.To keep the code for a very specialized class in close association with the class it works with.
    B.To support a new user interface that generates custom events.
    C.To impress the boss with his/her knowledge of Java by using nested classes all over the place.

    答案:
    A B

    解析:
    使用嵌套类,其中有几个令人信服的理由:
    加强封装—考虑两个顶级类,A和B,如果B需要访问A的private成员,通过在A类隐藏B类,那么即使A的成员声明为private,那么B也可以访问它们。更多的是,B本身也可以隐藏于外部。跟可读性,可维护性的代码—在顶级类里嵌套小类,让代码更靠近使用的地方。

    15.下面有关Java的说法正确的是( )

    A.一个类可以实现多个接口
    B.抽象类必须有抽象方法
    C.protected成员在子类可见性可以修改
    D.通过super可以调用父类构造函数
    E.final的成员方法实现中只能读取类的成员变量
    F.String是不可修改的,且java运行环境中对string对象有一个对象池保存

    答案:
    A C D F

    解析:
    A对:java类单继承,多实现
    B错:被abstract修饰的类就是抽象类,有没有抽象方法无所谓
    C错:这道题应该是要考察子类继承父类,并重写父类的protected成员方法,该方法的可见性可以修改,这是对的,因为子类继承父类的方法,访问权限可以相同或往大了改
    D对。
    E错:final修饰的方法只是不能重写,static修饰的方法只能访问类的成员变量
    F对。

    16.下列描述正确的是( )?

    A.类不可以多继承而接口可以多实现
    B.抽象类自身可以定义成员而接口不可以
    C.抽象类和接口都不能被实例化
    D.一个类可以有多个基类和多个基接口

    答案:
    A C

    解析:
    1.java支持单继承,却可以实现多个接口。a对d错
    2.接口没有构造方法,所以不能实例化,抽象类有构造方法,但是不是用来实例化的,是用来初始化的。c对
    3.抽象类可以定义普通成员变量而接口不可以,但是抽象类和接口都可以定义静态成员变量,只是接口的静态成员变量要用static final public 来修饰。b错

    17.关于下面这段Java程序,哪些描述是正确的:( )

    public class ThreadTest extends Thread {
        public void run() {
            System.out.println("In run");
            yield();
            System.out.println("Leaving run");
        }
        public static void main(String []argv) {
            (new ThreadTest()).start();
        }
    }
    

    A.程序运行输出只有In run
    B.程序运行输出只有Leaving run
    C.程序运行输出先有In run后有Leaving run
    D.程序运行输出先有Leaving run后有In run
    E.程序没有任何输出就退出了
    F.程序将被挂起,只能强制退出

    答案:
    C

    解析:
    yield()从未导致线程转到等待/睡眠/阻塞状态。在大多数情况下,yield()将导致线程从运行状态转到可运行状态,但有可能没有效果。

    18.哪个是不正确的字符常量?

    A.”\n”
    B.”1”
    C.”a”
    D.”\101”

    答案:
    A B C D

    解析:
    四个答案都采用的是双引号关闭,所以是字符串常量而不是字符常量。
    忽略这个错误,那么这题就没有答案,因为无论是采用特殊字符的转移序列'\n'还是采用八进制转义'\101',都是满足Java语言规范中规定的字符常量格式。

    19.JDK提供的用于并发编程的同步器有哪些?

    A.Semaphore
    B.CyclicBarrier
    C.CountDownLatch
    D.Counter

    答案:
    A B C

    解析:
    A,Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。
    B,CyclicBarrier 主要的方法就是一个:await()。await() 方法没被调用一次,计数便会减少1,并阻塞住当前线程。当计数减至0时,阻塞解除,所有在此 CyclicBarrier 上面阻塞的线程开始运行。
    C,直译过来就是倒计数(CountDown)门闩(Latch)。倒计数不用说,门闩的意思顾名思义就是阻止前进。在这里就是指 CountDownLatch.await() 方法在倒计数为0之前会阻塞当前线程。
    D,Counter不是并发编程的同步器

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

    A.面向对象的最重要的特性是支持继承、封装和多态
    B.系统设计应该遵循开闭原则,系统应该稳定不不可修改,但应支持通过继承、组合等方式进行扩展
    C.函数式的语言必然是面向对象的语言
    D.面向对象设计时,每个类的职责应该单一,不要再一个类中引入过多的接口
    E.过程式语言和面向对象的语言各有其优势,过程式语言更加灵活,面向对象语言更加强调抽象和封装
    F.Java和C++都是静态类型的面向对象编程语言

    答案:
    C

    解析:
    动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

    推荐

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

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

    文末

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

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

    微信公众号

    相关文章

      网友评论

          本文标题:Java基础笔试练习(十五)

          本文链接:https://www.haomeiwen.com/subject/rciqmctx.html