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是以“\0”结尾的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[]数组实现的,不过结尾不用\0。
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~
微信公众号

posted @ 2019-10-29 19:16  Coder编程  阅读(735)  评论(0编辑  收藏  举报