笔试总结1

某咨询公司笔试题目

1.(单选题)如果你被要求写一段代码读取一个序列化的对象,一般使用哪种Stream?(考点:Java I/O)

A:FileInputStream

B:FileReader

C:DataInputStream

D:ObjectInputStream

解析:FileInputStream可以从文件系统中的某个文件中获得输入字节,获取的文件可用性取决于主机环境。

FileReader类从InputStreamReader类继承而来。该类按字符读取流中数据。

DataInputStream用来装饰其它输入流,它“允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型”。

ObjectInputStream是一个装饰流,装饰流不能直接处理数据源,它必须和其他的装饰流或实体流一起使用,ObjectInputStrea

是用来实现反序列化的。

答案:D

2.(单选题)下列哪种方法可以获得HTTP请求所传递的参数(考点:HttpServletRequest)

A:ServletRequest接口的getAttribute()方法

B:ServletRequest接口的getParameter()方法

C:HttpServletRequest接口的getAttribute()方法

D:HttpServletRequest接口的getParameter()方法

解析:

HttpServletRequest和ServletRequest都是接口

HttpServletRequest继承自ServletRequest,

HttpServletRequest比ServletRequest多了一些针对于Http协议的方法。

ServletRequest类:

getAttribute( String name )可以得到由setAttribute()设置的参数值,就相当于是使用getAttribute()得到一

个自己定义的参数,而不是从客户端得到的参数。

String getParameter( String name )它用来获取客户端通过get或post方法等传递过来的值,是从客户端传递过来的,一般指的

客户端提交的表单组件的值。

HttpServletRequest类:

有setAttribute()方法,而 没有setParameter()方法 。

get/setParameter是在对你的页面中的表单元素进行操作,获取的是这个表单元素中的值,是某个表单提交过去的数据。

get/setAttribute是对你页面中自己定义的对象进行操作。

getParameter 返回的是String, 用于读取提交的表单中的值,

getAttribute 返回的是Object,需进行转换,可用setAttribute设置成任意对象,使用很灵活,可随时用。

答案:D

3.(单选题)String s = new String("xyz")创建了几个对象?(考点:JVM原理)

A:一个

B:两个

C:三个

D:四个

解析:在jvm的工作过程中,会创建一片的内存空间专门存入string对象。我们把这片内存空间叫做string池。 

String   s= "Hello ";当jvm看到 "Hello ",在string池创建string对象存储它,并将他的引用返回给s。 

s= "Java ",当jvm看到 "Java ",在string池创建新的string对象存储它,再把新建的string对象的引用返回给s。

而原先的 "Hello"仍然在string池内。没有消失,他是不能被修改的。 

所以我们仅仅是改变了s的引用,而没有改变他所引用的对象,因为string对象的值是不能被修改的。

首先在string池内找,找到?不创建string对象,否则创建,   这样就一个string对象遇到new运算符号了,

在内存上创建string对象,并将其返回给s,又一个对象 。

答案:B

4.(单选题)下面哪个语句不能定义一个字符变量?(考点:Java基本数据类型)

A:char c1='a'

B:char c2="s"

C:char c3='\u0041'

D:char c4=65

解析:‘a’表示的是字符,对应char型。“s”表示的是字符串,对应的是String型,B已经错误。

'\u0041'是十六进制,表示的是字符A,对应ASC编码是65,所以C、D正确。

答案:B

5.(单选题)以下哪些不是javascript的全局函数(考点:JavaScript)

A:eval

B:escape

C:setTimeout

D:parseFloat

解析:

JS全局函数:参考链接:http://www.w3school.com.cn/jsref/jsref_obj_global.asp

eval():计算 JavaScript 字符串,并把它作为脚本代码来执行。

escape():对字符串进行编码。

parseFloat():解析一个字符串并返回一个浮点数。

DOM函数:

setTimeout():方法用于在指定的毫秒数后调用函数或计算表达式。

答案:C

6.(单选题)定义一个类域或者类方法应该使用哪种修饰符(考点:Java修饰符static)

A:static

B:package

C:private

D:public

解析:类方法即静态方法,类域即静态成员。

答案:A

7.(多选题)abstract class 和 interface有什么区别(考点:抽象类和接口的区别)

A:抽象类可以有构造方法,接口中不能有构造方法

B:抽象类中可以有普通成员变量,接口中没有普通成员变量

C:抽象类中不可以包含静态方法,接口中可以包含静态方法

D:一个类可以实现多个接口,但只能继承一个抽象类

解析:相同点:

都不能被实例化

不同点:

类型 abstract class Interface
定义 abstract class关键字 Interface关键字
继承 抽象类可以继承一个类和实现多个接口;子类只可以继承一个抽象类 接口只可以继承接口(一个或多个);子类可以实现多个接口
访问修饰符 抽象方法可以有publicprotecteddefault这些修饰符 接口方法默认修饰符是public。你不可以使用其它修饰符
方法实现 可定义构造方法,可以有抽象方法和具体方法 接口完全是抽象的,没构造方法,且方法都是抽象的,不存在方法的实现
实现方式 子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现 子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现
作用 为了把相同的东西提取出来,即重用 为了把程序模块进行固化的契约,是为了降低偶合

答案:A、B、D

8.(多选题)下面哪些基本数据类型是8个字节(考点:基础数据类型)

A:double

B:int

C:long

D:float

解析:byte:8位,1字节

short:16位,2字节

int:32位,4字节

long:64位,8字节

float:32位,4字节

double:64位,8字节

答案:A、C

9.(多选题)下面哪些修饰符可以在不同包中子类中访问(考点:Java访问修饰符)

A:public

B:private

C:protected

D:friendly

解析:

 访问权限   类   包  子类  其他包

    public     ∨     ∨    ∨        ∨          (对任何人都是可用的)

    protect    ∨    ∨    ∨        ×    (继承的类可以访问以及和private一样的权限)

    default    ∨    ∨     ×        ×    (包访问权限,即在整个包内均可被访问)(friendly即default)

    private    ∨    ×     ×         ×    (除类型创建者和类型的内部方法之外的任何人都不能访问的元素)

答案:A、C

10.(多选题)下列说法正确的是(考点:java编译(javac))

A:环境变量可以在编译sourcecode时指定

B:在编译程序时,所能指定的环境变量不包括class path

C:javac一次可同时编译数个java源文件

D:javac.exe能指定编译结果要置于哪个目录

解析:环境变量:Java环境变量没有指定的话,java无法使用,javac也无法运行,所以需要在编译前指定环境变量。

classpath是类路径,需要单独定义,与环境变量是不同的。

javac一次可以编译多个源文件和指定编译结果的存放目录。

如:javac *.java和javac -d(-d 指定放置生成的类文件的位置)

答案:B、C、D

你可能感兴趣的:(经验总结)