java面试题整理

例题1.(d)

class Parent{

public  void method1(){  //change here

System.out.println(“Parent’s method1()”);

}

public void method2()

{

System.out.println(“Parent’s method2()”);

method1();

}

}

class Child extends Parent{

public void method1(){

System.out.println(“Child’s method1()”);

}

public static void main(String args[]){

Child p = new Child();//change here

p.method2();

}

}

 

Choices:

a. Compile time error

b. Run time error

c. prints : Parent’s method2()

Parent’s method1()

d. prints : Parent’s method2()

Child’s method1()


例题2:

How can you force garbage collection of an object?

A. Garbage collection cannot be forced

B. Call System.gc().

C. Call System.gc(), passing in a reference to the object to be garbage

collected.

D. Call Runtime.gc().

E. Set all references to the object to new values(null, for example).

2. A
点评:在Java中垃圾收集是不能被强迫立即执行的。调用System.gc()或Runtime.gc()静态方法不能保证垃圾收集器的立即执行,因为,也许存在着更高优先级的线程。所以选项B、D不正确。选项C的错误在于,System.gc()方法是不接受参数的。选项E中的方法可以使对象在下次垃圾收集器运行时被收集。


例题3:

1. public class test {

2.    public static string output = “”;

3.

4.    public static void foo(int i) {

5.         try {

6.                  if(i==1) {

7.                  throw new Exception ();

8.                  }

9.                  output += “1”;

10.         }

11.         catch(Exception e) {

12.                output += “2”;

13.                return;

14.         }

15.         finally {

16.                output += “3”;

17.         }

18.         output += “4”;

19. )

20.

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

22.         foo(0);

23.         foo(1);

24.

25. )

26. )



第24行时,output的值为__1323___

2.    自定义一个字符串函数,其功能是随机产生一个由字母和数字组成的任意位数的字符串。

import java.util.*;

 

public class test {

public static void main(String args[]) {

Random random = new Random();

int n = random.nextInt(100);

StringBuffer sb = new StringBuffer();

for (int i = 0; i <= n; i++) {

int c = random.nextInt(255);

if ( (c <= ’9′ && c >= ’0′) || (c <= ‘Z’ && c >= ‘A’) ||

(c <= ‘z’ && c >= ‘a’)) {

sb.append( (char) c);

i++;

}

}

System.out.println(sb.toString());

}

}


3.简述 Java Server Page 和 Servlet 的联系和区别

Java Server Page即:JSP,JSP是Servlet技术的扩展,
本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是”类servlet”。

Servlet和JSP最主要的不同点在于:

Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。
JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。

①JSP编译后是“类servlet”,而不是servlet

②jsp主要用于视图,servlet则多用于控制逻辑


4.XML文档定义有几种形式?它们之间有何本质区别?
解析XML文档有哪几种方式?

①dtd,schema 两种形式

②本质区别:schema本身是xml,可以被xml解析器解析

③解析xml文档的方式:dom,sax

5.简述synchronized和java.util.concurrent.locks.Lock的异同 ?

主要相同点:
Lock能完成synchronized所实现的所有功能.

主要不同点:

Lock有比synchronized更精确的线程语义和更好的性能

synchronized会自动释放锁.而Lock一定要求程序员手工释放.并且必须在finally从句
中释放

6.EJB规范规定EJB中禁止的操作有哪些?(15分)
2.不能操作awt

7.不能将this作为变量和返回.

3.不能实现服务器功能
4.不能对静态属生存取.
5.不能使用IO操作直接存取文件系统
6.不能加载本地库.
1.不能操作线程和线程API(线程API指非线程对象的方法如notify,wait等)
8.不能循环调用.

7.EJB(Enterprise JavaBean,企业JavaBean)是最重要的组件。能够为企业应用程序提供业务逻辑和数据访问逻辑支持。



二,MVC模型的理解

MVC设计模式的目的:解除控制逻辑,业务理解,视图间的耦合,提升系统的扩展性,维护性。

MVC有模型,视图,控制器组成。

控制器:主要负责接收客户提交的请求,并将请求转发到适当模型对象进行处理,处理的结果发给视图(在j2ee项目中一般有servlet完成

模型:主要作用是根据的用户的请求进行相应业务的运算,处理。(javabean完成)

视图:负责将结果展示给客户 (Jsp完成)


三、响应时间和吞吐量  

吞吐量 :是对单位时间内完成的工作量的量度

响应时间:是提交请求和返回该请求的响应之间使http://write.blog.csdn.net/postedit/7203281用的时间

二者之间的关系复杂。有时可能以响应时间为代价而得到较高的吞吐量,而有时候又要以吞吐量为代价得到较好的响应时间。在其他情况下,一个单独的更改可能对两者都有提高。可接受的性能基于合理的吞吐量与合理的响应时间相结合。(有个临界值)


四、Java下Class.forName的作用及使用原因

Class.forName(xxx.xx.xx)返回一个类,作用是要求JVM查找并加载指定的类

A  a = (A)Class.forName("pakage.A").newInstance()

A a = new A();  效果一样

newInstance()方法和new关键字区别:

一个是方法,一个是关键字外,最主要的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类。


在oracle大数据量下的分页解决方法?

一般用截取ID方法,还有是三层嵌套方法


两个对象值相同(x.equals(y) == true),则一定有相同的hash code

以下是java语言的定义:   1) 对象相等则hashCode一定相等;  2) hashCode相等对象未必相等。


java中int与byte[4]的相互转换(将数i放到byte数组中)

public class Test{

public static void main(String[] args) {
int i =65535;
byte[] b = intToByteArray(i);
for(byte bb:b){
System.out.println(bb+" ");
}
}


public static byte[] intToByteArray(int i) {
byte[] result = new byte[4];
result[0]=(byte)((i>>24)&0xff);
result[1]=(byte)((i>>16)&0xff);
result[2]=(byte)((i>>8)&0xff);
result[3]=(byte)((i)&0xff);

return result;
}
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值