posts - 12,  comments - 2,  trackbacks - 0
1.简述面向对象的概念,继承、封装、和多态.如果有四个

2.简述MVC 模式及对其的理解.

3. 接口可否继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concrete class)?
    接口可以继承接口。
    抽象类可以实现(implements)接口.
    抽象类可以继承具体类(concrete class),但前提是实体必须有明确的构造函数.

4.Java 有没有goto?
   goto 是 java 的保留字,但是没有使用.

5.数组有没有length()这个方法?String 有没有length()这个方法?
    数组有length属性,没有length()方法。
    String 有length()方法,没有length属性.

6.Overload 和Override 的区别. Overloaded的方法是否可以改变返回值的类型?
    方法的重写override和重载overload 是java 多态性的不同表现。
    Override:覆盖,是父类与子类之间多态性的一种表现,如果子类中定义的某方法与父类有相同的名称和参数,我们说该方法被重写
   (overriding).子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。
    Overload:重载,方法的重载,是一个类中的多态性的一种表现.在一个类中定义了多个同名的方法,它们有不同的参数个数或有不同
    参数类型,则车位方法的重载(overloading)
     overloaded方法可以改变返回值的类型

7. ArrayList 、LinkedList和Vector 的区别, HashMap和Hashtable 的区别?
     ArrayList和Vector都是使用数组方式存储数据,它们都允许直接按序号索引元素,但是插入数据要涉及数组元素移动等内存操作.所以读取数据快而插入数据慢.
    一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList 是线程不安全的,不是同步的。
    二.数据增长:当需要增长时,Vector默认增长位原来的一倍,而ArrayList却是原来的一半。
    LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向后后向遍历,但是插入数据的时只需要记录本项的前后项即可,
所有插入速度较快.

    都属于Map接口的类,实现了将唯一键映射到特定的值上.
     1.历史原因:HashMap是基于陈旧的Dictionary类,HashMap是Java 1.2引进的Map接口的一个实现。
     2.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程不安全的,不是同步的。
     3.只有HashMap 可以让你将空值作为一个表的条目的key或是value,它允许一个null键和多个null值,HashMap 类没有分类或者是排序..
        Hashtable 类类似于HashMap,但是不允许null键和null值。
     4.HashMap把Hashtable的contains方法去掉了,改成containvalue和containKey,因为contains方法让人引起误解.

8.构造器Constructor是否可以被override?
构造器constructor不能被继承,因此不能重写overriding,但可以被重载overloading

9.是否可以继承String类
String类是final 类故不可以继承

10.当一个线程进入一个对象的一个synchronized方法后,其它线程可否进入此对象的其它方法?
不能,一个对象的一个synchronized 方法只能有一个线程访问。而其它的用户必须等待,知道该用户完成操作。

11.try{} 里有一个return语句,那么紧跟在这个try后的finally{}里的code 会不会被执行,什么时候被执行,在return前还是后面
 会执行,在return前执行。

12.最有效的方法算出2乘以8等于几?
   2<<3
 根据二进制算,第一位00010向左移3位正好是10000,对应二进制是16.这里的3是指移的位数.

13.有两个对象值相同(x.equals(y)==true),但却可有不同的hash code,这句话对不对?
     不对,有相同的hash code.因为hashcode用的是同一个类的方法,同时其每一个属性值是相等的.

14.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里是值传递
还是引用传递?
   是值传递,Java编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对
该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不是改变的.

15.swtich 是否能作用在byte上,是否能作用在long上,是否能作用在String上?
    switch(exp) exp 是一个整数表达式。因此传递给switch和case语句的参数应该是int,short ,char或者是byte
    不可以是其它类型,因此long,string都不能作用于swtich.

16.Collection和Collections的区别
Collections是java.util下的类,针对集合类的一个帮助类,它提供一些列的静态方法实现对各种集合的搜索、排序、线程安全化等操作。
Collection是java.util下的接口,它是各种集合结构的父接口。List 和Set 都是继承Collection 接口

17.Java 有那些基本数据类型,String是不是基本数据类型,他们有和区别。
String不是基本数据类型,它是一个对象。基本数据类型不是对象,是一个内存值,其类型是int, long,byte,short,boolean,char

18.abstract 的method 是否可同时是static,是否可同时是native,是否可同时是synchronized?
     不可以将abstract与static,native,synchronized任何其中之一合用

19.abstract class和interface 有什么区别
    abstract class 即可以有实现方法,也可以有方法的声明。(虚虚实实)
    类只可以继承一个,不可以继承多个。
    interface 只提供方法的声明,并且所有方法都是抽象的。
    接口中的所有方法都是抽象的,没有一个有程序体。接口值可以定义static final成员变量。

20.给我一个你最常见到的runtime exception
     1.空指针异常 NullPointException。
     2.数组越界异常 
     3.IOException
      4.FileNotFoundException
      5.ClassNotFoundException

21.error和exception有什么区别?
      error表示恢复不是不可能但很困难的情况下的一种严重的问题。比如说内存溢出。不可能指望程序能处理这样的情况
      exception:表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

22.String 是最基本的数据类型吗?
   不是,String是一个对象。

23.char型变量不能定义为一个中文?为什么?
    可以,因为有16位,正好一个中文汉字

24.继承时候类执行的顺序
    先是父类,后是子类

25.&和&&的区别
     &和&&都可以作为逻辑运算“与”使用,但是&&是“短路与”,运算时先判断符号前面表达式的值,如果能够确定整个表达式
的值,则不进行符号后面的表达式的运算。
另外,&也可作为位运算符使用

26.String s=new String("xyz"),创建了几个String Object?
  两个对象,一个是"xyx" ,一个是指向"xyx"的对象引用

27.Math.round(11.5)等于多少,Math.round(-11.5)等于多少?
Math.round(11.5)==12
Math.round(-11.5)==-11


28.sleep()和wait()有什么区别?搞线程的最爱.
sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻
,其它线程可能正在运行而且没有被调度为放弃执行。
除非1.“醒来”的线程具有更高的优先级
        2.正在运行的线程因为其他原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x发初一个wait()调用,该线程会暂停执行,被调用的对象进入等待状态,
直到被唤醒或等待时间到


29.启动一个线程是用run()还是start()?
     启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM 调度并执行.
着并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程.

30.Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?
   set 里的元素是不能重复的,那么用iterator()方法来区分重复与否。

31.多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
     多线程有两种实现方法,分别是继承Thread类与实现Runnable 接口;
     使用Runnable接口的实现类来提供线程体,这是创建线程的基本方式。
     使用直接继承Thread类,重写其中的run()方法并以之作为线程体的方式创建线程.
      两种方式创建线程的区别:
      1.使用Runnable 接口创建线程时可以将CPU,代码和数据分开,形成清晰的模型。线程体run()方法所在的类还可以从其它
       类继承一些有用的属性或者方法,并有利于保持程序的风格的一致性。
       2.使用直接继承thread类创建的线程时,Thread子类无法再从其他类继承,但是这种情况编写简单,run()方法的当前对象
       就是线程对象,可直接操纵。

     同步的实现方法有两种分别是syschronized,wait与notify.

32.String 与StringBuffer 的区别
     String 的长度是不可变的,StringBuffer 的长度是可变的。

33.Jsp中的动态include 和静态的include 的区别。
     动态的include用jsp:include动作实现。
     <jsp:include page ="included.jsp" flush="true" />它总是会检查所含的文件中的变化,适合用于包含动态的页面,并且可以带参数。
    
     静态的include 用include喂马实现,不会检查所含文件的变化,适用于静态页面
      <%@ include file="included.html" %>

34.Servlet API中的forward()与redirect()的区别
   前者

35.通过UML画出你所熟悉的设计模式。

36.开发中都用到了那些设计模式?用在什么场合?
 主要用到了MVC 设计的模式.用来开发JSP/Servlet 或者是J2EE的相关应用
  简单工厂设计模式
  单例模式
  装饰模式IO
  门面模式


37.jsp 的页面跳转
   jsp的页面实现跳转主要有jsp:forward和sendRedirect 两种方法
  jsp:forward:在本容器内跳转。跳转后,地址栏地址不变。效率高,跳转后立即结束本页的内容。
   sendRedirect: 在容器之间跳转,跳转后地址栏的地址为跳转后的地址,效率较低。

38.关键字throw和throws的区别?
可以利用throw关键字自己抛出异常
Throws一般在定义函数的时候使用,表明函数被调用的时候要抛出异常

39.名词解释:EJB JNDI RMI 
EJB (Enterprise Java Bean ,企业级的JavaBean) J2EE体系中核心的技术是EJB,提供了一个框架来开发分布式商务逻辑,显著地
简化了具有可伸缩性和高度复杂的企业级应用的开发。

JNDI (Java Naming and Directory Interface,java命名和目录接口) JNDI用于名字和目录服务,提供了一致的接口来存取和操作企业级的资源
,如DNS(Domain Name Service)和本地文件系统。

RMI(Remote Method Invocation ,远程方法调用)RMI是在远程的对象上调用的一些方法,使用了连续的方式在客户端和服务器端传递数据,
RMI 是EJB技术基础。

40.Swing中组件布局有哪几种方式? 
 常用的布局管理器有下面几种方式
 FlowLayout ,GridLayout,BorderLayout,CardLayout,GridBagLayout 

41. 多线程有那些状态?

42.简述Java语言的核心机制
Java 语言包括三种核心机制:Java虚拟机、垃圾收集机制和代码安全检测.
1.Java 虚拟机(Java Virtual Machine ,JVM) 
在一台计算机上由软件或硬件模拟的计算机. Java虚拟机读取并处理经过编译过的平台无关的字节码class文件.
2.垃圾收集机制(Garbage collection)
在C/C++等语言中,有程序员负责回收无用内存。Java 语言解除了程序员回收无用的内存空间的责任。它提供一种系统级线程跟踪
存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储器空间。垃圾收集在Java程序运行过程中自动进行,程序员
无法精确控制和干预.
3.代码安全性检测(Code Security)
Java执行代码的时候,有JVM对运行的代码进行安全性检测,当进行一些非法操作的时候,比如修改一些系统的设置的时候,
JVM会发出警告.

43.设计模式:对抽象工厂模式的理解.

44.对O/R MAPPING的理解.

45.对Ajax 的理解及应用.

46.运用JavaScript ,写一个类,类名:student ,他的属性:name ,age,tall,他的方法:getname,getAge,getTall 要突出Javascript 的oop思想.

47.写一个XML 文件
格式如下:
<student>
<name>11</name>
<age>33</age>
</studnet>
使用Java 语言,遍历所有节点,然后在页面上输出。

48.如何获得客户端的IP地址?
利用request 对象可以获得客户提交的信息,比如:jsp文件目录,客户端的地址,以及服务器的端口等。
 <BR>获取客户的Ip地址
<% String ip=request.getRemoteAddr();
out.println(ip);%>

49.构造函数有什么作用?简述重载构造函数的好处。
构造函数也叫构造方法,是java类中的一种特俗的方法,其功能是创建其所属类型的一个新的对象。
声明构造方法的语法规则如下:
<modifiers> <class_name> ([argu_list]){
[<statements>]
}
构造方法的特点是:没有返回值类型,方法名必须取和所属类相同的名字。
在定义Java类的时候,可以定义一个或者是多个构造方法,通常在构造方法中进行一些初始化工作。

50.application 对象有什么特点?和sesion 对象有什么联系和区别?
站点所有的用户公用一个application对象,当站点服务器开启的时候,applicaiton就被创建,直到网站关闭
可以使用Session对象储存用户登陆网站时候的信息。当用户在页面之间跳转时,储存在Session对象中的变量
不会被清除。
联系是:数据都存储在服务器端,而且都可以保留一段时间。
区别是:每个用户有一个session,但是application是共有的

51.简述Servlet 的生命周期?
 Servlet运行机制和Applet类似,Servlet是在服务器端运行的,但是Applet是在客户端运行的。Servlet是 javax.servlet包中的
HttpServlet类的子类,由服务器完成该子类的创建和初始化。
Servlet的生命周期主要有3个过程组成。
1.init(),服务器初始化Servlet
2.service()方法:初始化完毕,Servlet对象调用该方法响应客户的请求。
3.destroy()方法:调用该方法消灭Servlet对象。
其中,init()方法只在Servlet第一次被请求加载的时候被调用一次,当有客户再请求Servlet服务时,Web服务器将启动一个新的线程,
在该线程中,调用Service方法相应客户的请求。

52.




 





      
   
    

答题时间20分钟
1.
System.out.println(1+’\002’)会打印出多少? _________
System.out.println(1+2+”3”)会打印出多少? _________

2. 请简单补充完下面jdbc读取数据的实现
String SQL = “SELECT id , title, description FROM t_blog WHERE id = ?”;
long id;
String title;
String description;
Connection conn = null;//假设用ConnectionManager.getConnection();可以获得连接对象
PrepareStatement pstmt = null;




如果description字段在数据库中是text类型,而且存储的文字比较多(20K左右),这时候该如何优化读取,让系统支撑更大的并发?


3. 有一篇文章的URL为 view.jsp?id=100 ,每分钟访问量可能上千次,在记录和显示它的查看次数时,你觉得如何做性能比较好?


4. 写出你最常见到的一些运行时异常(runtime exception),再简述一下你是如何避免java 中空指针异常的

5. 你用lucene做过全文检索吗? 简单描述一下你的经验。

6. 简述一下你对GC的理解,以及如何避免内存泄露。

7. 要求最后打印出的全部是数字,下面的程序满足要求吗?还可以再优化吗?请简单描述。
String strA = “1:2:3:4:5:6:7:8:9:10:”;
String arrA[] = strA.split(“:”);
for(int i=0;i<arrA.length;i++)
{
System.out.println(arrA[i]);
}


8. 简述一下javascript/dhtml/css/ajax在你以前项目中的应用程度;熟悉跨浏览器兼容javascript/css吗? 有兴趣对它们进行深入研究吗?


9. 你最熟悉Web开发过程中的哪部分?
posted on 2008-05-09 16:37 doodoosun 阅读(1052) 评论(0)  编辑  收藏 所属分类: Java 面试题

只有注册用户登录后才能发表评论。


网站导航:
 

<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(1)

随笔分类(6)

随笔档案(11)

文章分类(30)

文章档案(34)

搜索

  •  

最新评论

阅读排行榜

评论排行榜