中软国际Java笔试题_第1页
中软国际Java笔试题_第2页
中软国际Java笔试题_第3页
中软国际Java笔试题_第4页
中软国际Java笔试题_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java程序员笔试题1.谈谈final,finally,finalize的区别。final 一修饰符(关键字)如果一个类被声明为 final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract 的,又被声明为 final 的。将变量或方法声明为巾 nal,可以保证它们在使用中不被改变。被声明为 final 的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为 final 的方法也同样只能使用,不能重载。2.AnonymousInnerClass(匿名内部类)是否可以extends潍承) 其它类, 是否可以implements(实现)

2、interface(接口)?3.StaticNestedClass和InnerClass的不同,说得越多越好(面试题有的很笼统)。finally再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)finalize 一方法名。Java 技术允许使用 finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize()方法以

3、整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。4.&和&的区别。&是两个数相与,是运算符&是连接两个条件表达式的,两个条件表达式都为真时,整个才为真5.HashMap和Hashtable的区别。1 HashMap 不是线程安全的hastmap 是一个接口是 map 接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap 允许 nullkey 和 nullvalue,而 hashtable 不允许。2 HashTable 是线程安全的一个 Collection。HashMap 是 Has

4、htable 的轻量级实现(非线程安全的实现),他们都完成了 Map 接口,主要区别在于HashMap 允许空(null)键值(key),由于非线程安全,效率上可能高于 Hashtable。HashMap 允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。HashMap 把 Hashtable 的 contains 方法去掉了,改成 containsvalue 和 containsKey。因为 contains方法容易让人引起误解。Hashtable 继承自 Dictionary 类,而 HashMap 是 Java1.2 引进的 Mapin

5、terface 的一个实现。最大的不同是,Hashtable 的方法是 Synchronize 的,而 HashMap 不是,在多个线程访问 Hashtable时,不需要自己为它的方法实现同步,而 HashMap 就必须为之提供外同步。Hashtable 和 HashMap 采用的 hash/rehash 算法都大概一样,所以性能不会有很大的差异。6 .Collection和Collections的区别。Collection 和 Collections 的区别。Collections 是个 java.util 下的类,它包含有各种有关集合操作的静态方法。Collection 是个 java.u

6、til 下的接口,它是各种集合结构的父接口。List,Set,Map 是否继承自 Collection 接口?List,Set 是 Map 不是ArrayList 和 Vector 的区别。一 .同步性:Vector 是线程安全的,也就是说是同步的,而 ArrayList 是线程序不安全的,不是同步的二 .数据增长:当需要增长时,Vector 默认增长为原来一培,而 ArrayList 却是原来的一半7.什么时候用assertassertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion 就是在程序中的一条语句,它对一个 boolean

7、表达式进行检查,一个正确程序必须保证这个 boolean 表达式的值为 true;如果该值为false,说明程序已经处于不正确的状态下, 系统将给出警告或退出。 一般来说, assertion用于保证程序最基本、关键的正确性。assertion 检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion 检查通常是关闭的。8 .GC是什么?为什么要有GC?9.Strings=newString(xyz);创建了几个StringObject?10.Math.round(11.5)等於多少?Math.round(-11.5)等於多少?11.shorts1=1;s1=s1+1;有什么

8、错?shorts1=1;s1+=1;有什么错?是报错为可能损失精度吗?呵呵, 这个问题的原因就是所有声明为 short 的类型变量在进行运算时都会自动转为 int 类型的变量,这样 s1+1 就不是 short 型的,而变成 int 类型的,这时再赋给还是 short 类型的 s1 就会报精度损失错误了,这样改下就不会报错了s1=(short)(s1+1),试试看!12.sleep()和wait()有什么区别?sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用 sleep 不会释放对象锁。wait是 Obj

9、ect 类的方法,对此对象调用 wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出 notify 方法(或 notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。13.数组有没有length()这个方法?String有没有length()这个方法?1、数组有没有 length()这个方法?String 有没有 length()这个方法?数组没有 length()这个方法,有 length 的属性。String 有有 length()这个方法。2、是否可以继承 String 类?String 类是 final 类故不可以继承。3、final,fi

10、nally,finalize 的区别。final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。finally 是异常处理语句结构的一部分,表示总是执行。finalize 是 Object 类的一个方法, 在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。14.Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?overload 一般翻译为重载,表示多个函数共用同一个函数名,为了保证调用这些同名函数时能正确区分究竟应该调用的是其中的哪一个,重载的各个函数的参数表(不考虑形

11、参名)必须彼此不同,通常简略地说成不同参数表”。它对返回值的类型没有任何要求,所以你可以随意为每一个重载的函数设置返回类型,相同也行,不同也行。override 一般翻译为覆盖, 表示子类对从父类继承来的虚函数重新定义, 它要求参数表必须跟父类中被覆盖的那个函数的参数表完全相同,返回值类型原则上也要求相同,但如果返回类型是父类的指针或者父类的引用,覆盖时返回类型允许是子类的指针或者子类的引用。15.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用=还是equals()?它们有何区别?1、什么是 Set?(what)Set 是 Collection 容器的一个子接口,它不允许出现

12、重复元素,当然也只允许有一个 null 对象。2、如何来区分重复与否呢?(how)“用 iterator()方法来区分重复与否”,这是在网上流传的答案,个人认为这是个错误的答案。JPI 中写的很明白:“set 不包含满足e1.equals(e2)的元素对e1和e2”,由此可见回答使用 equals()区分更合适。3、为什么用 equals()而不用=来区分?(why)应该从它俩的区别谈起,=是用来判断两者是否是同一对象(同一事物),而 equals 是用来判断是否引用同一个对象。再看一下 Set 里面存的是对象,还是对象白引用。根据 java 的存储机制可知,set 里面存放的是对象的引用,所

13、以当两个元素只要满足了 equals()时就已经指向同一个对象,也就出现了重复元素。所以应该用 equals()来判断。16.给我一个你最常见到的runtimeexception。ArithmeticException,ArrayStoreException,BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException,CMMException,ConcurrentModificationException,DOMException,Empt

14、yStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,ImagingOpException,IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException,NoSuchElementException,NullPointerException,ProfileDataException,ProviderException,Ra

15、sterFORMatException,SecurityException,SystemException,UndeclaredThrowableException,UnmodifiableSetException,UnsupportedOperationException17 .error和exception有什么区别Error(错误)表示系统级的错误和程序不必处理的异常,是 java 运行环境中的内部错误或者硬件问题,比如,内存资源不足等,对于这种错误,程序基本无能为力,除了退出运行外别无选择。Exception(违例)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而

16、引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。18 .List,Set,Map是否继承自Collection接口19 .abstractclass和interface有什么区别?1 .相同点A.两者都是抽象类,都不能实例化。8.interface 实现类及 abstrctclass 的子类都必须要实现已经声明的抽象方法。2 .不同点A.interface 需要实现,要用 implements,而 abstractclass 需要继承,要用 extends。B.一个类可以实现多个 interface,但一个类只能继承一个 abstractclass。C. interface 强调

17、特定功能的实现,而 abstractclass 强调所属关系。D.尽管 interface 实现类及 abstrctclass 的子类都必须要实现相应的抽象方法,但实现的形式不同。interface 中的每一个方法都是抽象方法,都只是声明的(declaration,没有方法体),实现类必须要实现。而 abstractclass 的子类可以有选择地实现。这个选择有两点含义:一是 Abastractclass 中并非所有的方法都是抽象的,只有那些冠有 abstract 的方法才是抽象的,子类必须实现。那些没有 abstract 的方法,在 Abstrctclass 中必须定义方法体。二是 abst

18、ractclass 的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法,可以选择实现,也可以通过再次声明其方法为抽象的方式,无需实现,留给其子类来实现,但此类必须也声明为抽象类。既是抽象类,当然也不能实例化。E.abstractclass 是 interface 与 Class 的中介。interface 是完全抽象的,只能声明方法,而且只能声明 pulic 的方法,不能声明 private 及 protected 的方法,不能定义方法体,也不能声明实例变量。然而,interface 去口可以声明常量变量,并且在 JDK 中不难找出这种例子。但将常量变量放在 interfa

19、ce 中违背了其作为接口的作用而存在的宗旨,也混淆了 interface 与类的不同价值。如果的确需要,可以将其放在相应的 abstractclass 或 Class 中。abstractclass 在 interface 及 Class 中起到了承上启下的作用。一方面,abstractclass 是抽象的,可以声明抽象方法,以规范子类必须实现的功能;另一方面,它又可以定义缺省的方法体,供子类直接使用或覆盖。另外,它还可以定义自己的实例变量,以供子类通过继承来使用。3 .interface 的应用场合A.类与类之前需要特定的接口进行协调,而不在乎其如何实现。B.作为能够实现特定功能的标识存在,

20、也可以是什么接口方法都没有的纯粹标识。C.需要将一组类视为单一的类,而调用者只通过接口来与这组类发生联系。D.需要实现特定的多项功能,而这些功能之间可能完全没有任何联系。4 .abstractclass 的应用场合一句话,在既需要统一的接口,又需要实例变量或缺省的方法的情况下,就可以使用它。最常见的有:A.定义了一组接口,但又不想强迫每个实现类都必须实现所有的接口。可以用 abstractclass 定义一组方法体,甚至可以是空方法体,然后由子类选择自己所感兴趣的方法来覆盖。B.某些场合下,只靠纯粹的接口不能满足类与类之间的协调,还必需类中表示状态的变量来区别不同的关系。abstract 的中介作用可以很好地满足这一点。C.规范了一组相互协调的方法,其中一些方法是共同的,与状态无关的,可以共享的,无需子类分别实现;而另一些方法却需要各个子类根据自己特定的状态来实现特定的功能20.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concreteclass)?接口可以继承接口。抽象类可以实现(implements)(i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论