• Java基础笔试练习(十二)


    Java基础笔试练习(十二)

    1.(C#、JAVA)扩展方法能访问被扩展对象的public成员

    A.能
    B.不能

    答案:
    A

    解析:
    翻译一下,子类方法是否能够访问父类中的public成员。

    2.如果子类要调用父类的构造函数,则通过super()调用来实现。

    A.正确
    B.错误

    答案:
    A

    解析:
    super关键字在子类内部使用,代表父类对象。 访问父类的属性 super.属性名 访问父类的方法 super.方法名() 子类构造方法需要调用父类的构造方法时,在子类的构造方法体里最前面的位置:super()

    3.下列关于Java语言中String和char的说法,正确的是()

    A.String是Java定义的一种基本数据类型。
    B.String是以“”结尾的char类型的数组char[]。
    C.使用equals()方法比较两个String是否内容一样(即字符串中的各个字符都一样)。
    D.Char类型在Java语言里面存储的是ASCII码。

    答案:
    C

    解析:
    A 基本数据类型包括byte,short,int,long,float,double,char,boolean,所以A错。
    B,C语言当中是这样,java不是, String内部是用char[]数组实现的,不过结尾不用。
    C 对,字符串内容比较用equals方法。
    D char存储的unicode码,不进可以存储ascII码,汉字也可以。

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

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

    答案:
    C

    解析:
    C应该改为,数组的引用存在栈内存中,而数组对象保存在堆里面。

    5. java 接口的修饰符可以为()

    A.private
    B.protected
    C.final
    D.abstract

    答案:
    D

    解析:
    接口是通用的,用来描述方法是干什么用的,方法的默认修饰符为public abstract.不可以为final 是因为方法要被重写, 描述符如果为private或者protected,那么子类重写的方法的描述符也可以为private或者protected,这样就是有了访问显示,不符合接口所要达到的的任何人都可以使用了

    6.指出下来程序运行的结果是

    代码

    A.good and abc
    B.good and gbc
    C.test ok and abc
    D.test ok and gbc

    答案:
    B

    解析:
    实参和形参的问题。"ex.change(ex.str, ex.ch)"语句调用"change"方法时,将ex.str变量(实参)的值赋给了"change"方法中的str变量(形参),而将ex.ch(实参)的地址赋给了"change"方法中的ch(形参)。"change"方法运行时,第一条语句改变的是方法中形参的值,对实参没影响,第二条语句由于是直接改变的ch所指地址的值,所以把实参也进行了改变。

    7. A 是抽象父类或接口, B , C 派生自 A ,或实现 A ,现在 Java 源代码中有如下声明: 问以下哪个说法是正确的?( )

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

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

    答案:
    A

    解析:
    抽象类和接口不能实例化

    8.try块后必须有catch块。()

    A.正确
    B.错误

    答案:
    B

    解析:
    catch可以省略,try的形式有三种:
    try-catch
    try-finally
    try-catch-finally
    但catch和finally语句不能同时省略!

    9. 以下 _____ 不是 Object 类的方法

    A.clone()
    B.finalize()
    C.toString()
    D.hasNext()

    答案:
    D

    解析:

    10.指出下列程序运行的结果:

    public class Example{
        String str=new String("tarena");
        char[]ch={'a','b','c'};
        public static void main(String args[]){
            Example ex=new Example();
            ex.change(ex.str,ex.ch);
            System.out.print(ex.str+" and ");
            System.out.print(ex.ch);
        }
        public void change(String str,char ch[]){
       //引用类型变量,传递的是地址,属于引用传递。
            str="test ok";
            ch[0]='g';
        }
    }
    

    A.tarena and abc
    B.tarena and gbc
    C.test ok and abc
    D.test ok and gbc

    答案:
    B

    解析:
    与第六题类似。

    11.以下代码段执行后的输出结果为

    public class Test {
    	public static void main(String args[]) {
    		int x = -5;
    		int y = -12;
    		System.out.println(y % x);
    	}
    }
    

    A.-1
    B.2
    C.1
    D.-2

    答案:
    D

    解析:
    取模运算,余数的符号跟被除数符号相同

    12.下面有关webservice的描述,错误的是?

    A.Webservice是跨平台,跨语言的远程调用技术
    B.Webservice通信机制实质就是json数据交换
    C.Webservice采用了soap协议(简单对象协议)进行通信
    D.WSDL是用于描述 Web Services 以及如何对它们进行访问

    答案:
    B

    解析:
    Webservice是跨平台,跨语言的远程调用技术;它的通信机制实质就是xml数据交换;它采用了soap协议(简单对象协议)进行通信

    13.关于ASCII码和ANSI码,以下说法不正确的是()?

    A.标准ASCII只使用7个bit
    B.在简体中文的Windows系统中,ANSI就是GB2312
    C.ASCII码是ANSI码的子集
    D.ASCII码都是可打印字符

    答案:
    D

    解析:
    A、标准ASCII只使用7个bit,扩展的ASCII使用8个bit。
    B、ANSI通常使用 0x00~0x7f 范围的1 个字节来表示 1 个英文字符。超出此范围的使用0x80~0xFFFF来编码,即扩展的ASCII编码。不同 ANSI 编码之间互不兼容。在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码;在繁体中文Windows操作系统中,ANSI编码代表Big5;在日文Windows操作系统中,ANSI 编码代表 Shift_JIS 编码。
    C、ANSI通常使用 0x00~0x7f 范围的1 个字节来表示 1 个英文字符,即ASCII码
    D、ASCII码包含一些特殊空字符

    14. Test.main() 函数执行后的输出是()

    
    
        public class Test {  
            public static void main(String [] args){  
                System.out.println(new B().getValue());  
            }  
            static class A{  
                protected int value;  
                public A(int v) {  
                    setValue(v);  
                }  
                public void setValue(int value){  
                    this.value = value;  
                }  
                public int getValue(){  
                    try{  
                        value++;  
                        return value;  
                    } catch(Exception e){  
                        System.out.println(e.toString());  
                    } finally {  
                        this.setValue(value);  
                        System.out.println(value);  
                    }  
                    return value;  
                }  
            }  
            static class B extends A{  
                public B() {  
                    super(5);  
                    setValue(getValue() - 3);  
                }  
                public void setValue(int value){  
                    super.setValue(2 * value);  
                }  
            }  
        }   
    

    A.11 17 34
    B.22 74 74
    C.6 7 7
    D.22 34 17

    答案:
    D

    解析:

    15.final、finally和finalize的区别中,下述说法正确的有?

    A.final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
    B.finally是异常处理语句结构的一部分,表示总是执行。
    C.finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源的回收,例如关闭文件等。
    D.引用变量被final修饰之后,不能再指向其他对象,它指向的对象的内容也是不可变的。

    答案:
    A B

    解析:
    A,D考的一个知识点,final修饰变量,变量的引用(也就是指向的地址)不可变,但是引用的内容可以变(地址中的内容可变)。
    B,finally表示总是执行。但是其实finally也有不执行的时候,但是这个题不要扣字眼。

    1. 在try中调用System.exit(0),强制退出了程序,finally块不执行。
    2. 在进入try块前,出现了异常,finally块不执行。
      C,finalize方法,这个选项错就错在,这个方法一个对象只能执行一次,只能在第一次进入被回收的队列,而且对象所属于的类重写了finalize方法才会被执行。第二次进入回收队列的时候,不会再执行其finalize方法,而是直接被二次标记,在下一次GC的时候被GC。
      放一张图吧
      15

    16.关于equals和hashCode描述正确的是()

    A.两个obj,如果equals()相等,hashCode()一定相等(符合代码规范的情况下)
    B.两个obj,如果hashCode()相等,equals()不一定相等
    C.两个不同的obj, hashCode()可能相等
    D.其他都不对

    答案:
    A B C

    解析:
    地址比较是通过计算对象的哈希值来比较的,hashcode属于Object的本地方法,对象相等(地址相等),hashcode相等,对象不相等,hashcode()可能相等,哈希冲突

    17.下面有关java类加载器,说法正确的是?

    A.引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的
    B.扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。
    C.系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类
    D.tomcat为每个App创建一个Loader,里面保存着此WebApp的ClassLoader。需要加载WebApp下的类时,就取出ClassLoader来使用

    答案:
    ABCD

    解析:
    jvm classLoader architecture :

    a、Bootstrap ClassLoader/启动类加载器
    主要负责jdk_home/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作.

    B、Extension ClassLoader/扩展类加载器
    主要负责jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包装入工作

    C、System ClassLoader/系统类加载器
    主要负责java -classpath/-Djava.class.path所指的目录下的类与jar包装入工作.

    B、 User Custom ClassLoader/用户自定义类加载器(java.lang.ClassLoader的子类)
    在程序运行期间, 通过java.lang.ClassLoader的子类动态加载class文件, 体现java动态实时类装入特性.

    18.下面哪项技术可以用在WEB开发中实现会话跟踪实现?

    A.session
    B.Cookie
    C.地址重写
    D.隐藏域

    答案:
    ABCD

    解析:
    会话跟踪是一种灵活、轻便的机制,它使Web上的状态编程变为可能。
    HTTP是一种无状态协议,每当用户发出请求时,服务器就会做出响应,客户端与服务器之间的联系是离散的、非连续的。当用户在同一网站的多个页面之间转换时,根本无法确定是否是同一个客户,会话跟踪技术就可以解决这个问题。当一个客户在多个页面间切换时,服务器会保存该用户的信息。
    有四种方法可以实现会话跟踪技术:URL重写、隐藏表单域、Cookie、Session。
    1).隐藏表单域:,非常适合步需要大量数据存储的会话应用。
    2).URL 重写:URL 可以在后面附加参数,和服务器的请求一起发送,这些参数为名字/值对。
    3).Cookie:一个 Cookie 是一个小的,已命名数据元素。服务器使用 SET-Cookie 头标将它作为 HTTP
    响应的一部分传送到客户端,客户端被请求保存 Cookie 值,在对同一服务器的后续请求使用一个
    Cookie 头标将之返回到服务器。与其它技术比较,Cookie 的一个优点是在浏览器会话结束后,甚至
    在客户端计算机重启后它仍可以保留其值
    4).Session:使用 setAttribute(String str,Object obj)方法将对象捆绑到一个会话

    19.下面有关forward和redirect的描述,正确的是() ?

    A.forward是服务器将控制权转交给另外一个内部服务器对象,由新的对象来全权负责响应用户的请求
    B.执行forward时,浏览器不知道服务器发送的内容是从何处来,浏览器地址栏中还是原来的地址
    C.执行redirect时,服务器端告诉浏览器重新去请求地址
    D.forward是内部重定向,redirect是外部重定向
    E.redirect默认将产生301 Permanently moved的HTTP响应

    答案:
    B C D

    解析:

    1.从地址栏显示来说
    forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
    redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.

    2.从数据共享来说
    forward:转发页面和转发到的页面可以共享request里面的数据.
    redirect:不能共享数据.

    3.从运用地方来说
    forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
    redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.

    4.从效率来说
    forward:高.
    redirect:低.

    20.下面关于volatile的功能说法正确的是哪个

    A.原子性
    B.有序性
    C.可见性
    D.持久性

    答案:
    B C

    解析:
    synchronized保证三大性,原子性,有序性,可见性,volatile保证有序性,可见性,不能保证原子性

    推荐

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

    文末

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

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

  • 相关阅读:
    PYTHON压平嵌套列表
    linux下IPTABLES配置详解
    Python面试必须要看的15个问题
    两个实用的Python的装饰器
    Python的16个“坑”
    python实现不可修改的常量
    51nod-1322: 关于树的函数
    51nod-1310: Chandrima and XOR
    51nod-1296: 有限制的排列
    51nod-1277: 字符串中的最大值
  • 原文地址:https://www.cnblogs.com/coder-programming/p/11760898.html
Copyright © 2020-2023  润新知