zoukankan      html  css  js  c++  java
  • Java基础笔试练习(七)

    Java基础笔试练习(七)

    1.下列程序执行后结果为( )?

    class A {
        public int func1(int a, int b) {
            return a - b;
        }
    }
    class B extends A {
        public int func1(int a, int b) {
            return a + b;
        }
    }
    public class ChildClass {
        public static void main(String[] args) {
        A a = new B();
        B b = new B();
        System.out.println("Result=" + a.func1(100, 50));
        System.out.println("Result=" + b.func1(100, 50));
        }
    }
    
    

    A.Result=150Result=150
    B.Result=100Result=100
    C.Result=100Result=150
    D.Result=150Result=100

    答案:
    A
    解析:
    其实很简单,涉及转型的题目,分为向上或者向下转型。
    关键的来了,不论向上或者向下转型,都是一句话,“编译看左边,运行看右边”。也就是编译时候,会看左边引用类型是否能正确编译通过,运行的时候是调用右边的对象的方法。就本题来说,编译时候会发现左边满足条件所以编译通过,运行时候又会调用右边也就是 class B 的方法,所以答案都是150。

    2.下列哪个类的声明是正确的?

    A.protected private number;
    B.public abstract class Car{}
    C.abstract private move(){}
    D.abstract final class HI{}

    答案:
    B

    解析:
    抽象类的目的就是为了让子类实现他本身的方法
    final修饰的东西不能被更改或继承
    abstract存在的意义是为了让子类实现方法而存在,final的意义是不让子类进行修改。两者存在互斥关系

    3.关于抽象类叙述正确的是? ( )

    A.抽象类不能实现接口
    B.抽象类必须有“abstract class”修饰
    C.抽象类必须包含抽象方法
    D.抽象类也有类的特性,可以被实例化

    答案:
    B

    解析:
    A.抽象类是可以实现接口的,而且抽象类也可以继承自抽象类
    B.对
    C.抽象类指有abstract修饰的class,其可以包含抽象方法,也可以不包含
    D.抽象类和接口都是不能被实例化的,只有具体的类才可以被实例化

    4.若有定义语句: int a=10 ; double b=3.14 ; 则表达式 'A'+a+b 值的类型是()

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

    答案:
    C

    解析:
    char < short < int < float < double 不同类型运算结果类型向右边靠齐。

    5.When is the text “Hi there”displayed?

    public class StaticTest
    {
        static
        {
            System.out.println(“Hi there”);
        }
     
        public void print()
        {
            System.out.println(“Hello”);
        }
     
        public static void main(String args[])
        {
            StaticTest st1 = new StaticTest();
            st1.print();
            StaticTest st2 = new StaticTest();
            st2.print();
        }
    }
    
    

    A.Never.
    B.Each time a new object of type StaticTest is created.
    C.Once when the class is loaded into the Java virtual machine.
    D.Only when the main() method is executed.

    答案:
    C

    解析:
    类中静态语句块仅在类加载时被执行一次

    6.在开发中使用泛型取代非泛型的数据类型(比如用ArrayList取代ArrayList),程序的运行时性能会变得更好。

    A.对
    B.错

    答案:
    B

    解析:
    泛型仅仅是java的一颗语法糖,它不会影响java虚拟机生成的汇编代码,在编译阶段,虚拟机就会把泛型的类型擦除,还原成没有泛型的代码,顶多编译速度稍微慢一些,执行速度是完全没有什么区别的。

    7.以下说法中正确的有?

    A.StringBuilder是 线程不安全的
    B.Java类可以同时用 abstract和final声明
    C.HashMap中,使用 get(key)==null可以 判断这个Hasmap是否包含这个key
    D.volatile关键字不保证对变量操作的原子性

    答案:
    A D

    解析:
    String最慢的原因:
    String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。
    String:适用于少量的字符串操作的情况
    StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
    StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
    在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的

    8.下面关于Java package的描述,哪个是正确的:()

    A.包不提供将所有类名分区为更易管理的块的机制.
    B.包提供可见性控制机制.
    C.包的一个重要属性是包内定义的所有类都可以通过该包外的代码访问
    D.声明为包的一部分的类的.class文件可以存储在多个目录中.

    答案:
    B

    解析:

    包的作用:
    1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
    2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
    3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
    Java使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。

    9.下面代码执行后的结果为( )?

    nt main()
    {
    int sum=0;
    int i=0,j=0;
    for(j=0;j<6;j++)
    {
    if(j%2)continue;
    sum++;
    }
    printf("sum=%d",sum);
    return 0;
    }
    
    

    A.sum=1
    B.sum=2
    C.sum=3
    D.其他几项都不对

    答案:
    C

    解析:
    吐槽点:1.Java题出现C语言的题目。2.定义变量i 等等(既然出现在360大厂的笔试题中,那么我们抛开吐槽点,我们来看下这道题的考点。)
    考点:
    1.continue:continue语句的作用是跳过本次循环体中余下尚未执行的语句,立即进行下一次的循环条件判定,可以理解为仅结束本次循环。
    2.if(j%2)(包含:if以及取模运算):也就是求j除以2的余数(取模),if(j%3)判断j对3取余以后是否为0,如果不是0,执行if下面的语句,
    如果是0,执行另外的语句(例如else下面的语句)
    做题:
    1.j=0,0%2=0 sum=1
    2.j=1,1%2=1 sum=1
    3.j=2,2%2=0 sum=2
    4.j=3,3%2=1 sum=2
    5.j=4,4%2=0 sum=3
    6.j=5,5%2=1 sum=3

    10. 关于static说法不正确的是( ) ?

    A.可以直接用类名来访问类中静态方法(public权限)
    B.静态块仅在类加载时执行一次
    C.static方法中不能有用this调用的方法
    D.不可以用对象名来访问类中的静态方法(public权限)

    答案:
    D

    解析:
    this表示当前类的对象,由static修饰的方法是由类直接调用,不需要创建对象,所以在static里不能用this.

    11.访问权限控制从最大权限到最小权限依次为:public、 包访问权限、protected和private ()?

    A.正确
    B.错误

    答案:
    B

    解析:
    应该是:public>protected>默认(包访问权限)>private,因为protected除了可以被同一包访问,还可以被包外的子类所访问

    12.函数()把文件位置重定位到文件中的指定位置

    A.fseek
    B.fread
    C.fopen
    D.fgets

    答案:
    C

    解析:

    13.关于spring说法错误的是()?

    A.spring是一个轻量级JAVA EE的框架集合
    B.spring是“依赖注入”模式的实现
    C.使用spring可以实现声明事务
    D.spring提供了AOP方式的日志系统

    答案:
    D

    解析:
    spring没有提供AOP方式的日志系统
    AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。
    Spring通过对AOP的支持,借助log4j等Apache开源组件实现了日志系统。

    14. 以下JAVA程序代码的输出是?

    public static void main(String args[]) {
    System.out.println(14^3);
    }
    
    

    A.2744
    B.13
    C.17
    D.11

    答案:
    B

    解析:
    位运算中的异或运算,将14和3分别表示成二进制,即1110和0011做异或。得出结果为1101,转成十进制即为13

    15.下列哪一项的实现不可以添加为 TextField 对象的监听器()?

    A.MouseMotionListener
    B.FocusListener
    C.WindowsListener
    D.ActionListener

    答案:
    C

    解析:
    SWinng的内容。
    在单行文本输入区(Textfield)构件上可能发生的事件包括FocusEvent焦点事件,所对应的事件监听器是FocusListener;ActionEvent动作事件,所对应的事件监听器是ActionListener;MouseEvent鼠标事件,所对应的事件监听器是MouseMotionListener;

    16. jre 判断程序是否执行结束的标准是() ?

    A.所有的前台线程执行完毕
    B.所有的后台线程执行完毕
    C.所有的线程执行完毕
    D.和以上都无关

    答案:
    A

    解析:
    后台线程:指为其他线程提供服务的线程,也称为守护线程。JVM的垃圾回收线程就是一个后台线程。
    前台线程:是指接受后台线程服务的线程,其实前台后台线程是联系在一起,就像傀儡和幕后操纵者一样的关系。傀儡是前台线程、幕后操纵者是后台线程。由前台线程创建的线程默认也是前台线程。可以通过isDaemon()和setDaemon()方法来判断和设置一个线程是否为后台线程。

    17.根据下面的代码,String s = null;会抛出NullPointerException异常的有()。

    A.if( (s!=null) & (s.length()>0) )
    B.if( (s!=null) && (s.length()>0) )
    C.if( (snull) | (s.length()0) )
    D.if( (snull) || (s.length()0) )

    答案:
    A C

    解析:

    逻辑运算符:&&和|| 是按照“短路”方式求值的。如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了
    位移运算符:&和| 运算符应用于布尔值,得到的结果也是布尔值,不按“短路”方式计算。即在得到计算结果之前,一定要计算两个操作数的值。

    18.A,B,C,D 中哪些是 setvar的重载?

    public class methodover
    {
        public void setVar(int a, int b, float c) {}
    }
    
    

    A.private void setVar(int a, float c, int b){}
    B.protected void setVar(int a, int b, float c){}
    C.public int setVar(int a, float c, int b){return a;}
    D.public int setVar(int a, float c){return a;}

    答案:
    A C D

    解析:
    重载是在同一个类中,有多个方法名相同,参数列表不同(参数个数不同,参数类型不同),与方法的返回值无关,与权限修饰符无关,B中的参数列表和题目的方法完全一样了。

    19.下面有关java的引用类型,说法正确的有?

    A.对于一个对象来说,只要有强引用的存在,它就会一直存在于内存中
    B.如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。
    C.如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存
    D.一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的空间

    答案:
    A B C D

    解析:
    1、强引用:一个对象赋给一个引用就是强引用,比如new一个对象,一个对象被赋值一个对象。
    2、软引用:用SoftReference类实现,一般不会轻易回收,只有内存不够才会回收。
    3、弱引用:用WeekReference类实现,一旦垃圾回收已启动,就会回收。
    4、虚引用:不能单独存在,必须和引用队列联合使用。主要作用是跟踪对象被回收的状态。

    20.以下类型为Final类型的为()?

    A.HashMap
    B.StringBuffer
    C.String
    D.Hashtable

    答案:
    B F

    解析:
    StringBuilder , StringBuffer ,String都是 final

    推荐

    大厂笔试内容集合(内有详细解析) 持续更新中....

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

    文末

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

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

  • 相关阅读:
    Hello, Fedora.
    Android与Linux分道扬镳
    VIM教程V1.5梁昌泰
    强大的NTFS文件系统
    Linux下的cc与gcc
    g++与gcc的区别
    Fedora下解压缩的相关问题
    The GNU C Reference Manual
    Linux Kbuild文档
    实验一:计算机是怎样工作的
  • 原文地址:https://www.cnblogs.com/coder-programming/p/11683868.html
Copyright © 2011-2022 走看看