中软国际Java程序员笔试题及答案.docx
- 文档编号:25160625
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:11
- 大小:115.65KB
中软国际Java程序员笔试题及答案.docx
《中软国际Java程序员笔试题及答案.docx》由会员分享,可在线阅读,更多相关《中软国际Java程序员笔试题及答案.docx(11页珍藏版)》请在冰豆网上搜索。
中软国际Java程序员笔试题及答案
4、&和&&的区别。
&是两个数相与,是位运算符
&&是布尔逻辑运算符,连接两个条件表达式的,两个条件表达式都为真时,整个才为真
5、HashMap和Hashtable的区别。
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap类没有分类或者排序。
它允许一个null键和多个null值。
Hashtable类似于HashMap,但是不允许null键和null值。
它也比HashMap慢,因为它是同步的,是线程安全的。
6、Collection和Collections的区别。
Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。
Collection是个java.util下的接口,它是各种集合结构的父接口。
7、List,Set,Map是否继承自Collection接口?
List,Set是Map不是
8、ArrayList和Vector的区别。
1>同步性:
Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的2>数据增长:
当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
9、什么时候用assert。
assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。
在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。
一般来说,assertion用于保证程序最基本、关键的正确性。
assertion检查通常在开发和测试时开启。
为了提高性能,在软件发布后,assertion检查通常是关闭的。
10、GC是什么?
为什么要有GC?
GC是垃圾收集器。
Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。
要请求垃圾收集,可以调用下面的方法之一:
1.System.gc()
2.
3.Runtime.getRuntime().gc()
11、Strings=newString("xyz");创建了几个StringObject?
两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s
12、.Math.round(11.5)等於多少?
Math.round(-11.5)等於多少?
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;因为返回最接近参数的long。
通过加上1/2将该结果舍入为整数,取结果的基数并将其强制转换为long类型。
换句话说,结果等于以下表达式的值:
(long)Math.floor(a+0.5d)
13、shorts1=1;s1=s1+1;有什么错?
shorts1=1;s1+=1;有什么错?
shorts1=1;s1=s1+1;错,shorts1=1;s1+=1;对。
对于shorts1=1;s1=s1+1;由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。
对于shorts1=1;s1+=1;由于+=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
14、sleep()和wait()有什么区别?
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。
调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
15、数组有没有length()这个方法?
String有没有length()这个方法?
数组没有length()这个方法,有length的属性。
String有有length()这个方法。
16、是否可以继承String类?
String类是final类故不可以继承。
17、Overload和Override的区别。
Overloaded的方法是否可以改变返回值的类型?
overload一般翻译为重载,表示多个函数共用同一个函数名,为了保证调用这些同名函数时能正确区分究竟应该调用的是其中的哪一个,重载的各个函数的参数表(不考虑形参名)必须彼此不同,通常简略地说成“不同参数表”。
它对返回值的类型没有任何要求,所以你可以随意为每一个重载的函数设置返回类型,相同也行,不同也行。
override一般翻译为覆盖,表示子类对从父类继承来的虚函数重新定义,它要求参数表必须跟父类中被覆盖的那个函数的参数表完全相同,返回值类型原则上也要求相同,但如果返回类型是父类的指针或者父类的引用,覆盖时返回类型允许是子类的指针或者子类的引用。
18、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
是用==还是equals()?
它们有何区别?
Set是Collection容器的一个子接口,它不允许出现重复元素,当然也只允许有一个null对象。
equals()区分更合适。
为什么用equals()而不用==来区分?
应该从它俩的区别谈起,==是用来判断两者是否是同一对象(同一事物),而equals是用来判断是否引用同一个对象。
再看一下Set里面存的是对象,还是对象的引用。
根据java的存储机制可知,set里面存放的是对象的引用,所以当两个元素只要满足了equals()时就已经指向同一个对象,也就出现了重复元素。
所以应该用equals()来判断。
19、给我一个你最常见到的runtimeexception。
1.ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,
2.
3.ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFORMatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
20、error和exception有什么区别?
Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题,比如,内存资源不足等,对于这种错误,程序基本无能为力,除了退出运行外别无选择。
Exception(违例)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。
21、abstractclass和interface有什么区别?
1>.相同点
A.两者都是抽象类,都不能实例化。
B.interface实现类及abstrctclass的子类都必须要实现已经声明的抽象方法。
2.>不同点
A.interface需要实现,要用implements,而abstractclass需要继承,要用extends。
B.一个类可以实现多个interface,但一个类只能继承一个abstractclass。
C.interface强调特定功能的实现,而abstractclass强调所属关系。
D.尽管interface实现类及abstrctclass的子类都必须要实现相应的抽象方法,但实现的形式不同。
interface中的每一个方法都是抽象方法,都只是声明的(declaration,没有方法体),实现类必须要实现。
而abstractclass的子类可以有选择地实现。
这个选择有两点含义:
一是Abastractclass中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子类必须实现。
那些没有abstract的方法,在Abstrctclass中必须定义方法体。
二是abstractclass的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法,可以选择实现,也可以通过再次声明其方法为抽象的方式,无需实现,留给其子类来实现,但此类必须也声明为抽象类。
既是抽象类,当然也不能实例化。
E.abstractclass是interface与Class的中介。
interface是完全抽象的,只能声明方法,而且只能声明pulic的方法,不能声明private及protected的方法,不能定义方法体,也不能声明实例变量。
然而,interface却可以声明常量变量,并且在JDK中不难找出这种例子。
但将常量变量放在interface中违背了其作为接口的作用而存在的宗旨,也混淆了interface与类的不同价值。
如果的确需要,可以将其放在相应的abstractclass或Class中。
abstractclass在interface及Class中起到了承上启下的作用。
一方面,abstractclass是抽象的,可以声明抽象方法,以规范子类必须实现的功能;另一方面,它又可以定义缺省的方法体,供子类直接使用或覆盖。
另外,它还可以定义自己的实例变量,以供子类通过继承来使用。
3>.interface的应用场合
A.类与类之前需要特定的接口进行协调,而不在乎其如何实现。
B.作为能够实现特定功能的标识存在,也可以是什么接口方法都没有的纯粹标识。
C.需要将一组类视为单一的类,而调用者只通过接口来与这组类发生联系。
D.需要实现特定的多项功能,而这些功能之间可能完全没有任何联系。
4>、abstractclass的应用场合
一句话,在既需要统一的接口,又需要实例变量或缺省的方法的情况下,就可以使用它。
最常见的有:
A.定义了一组接口,但又不想强迫每个实现类都必须实现所有的接口。
可以用abstractclass定义一组方法体,甚至可以是空方法体,然后由子类选择自己所感兴趣的方法来覆盖。
B.某些场合下,只靠纯粹的接口不能满足类与类之间的协调,还必需类中表示状态的变量来区别不同的关系。
abstract的中介作用可以很好地满足这一点。
C.规范了一组相互协调的方法,其中一些方法是共同的,与状态无关的,可以共享的,无需子类分别实现;而另一些方法却需要各个子类根据自己特定的状态来实现特定的功能
22、接口是否可继承接口?
抽象类是否可实现(implements)接口?
抽象类是否可继承实体类(concreteclass)?
接口可以继承接口。
抽象类可以实现(implements)接口。
抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
23、构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
24、.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。
25、编程题:
写一个Singleton出来。
1.public class Singleton {
2.
3.private Singleton(){}
4.
5.//在自己内部定义自己一个实例,是不是很奇怪?
6.
7.//注意这是private 只供内部调用
8.
9.private static Singleton instance = new Singleton();
10.
11.//这里提供了一个供外部访问本class的静态方法,可以直接访问
12.
13.public static Singleton getInstance() {
14.
15.return instance;
16.
17. }
18.
19.}
20.
第二种形式:
1.public class Singleton {
2.
3.private static Singleton instance = null;
4.
5.public static synchronized Singleton getInstance() {
6.
7.//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
8.
9.//使用时生成实例,提高了效率!
10.
11.if (instance==null)
12.
13.instance=new Singleton();
14.
15.return instance; }
16.
17.}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 国际 Java 程序员 笔试 答案