前往顾页
以后地位: 主页 > 收集编程 > Jsp实例教程 >

java口试常见题目小结年夜全

时候:2012-02-17 13:21来源:知行网www.zhixing123.cn 编辑:麦田守望者

1.Overload和Override的辨别。Overloaded的体例是不是可以改变前往值的范例?

体例的重写Overriding和重载Overloading是Java多态性的不合表示。
重写Overriding是父类与子类之间多态性的一种表示,重载Overloading是一个类中多态性的一种表示。
如果在子类中定义某体例与其父类有不异的称呼和参数,我们说该体例被重(Overriding)。
子类的工具利用这个别例时,将调用子类中的定义,对它而言,父类中的定义如同被“樊篱”了。
如果在一个类中定义了多个同名的体例,它们或有不合的参数个数或有不合的参数范例,则称为体例的重载(Overloading)。Overloaded的体例是可以改变前往值的范例。
2.servlet的生命周期

web容器加载servlet,生命周期开端。经由过程调用servlet的init()体例进行servlet的初始化。经由过程调用service()体例实现,按照请求的不合调用不合的do***()体例。结束办事,web容器调用servlet的destroy()体例。

servlet生命周期.jpg 见附件



3.说出ArrayList,Vector, LinkedList的存储机能和特性
ArrayList和Vector都是利用数组体例存储数据,此数组元素数年夜于实际存储的数据以便增加和拔出元素,如果元素的数量超出了外部数组目前的长度它们都需求扩展外部数组的长度,Vector缺省环境下主动增加本来一倍的数组长度,ArrayList是本来的50%,它们都许可直接按序号索引元素,但是拔出元素要触及数组元素挪动等外存操纵,所以索引数据快而拔出数据慢,Vector因为利用了synchronized同步体例包管线程宁静,凡是机能上较ArrayList差,而LinkedList利用双向链表实现存储,按序号索引数据需求进行前向或后向遍历,但是拔出数据时只需求记录本项的前后项便可,所以拔出速率较快。


4.final, finally, finalize的辨别。
  final 用于声明属性,体例和类,别离表示属性不成变,体例不成覆盖,类不成继承。
finally是异常措置语句布局的一部分,表示老是履行。
finalize是Object类的一个别例,在渣滓汇集器履行的时候会调用被收受领受工具的此体例,可以覆盖此体例供应渣滓汇集时的其他资本收受领受,比方封闭文件等。



5.forward 和redirect的辨别
forward是办事器请求资本,办事器直接拜候目标地点的URL,把阿谁URL的呼应内容读取过去,然后把这些内容再发给浏览器,浏览器底子不晓得办事器发送的内容是从哪儿来的,所以它的地点栏中还是本来的地点。
redirect就是办事端按照逻辑,发送一个状况码,奉告浏览正视新去请求阿谁地点,一般来讲浏览器会用刚才请求的所有参数从头请求,所以session,request参数都可以获得。


6.JSP中静态INCLUDE与静态INCLUDE的辨别?
静态INCLUDE用jsp:include行动实现 <jsp:include page="included.jsp" flush="true" />它老是会查抄所含文件中的转变,适合用于包含静态页面,并且可以带参数。
静态INCLUDE用include伪码实现,不会查抄所含文件的转变,合用于包含静态页面<%@ include file="included.htm" %>


7.设想4个线程,此中两个线程每次对j增加1,别的两个线程对j每次减少1。写出法度。
以下法度利用外部类实现线程,对j增减的时候没有考虑依次问题。
public class ThreadTest1{
private int j;
public static void main(String args[]){
ThreadTest1 tt=new ThreadTest1();
Inc inc=tt.new Inc();
Dec dec=tt.new Dec();
for(int i=0;i<2;i++){
Thread t=new Thread(inc);
t.start();
t=new Thread(dec);
t.start();
}
}
private synchronized void inc(){
j++;
System.out.println(Thread.currentThread().getName()+"-inc:"+j);
}
private synchronized void dec(){
j--;
System.out.println(Thread.currentThread().getName()+"-dec:"+j);
}
class Inc implements Runnable{
public void run(){
for(int i=0;i<100;i++){
inc();
}
}
}
class Dec implements Runnable{
public void run(){
for(int i=0;i<100;i++){
dec();
}
}
}
}


8.编程题: 写一个Singleton出来。
Singleton形式首要感化是包管在Java利用法度中,一个类Class只需一个实例存在。
一般Singleton形式凡是有几各种情势:
第一种情势: 定义一个类,它的机关函数为private的,它有一个static的private的该类变量,在类初始化时实例话,经由过程一个public的getInstance体例获得对它的援引,继而调用此中的体例。
public class Singleton {
private Singleton(){}
   //在本身外部定义本身一个实例,是不是是很奇特?
   //重视这是private 只供外部调用
   private static Singleton instance = new Singleton();
   //这里供应了一个供外部拜候本class的静态体例,可以直接拜候  
   public static Singleton getInstance() {
     return instance;   
   }
}
第二种情势:
public class Singleton {
  private static Singleton instance = null;
  public static synchronized Singleton getInstance() {
  //这个别例比下面有所改进,不消每次都进行天生工具,只是第一次     
  //利用时天生实例,进步了效力!
  if (instance==null)
    instance=new Singleton();
return instance;   }
}
其他情势:
定义一个类,它的机关函数为private的,所有体例为static的。
一般以为第一种情势要更加宁静些


9.编写一个截取字符串的函数,输入为一个字符串和字节数,输入为按字节截取的字符串。 但是要包管汉字不被截半个,如“我ABC”4,应当截为“我AB”,输入“我ABC汉DEF”,6,应当输入为“我ABC”而不是“我ABC+汉的半个”。
 

 

 


Java代码
1.public class SubStringTest {
2.
3. public static void main(String[] args) {
4. String inStr = "我ABC";
5. String str = subString(inStr, 4);
6. System.out.println(str);
7.
8. inStr = "我ABC汉DEF";
9. str = subString(inStr, 6);
10. System.out.println(str);
11. }
12.
13. /**
14. * 字符串按字节截取
15. * @param str 原字符
16. * @param len 截取长度
17. * @return String
18. * @author zheng
19. */
20. public static String subString(String str, int len) {
21. if (str == null || ("").equals(str)) {
22. return "";
23. }
24. byte[] strByte = null;
25. try {
26. strByte = str.getBytes("GBK");
27. } catch (UnsupportedEncodingException e) {
28. e.printStackTrace();
29. }
30. int strLen = strByte.length;
31. if (len >= strLen || len < 1) {
32. return str;
33. }
34. int count = 0;
35. for (int i = 0; i < len; i++) {
36. int value = (int) strByte[i];
37. if (value < 0) {
38. count++;
39. }
40. }
41. if (count % 2 != 0) {
42. len = (len == 1) ? len + 1 : len - 1;
43. }
44.
45. return str.substring(0, len-1);
46. }
47.}

------分开线----------------------------
标签(Tag):Java JAVA实例教程 JAVA根本教程 Java源代码 Java技能
------分开线----------------------------
保举内容
猜你感兴趣