FileSaver ANSI编码 编码为ansi_java写入文件编码格式为ansi

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.指出下来程序运行的结果是




FileSaver ANSI编码 编码为ansi_FileSaver ANSI编码_02

代码



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块不执行。
  3. C,finalize方法,这个选项错就错在,这个方法一个对象只能执行一次,只能在第一次进入被回收的队列,而且对象所属于的类重写了finalize方法才会被执行。第二次进入回收队列的时候,不会再执行其finalize方法,而是直接被二次标记,在下一次GC的时候被GC。
  4. 放一张图吧



FileSaver ANSI编码 编码为ansi_FileSaver ANSI编码_03

执行流程



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保证有序性,可见性,不能保证原子性

推荐

欢迎关注~持续更新中...