java面试题集2

来源:互联网 发布:ol3vs数据库app最新版 编辑:程序博客网 时间:2024/05/17 22:14

1、 原生类中的数据类型均可任意转换。

正确答案:B

解释:Java中,数据类型分为基本数据类型(或叫做原生类、内置类型)和引用数据类型。

原生类型为基本数据类型

int和布尔值不可以相互转换

2、如何获取ServletContext设置的参数值?

context.getParameter()

context.getInitParameter()

context.getAttribute()

context.getRequestDispatcher()

正确答案: B

解释:ServletContext context = this.getServletContext(); 

String catalogFileName = context.getInitParameter(catalogFileName);

3Given the following code:

1.public class Enclosingone

2.{

3.    public class InsideOne {}

4.

5.}

6.public class inertest

7.{

8.    public static void main(string[]args)

9.    {

10.        EnclosingOne eo = new EnclosingOne();

11.        //insert code here

12.    }

13.

14.}

Which statement at line 7 constructs an instance of the inner class?

InsideOne ei=eo.new InsideOne();

eo.InsideOne ei=eo.new InsideOne();

InsideOne ei=EnclosingOne.new InsideOne();

EnclosingOne.InsideOne ei=eo.new InsideOne();

正确答案: D

解释:非静态内部类因为是了属于对象的,所以初始化时需要先初始化一个外部类实例对象,然后使用此对象调用内部类的构造方法。静态内部类属于类本身,初始化时直接使用外部类调用静态内部类的构造方法即可。

4、下面哪种情况会导致持久区jvm堆内存溢出?

循环上万次的字符串处理

在一段代码内申请上百M甚至上G的内存

使用CGLib技术直接操作字节码运行,生成大量的动态类

不断创建对象

正确答案: C

解释:简单的来说 java的堆内存分为两块:permantspace(持久带) 和 heap space

持久带中主要存放用于存放静态类型数据,如 Java Class, Method 等, 与垃圾收集器要收集的Java对象关系不大。

heapspace分为年轻带和年老带 

年轻代的垃圾回收叫 Young GC, 年老代的垃圾回收叫 Full GC

在年轻代中经历了N次(可配置)垃圾回收后仍然存活的对象,就会被复制到年老代中。因此,可以认为年老代中存放的都是一些生命周期较长的对象

年老代溢出原因有  循环上万次的字符串处理、创建上千万个对象、在一段代码内申请上百M甚至上G的内存,既A B D选项

持久代溢出原因  动态加载了大量Java类而导致溢出

5、abstract classinterface有什么区别。

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

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

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

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

正确答案: A B D

解释:两者的语法区别:  

1.抽象类可以有构造方法,接口中不能有构造方法。  

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

3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。  

4. 抽象类中的抽象方法的访问类型可以是publicprotected和(默认类型,虽然  

eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。  

5. 抽象类中可以包含静态方法,接口中不能包含静态方法  

6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。  

7. 一个类可以实现多个接口,但只能继承一个抽象类。 

6Consider the following code:

Integer s=new Integer(9);

Integer t=new Integer(9);

Long u=new Long(9);

Which test would return true?

(s==u)

(s==t)

(s.equals(t))

(s.equals(9))

(s.equals(new Integer(9))

正确答案: C D E

解释:对于AB,他们比较的是双方的引用,因此他们的引用地址肯定不是同一个,不然就是同一个对象了。CDE执行了Integerequals方法。如D中是将int 9自动封装了一个值为9Integer对象,在进行值比较。 Integer equals方法源码: public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; }

7、下面哪些不是链表的特征

数据在内存中一定是连续的

插入或删除时,无需移动其它元素

可以随机访问表内的元素

需要事先估计存储空间

正确答案: A C D

解释:A中,数据在内存中的地址(即物理地址)不一定连续,但是他们的逻辑地址是连续的。

B中,插入或者删除时,改变的是指向数据的指针,其元素都是不变的。

C中,对于单链表来说,只有指向链表头的头指针,所以不能随机访问表内元素,只能通过指针的移动。

D中,链表的存储空间是不需要事先估计的,他不是线性的,所以可以随着结点的增加而随时增加存储空间。

8、浏览器和服务器在基于https进行请求链接到数据传输过程中,用到了如下哪些技术:

非对称加密技术

对称加密技术

散列(哈希)算法

数字证书

正确答案: A B C D

解释:,HTTPS一般使用的加密与HASH算法如下: 

非对称加密算法:RSADSA/DSS 

对称加密算法:AESRC43DES 

HASH算法:MD5SHA1SHA256

9、以下哪几种方式可用来实现线程间通知和唤醒:( )

Object.wait/notify/notifyAll

ReentrantLock.wait/notify/notifyAll

Condition.await/signal/signalAll

Thread.wait/notify/notifyAll

正确答案: A

解释: wait/notify/notifyAllObject类的方法,而不是Thread类的。Thread类对线程执行控制的的方法是sleep

10、说明输出结果。

package test;

import java.util.Date; 

public class SuperTest extends Date{ 

    private static final long serialVersionUID = 1L; 

    private void test(){ 

       System.out.println(super.getClass().getName()); 

    } 

      

    public static void main(String[]args){ 

       new SuperTest().test(); 

    } 

}

SuperTest

SuperTest.class

test.SuperTest

test.SuperTest.class

正确答案: C 

解释:super.getClass() 得到的依然是runtime当前类,若要得到真正的父类,需要用super.getClass().getSuperclass()

虽然这里写的是super,但其实用this也一样

11、下面有关servletcgi的描述,说法错误的是?

servlet处于服务器进程中,它通过多线程方式运行其service方法

CGI对每个请求都产生新的进程,服务完成后就销毁

servlet在易用性上强于cgi,它提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等

cgi在移植性上高于servlet,几乎所有的主流服务器都直接或通过插件支持cgi

正确答案: D

解释:servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet

12、有关会话跟踪技术描述正确的是()

CookieWeb服务器发送给客户端的一小段信息,客户端请求时,可以读取该信息发送到服务器端

关闭浏览器意味着会话ID丢失,但所有与原会话关联的会话数据仍保留在服务器上,直至会话过期

在禁用Cookie时可以使用URL重写技术跟踪会话

隐藏表单域将字段添加到HTML表单并在客户端浏览器中显示

正确答案: A B C

解释:隐藏域在页面中对于用户(浏览器)是不可见的,在表单中插入隐藏域的目的在于收集或发送信息,以利于被处理表单的程序所使用。浏览者单击发送按钮发送表单的时候,隐藏域的信息也被一起发送到服务器。

13、下面有个hibernate延迟加载,说法错误的是?

Hibernate2延迟加载实现:a)实体对象 b)集合(Collection

Hibernate3 提供了属性的延迟加载功能

get支持延迟加载,load不支持延迟加

hibernate使用Java反射机制,而不是字节码增强程序来实现透明性

正确答案: C 

解释:get不支持,load支持

14、JAVA反射机制主要提供了以下哪些功能?

在运行时判断任意一个对象所属的类

在运行时构造任意一个类的对象

在运行时判断任意一个类所具有的成员变量和方法

在运行时调用任意一个对象的方法

正确答案: A B C D

解释:Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。

15、下列语句正确的是( )

形式参数可被视为local variable

形式参数可被所有的字段修饰符修饰

形式参数为方法被调用时,真正被传递的参数

形式参数不可以是对象

正确答案: A

解释:C:真正被传递的是实参

D:形参可以是对象,是对象的时候传递引用

B:对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器错误 。但是用这个修饰符也有一定的限制,就是在方法中不能对参数做任何修改。 不过一般情况下,一个方法的形参不用final修饰。只有在特殊情况下,那就是:方法内部类。 

1.形参是声明方法的时候用的比如public void study(int age, String sex)age,String 都是形参,前面要注明数据类型

2..实参是方法被调用的时候根据形参的类型传递给方法实际的数值就是实参,比如调用上面那个方法student.study(18,"male"); 18,"male"就是实参

16 下面有关JSP内置对象的描述,说法错误的是?

session对象:session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止

request对象:客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应

application对象:application对象实现了用户间数据的共享,可存放全局变量,可以有多个

response对象:response对象包含了响应客户请求的有关信息

正确答案: C 

解释:application对象,为多个应用程序保存信息,只有一个

0 0