java 学习心得体会(一)

1.    数组有没有length()这个方法? String有没有length()这个方法?java

        答:数组没有length()这个方法,有length的属性。程序员

        String有length()这个方法。web

2.     String s = new String("xyz");建立了几个String Object?算法

        答:两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。数据库

3.     abstract class和interface有什么区别?编程

        答:声明方法的存在而不去实现它的类被叫作抽象类(abstract class),它用于要建立一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的状况。不能建立abstract 类的实例。然而能够建立一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的全部抽象方法提供实现,不然它们也是抽象类。取而代之,在子类中实现该方法。知道其行为的其它类能够在类中实现这些方法。设计模式

        接口(interface)是抽象类的变体。在接口中,全部方法都是抽象的。多继承性可经过实现这样的接口而得到。接口中的全部方法都是抽象的,没有一个 有程序体。接口只能够定义static final成员变量。接口的实现与子类类似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)全部这种接口的方法。 而后,它能够在实现了该接口的类的任何对象上调用接口的方法。因为有抽象类,它容许使用接口名做为引用变量的类型。一般的动态联编将生效。引用能够转换到 接口类型或从接口类型转换,instanceof 运算符能够用来决定某对象的类是否实现了接口.数组

4.     ==和equals的区别?浏览器

        答:==用于判断两个引用变量是否指向同一个对象实例.安全

        equals用于判断两个值是否相等.

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

        答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。

        equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

6.  接口与抽象类的区别

        答: 抽象类中的非抽象方法能够不被子类覆盖,可是接口中的全部方法必须被子类实现

         抽象类和子类之间是一种父子关系,如A是B;但接口和实现类之间没有明显的父子关系,而是一种功能性的关系。如A具备B的功能。

7. 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

        答:接口能够继承接口。抽象类能够实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

8. java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?

        答: 字节流,字符流。字节流继承于InputStream \ OutputStream,字符流继承于InputStreamReader \ OutputStreamWriter。在java.io包中还有许多其余的流,主要是为了提升性能和使用方便。

9. 基本数据类型间的转换

        答: byte->short->int->long->float->double

         char->int

         详细见<<java核心技术第一卷V6>>

10.  String是最基本的数据类型吗?

        答:基本数据类型包括byte、int、char、long、float、double、boolean和short。

        java.lang.String类是final类型的,所以不能够继承这个类、不能修改这个类。为了提升效率节省空间,咱们应该用StringBuffer类。

11.  int 和 Integer 有什么区别

        答:Java 提供两种不一样的类型:引用类型和原始类型(或内置类型)。int是java的原始数据类型,Integer是java为int提供的封装类。Java为每一个原始类型提供了封装类。

原始类型封装类

booleanBoolean

charCharacter

byteByte

shortShort

intInteger

longLong

floatFloat

doubleDouble

引用类型和原始类型的行为彻底不一样,而且它们具备不一样的语义。引用类型和原始类型具备不一样的特征和用法,它们包括:大小和速度问题,这种类型以哪一种 类型的数据结构存储,当引用类型和原始类型用做某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。

12.  String 和StringBuffer的区别

        答:JAVA平台提供了两个类:String和StringBuffer,它们能够储存和操做字符串,即包含多个字符的字符数据。这个String类提供 了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可使用StringBuffer。 典型地,你可使用StringBuffers来动态构造字符数据。

13.  JSP的内置对象和JSP的标记

        答:9种内置对象

        request,response,pageContext,session,application,out,config,page,exception

14.  JSP的内置对象及方法。

        答:request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,而且提供了几个用于获取cookie, header, 和session数据的有用的方法。

         response表示HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)

         out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。

         pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各类范围的名字空间、servlet相关的对象的API,而且包装了通用的servlet相关功能的方法。

         session表示一个请求的javax.servlet.http.HttpSession对象。Session能够存贮用户的状态信息

         applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息

         config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。

         page表示从该页面产生的一个servlet实例

15.    JSP中页面转向的两种方式,他们的区别

          答: response.sendRedirect()和<jsp:forward>,前者不转发请求,后者转发请求

16.    对MVC的理解

         答:MVC是一种设计模式,分别是模型(model),视图(view),控制(controler)的简称。

         在java B/S结构的应用中,咱们在数据模型用javaBean表示,用jsp处理用户视图,经过控制不一样jsp页面的调用和请求转发

17.   介绍MVC模式,在什么状况下采起MVC模式?MVC模式的优势是什么?

        答: MVC是一种设计模式,分别是模型(model),视图(view),控制(controler)的简称。

        在java B/S结构的应用中,咱们在数据模型用javaBean表示,用jsp处理用户视图,经过控制不一样jsp页面的调用和请求转发。

在大中型项目中均可采用MVC。

优势:

         将model和view进行了分离,可以使网页设计师和程序员可以独立工做。

         组件能够增长程序的重用性,增长网站功能扩充的弹性

18.  MVC的各个部分都有那些技术来实现?如何实现?

        答:MVC是Model-View-Controller的简写。"Model" 表明的是应用的业务逻辑(经过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(通常是一个Servlet),经过这种设计模型把应用逻辑,处理过程和显示逻辑分红不一样的组件实现。这些组件能够进行交互和重 用。

19.  静态方法与静态变量的使用

        静态方法能够经过类名直接访问,静态变量在同一类的不一样的实例之间共享。

20.  Static Nested Class 和 Inner Class的不一样。

        Static Nested Class是被声明为静态(static)的内部类,它能够不依赖于外部类实例被实例化。而一般的内部类须要在外部类实例化后才能实例化。

21.  Collection 和 Collections的区别。

        Collection是集合类的上级接口,继承与他的接口主要有Set 和List.。Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各类集合的搜索、排序、线程安全化等操做。

22.  JSP中动态INCLUDE与静态INCLUDE的区别?

        动态INCLUDE用jsp:include动做实现 <jsp:include page="included.jsp" flush="true" />它老是会检查所含文件中的变化,适合用于包含动态页面,而且能够带参数。

        静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>

23.  静态变量和实例变量的区别?

        static i = 10; //常量

        class A a;  a.i =10;//可变

24.  finally子句的执行时间

        都会执行,除非在前面出现system.exit(0)

25.  谈谈final, finally, finalize的区别。

        final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

        finally是异常处理语句结构的一部分,表示老是执行。

        finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,能够覆盖此方法提供垃圾收集时的其余资源回收,例如关闭文件等。

26.  try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,何时被执行,在return前仍是后?   

        会执行,在return前执行。

27.  JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别表明什么意义?在try块中能够抛出异常吗?

        Java经过面向对象的方法进行异常处理,把各类不一样的异常进行分类,并提供了良好的接口。在Java中,每一个异常都是一个对象,它是Throwable 类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法能够捕获到这个异常并进行处理。Java的异 常处理是经过5个关键词来实现的:try、catch、throw、throws和finally。通常状况下是用try来执行一段程序,若是出现异常, 系统会抛出(throws)一个异常,这时候你能够经过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。

        用try来指定一块预防全部"异常"的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。

        throw语句用来明确地抛出一个"异常"。

        throws用来标明一个成员函数可能抛出的各类"异常"。

        Finally为确保一段代码无论发生什么"异常"都被执行一段代码。

        能够在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另外一个try语句保护其余代码。每当遇到一个try语句,"异常"的框架就放到堆栈 上面,直到全部的try语句都完成。若是下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有处理这种"异常"的try语句。

28.  对数据库进行操做时忽然中断,如何保证数据的完整

        用事务保证

29.  public、protected、private的做用范围

        public    自已 子类 包内 其它

protect  自已  子类 包内

缺省   本身    包内

private   自已

30.  说出Servlet的生命周期,并说出Servlet和CGI的区别。

        Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。

        与cgi的区别在于servlet处于服务器进程中,它经过多线程方式运行其service方法,一个实例能够服务于多个请求,而且其实例通常不会销毁,而CGI对每一个请求都产生新的进程,服务完成后就销毁,因此效率上低于servlet。

31.如何现实servlet的单线程模式

        <%@ page isThreadSafe="false"%>

32.  servlet的生命周期

        web容器加载servlet,生命周期开始。经过调用servlet的init()方法进行servlet的初始化。经过调用service()方法实 现,根据请求的不一样调用不一样的do***()方法。结束服务,web容器调用servlet的destroy()方法。

33.  cookies和session的区别

   cookies数据写在客户端。session的数据写在服务器上,且在同一客户的不一样页面间共享

34. JSP中链接数据库的方法

1)直接和应用程序同样经过jdbc链接

         2)经过链接池链接

35.  多线程的暂停与启动

        线程的暂停的方法已经废弃,但能够用一个boolean值使线程空转,从而达到暂停的目的。

若是要从暂停到运行,则改变该boolean值。

36.多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

        多线程有两种实现方法,分别是继承Thread类与实现Runnable接口

        同步的实现方面有两种,分别是synchronized,wait与notify

37.线程的基本概念、线程的基本状态以及状态之间的关系

        线程指在程序执行过程当中,可以执行程序代码的一个执行单位,每一个程序至少都有一个线程,也就是程序自己。

        Java中的线程有四种状态分别是:运行、就绪、挂起、结束。

38.  JavaBean的定义

         javaBean是一种可重复使用、且跨平台的软件组件。分为两种:一种是图形javaBean,另外一种是非图形javaBean。

     一般javaBean是一个public类,且必须有一个无参数的构造函数,具备getXXX和setXXX 方法。

39.   程序流程控制语句   

if ...else

    for

    switch case

    while

    do ...while

 

40.  &和&&的区别

        &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。

41.   HashMap和Hashtable的区别。

        HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap容许空(null)键值(key),因为非线程安全,效率上可能高于Hashtable。

        HashMap容许将null做为一个entry的key或者value,而Hashtable不容许。

        HashMap把Hashtable的contains方法去掉了,改为containsvalue和containsKey。由于contains方法容易让人引发误解。

        Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。

        最大的不一样是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不须要本身为它的方法实现同步,而HashMap 就必须为之提供外同步。

        Hashtable和HashMap采用的hash/rehash算法都大概同样,因此性能不会有很大的差别。

42.  sleep() 和 wait() 有什么区别?

        sleep是线程类(Thread)的方法,致使此线程暂停执行指定时间,给执行机会给其余线程,可是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。

        wait是Object类的方法,对此对象调用wait方法致使本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备得到对象锁进入运行状态。

 

43.  Anonymous Inner Class (匿名内部类) 是否能够extends(继承)其它类,是否能够implements(实现)interface(接口)?    

        能够继承其余类或完成其余接口,在swing编程中经常使用此方式。

44.  内部类能够引用他包含类的成员吗?有没有什么限制?

        一个内部类对象能够访问建立它的外部类对象的内容

45.一个".java"源文件中是否能够包括多个类(不是内部类)?有什么限制?

        能够。必须只有一个类名与文件名相同。

46.  Java有没有goto?

        java中的保留字,如今没有在java中使用。

47.  error和exception有什么区别?

        error 表示恢复不是不可能但很困难的状况下的一种严重问题。好比说内存溢出。不可能期望程序能处理这样的状况。exception 表示一种设计或实现问题。也就是说,它表示若是程序运行正常,从不会发生的状况。

48.  给我一个你最多见到的runtime exception。

ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

49.  Java中的异常处理机制的简单原理和应用。

        当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种状况。一种是JAVA类库内置的语义检 查。例如数组下标越界,会引起IndexOutOfBoundsException;访问null的对象时会引起 NullPointerException。另外一种状况就是JAVA容许程序员扩展这种语义检查,程序员能够建立本身的异常,并自由选择在什么时候用 throw关键字引起异常。全部的异常都是java.lang.Thowable的子类。

50.  List, Set, Map是否继承自Collection接口?  

        List,Set是;Map不是

 

51.  abstract的method是否可同时是static,是否可同时是 native ,是否可同时是synchronized?    

         都不能

52.  启动一个线程是用run()仍是start()?

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

53.是否能够继承String类? 

         String类是final类故不能够继承。

54.   当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?   

        不能,一个对象的一个synchronized方法只能由一个线程访问。

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

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

        主要不一样点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock必定要求程序员手工释放,而且必须在finally从句中释放。

56.  abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

         都不能

57.  两个对象值相同(x.equals(y) == true),但却可有不一样的hash code,这句话对不对?

        不对,有相同的hash code。

58.  当一个对象被看成参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里究竟是值传递仍是引用传递?

        是值传递。Java 编程语言只由值传递参数。当一个对象实例做为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容能够在被调用的方法中改变,但对象的引用是永远不会改变的。

59.  说出ArrayList,Vector, LinkedList的存储性能和特性

        ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增长和插入元素,它们都容许直接按序号索引元素,可是插 入元素要涉及数组元素移动等内存操做,因此索引数据快而插入数据慢,Vector因为使用了synchronized方法(线程安全),一般性能上较 ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据须要进行前向或后向遍历,可是插入数据时只须要记录本项的先后项即 可,因此插入速度较快。

60.  你所知道的集合类都有哪些?主要方法?

        最经常使用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操做任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。

        Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称做"键"和"值"),其中每一个键映射到一个值。

61.  运行时异常与通常异常有何异同?

        异常表示程序运行过程当中可能出现的非正常状态,运行时异常表示虚拟机的一般操做中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,可是并不要求必须声明抛出未被捕获的运行时异常。

62.  EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。

        EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现。

        SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操做,例如访问数据库、调用其余EJB组件。EntityBean被用来表明应用系统中用到的数据。

        对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。

        对于客户机,EntityBean是一种持久性对象,它表明一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。

Session Bean 还能够再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean均可以将系统逻辑放在 method之中执行,不一样的是 Stateful Session Bean 能够记录呼叫者的状态,所以一般来讲,一个使用者会有一个相对应的 Stateful Session Bean 的实体。Stateless Session Bean 虽然也是逻辑组件,可是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method。换言之,极可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优点却在于他能够维持使用者的状态。

63.  EJB与JAVA BEAN的区别?

        Java Bean 是可复用的组件,对Java Bean并无严格的规范,理论上讲,任何一个Java类均可以是一个Bean。但一般状况下,因为Java Bean是被容器所建立(如Tomcat)的,因此Java Bean应具备一个无参的构造器,另外,一般Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上至关于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 至关于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,因此EJB能够被远程访问(跨进程、跨计算机)。但EJB必须被布署在 诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是经过其容器访问。EJB容器是EJB组件的代 理,EJB组件由容器所建立和管理。客户经过容器来访问真正的EJB组件。

64.  EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?

        SessionBean:Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要创建一个Bean的实例时,EJB容器不必定要建立一个新的Bean的实例供客户机调用,而是随便找一个现 有的实例提供给客户机。当客户机第一次调用一个Stateful Session Bean 时,容器必须当即在服务器中建立一个新的Bean实例,并关联到客户机上,之后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例。

        EntityBean:Entity Beans能存活相对较长的时间,而且状态是持续的。只要数据库中的数据存在,Entity beans就一直存活。而不是按照应用程序或者服务进程来讲的。即便EJB容器崩溃了,Entity beans也是存活的。Entity Beans生命周期可以被容器或者 Beans本身管理。

        EJB经过如下技术管理实务:对象管理组织(OMG)的对象实务服务(OTS),Sun Microsystems的Transaction Service(JTS)、Java Transaction API(JTA),开发组(X/Open)的XA接口。

65.  EJB的角色和三个对象

        一个完整的基于EJB的分布式计算结构由六个角色组成,这六个角色能够由不一样的开发商提供,每一个角色所做的工做必须遵循Sun公司提供的EJB规范,以保 证彼此之间的兼容性。这六个角色分别是EJB组件开发者(Enterprise Bean Provider) 、应用组合者(Application Assembler)、部署者(Deployer)、EJB 服务器提供者(EJB Server Provider)、EJB 容器提供者(EJB Container Provider)、系统管理员(System Administrator)

        三个对象是Remote(Local)接口、Home(LocalHome)接口,Bean类

相关文章
相关标签/搜索