2023年Java面试题及其答案.pdf
《2023年Java面试题及其答案.pdf》由会员分享,可在线阅读,更多相关《2023年Java面试题及其答案.pdf(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、J a v a 面试题及其答案(二).t x t l O有了执著,生命路程上的寂寞可以铺成一片蓝天;有了执著,孤单可以演绎成一排鸿雁;有了执著,欢乐可以绽放成满圆的鲜花。J a v a 面试题及其答案(二)1.C+或 J a v a 中的异常解决机制的简朴原理和应用。当 J A V A 程序违反了 J A V A 的语义规则时,J A V A 虚拟机就会将发生的错误表达为一个异常。违反语义规则涉及2种情况。一 种 是 J A V A 类库内置的语义检查。例如数组下标越界,会引发I n d ex Ou t Of B o u n d s E x c ep t i o n;访问 n u l l 的对
2、象时会引发 Nu l l P o i n t er E x c ep t i o n。另一种情况就是J A V A 允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用 t h r o w 关键字引发异常。所有的异常都是j a v a.l a n g.T h o w a b l e的子类。2.J a v a 的接口和C+的虚类的相同和不同处。由于J a v a 不支持多继承,而有也许某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足规定 与继承相比,接口有更高的灵活性,由于接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的
3、方法和属性,并且接口里面的属性在默认状态下面都是p u b l i c s t a t i c,所有方法默认情况下是p u b l i c.一个类可以实现多个接口。3.垃圾回收的优点和原理。并考虑2种回收机制。J a v a 语言中一个显著的特点就是引入了垃圾回收机制,使 C+程序员最头疼的内存管理的问题迎刃而解,它使得J a v a 程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,J a v a 中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低档别的线程运营,不可预知的情
4、况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。4 .请说出你所知道的线程同步的方法。wa it。:使一个线程处在等待状态,并且释放所持有的对象的lo c k。s le e p。:使一个正在运营的线程处在睡眠状态,是一个静态方法,调用此方法要捕获I n t e r r u p t e d E xc e p t io n 异常。n o t if y。:唤醒一个处在等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由J V M拟
5、定唤醒哪个线程,并且不是按优先级。A lln o t it yO:唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。5 .请讲一讲析构函数和虚函数的用法和作用。6 .E r r o r 与 E xc e p t io n 有什么区别?E r r o r 表达系统级的错误和程序不必解决的异常,E xc e p t io n 表达需要捕获或者需要程序进行解决的异常。7 .在 ja va 中一个类被声明为f in a l类型,表达了什么意思?表达该类不能被继承,是顶级类。8 .描述一下你最常用的编程风格。9 .he a p 和 s t a c k有什么区别。栈是一种线
6、形集合,其添加和删除元素的操作应在同一段完毕。栈按照后进先出的方式进行解决。堆是栈的一个组成元素1 0.假如系统要使用超大整数(超过lo n g长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)。p u b lic c la s s B igln t()in t A r r O n e =n e w A r r 0 n e 1 0 0 0 ;S t r i n g i n t S t r i n g=,z;p u b l i c i n t A r r(S t r i n g s)i n t S t r i n g =s;f o r (i n t i=
7、0;i 0);/throws an Assertionerror if a s h o r tc h a r 或者 byte。long,string 都不能作用于 swtich。4 2,编程题:写一个Singleton出来。Singleton模式重要作用是保证在Java应用程序中,一个类C lass只有一个实例存在。一般Singleton模式通常有几种种形式:第一种形式:定义一个类,它的构造函数为p riv a te 的,它有一个s ta t ic 的 private的该类变量,在类初始化时实例话,通过一个public的 getlnstance方法获取对它的引用,继而调用其中的方法。publi
8、c class Singleton private Singleton()在自己内部定义自己一个实例,是不是很奇怪?注意这是p riv a te 只供内部调用private sta tic Singleton instance=new Singleton();这里提供了一个供外部访问本c la s s 的静态方法,可以直接访问public static Singleton getlnstance()return instance;第二种形式:p ub l i c c l a s s Si n g l e to n p r i v a te s ta ti c Si n g l e to n i
9、 n s ta n c e 二 n ul l;p ub l i c s ta ti c s y n c h r o n i z e d Si n g l e to n g e tl n s ta n c e()这个方法比上面有所改善,不用每次都进行生成对象,只是第一次使用时生成实例,提高了效率!i f (i n s ta n c e=n ul l)i n s ta n c e=n e w Si n g l e to n ();r e tur n i n s ta n c e;其他形式:定义一个类,它的构造函数为p r i v a te 的,所有方法为s ta ti c 的。一般认为第一种形式要
10、更加安全些Ha s h ta b l e 和 Ha s h M a pHa s h ta b l e 继承自 D i c ti o n a r y 类,而 Ha s h M a p 是 J a v a l.2 引进的 M a p i n te r f a c e 的 个实现Ha s h M a p 允许将n ul l 作为一个e n tr y 的 k e y 或者v a l ue,而 Ha s h ta b l e 不允许尚有就是,Ha s h M a p 把 Ha s h ta b l e 的 c o n ta i n s 方法去掉了,改成 c o n ta i n s v a l ue 和
11、c o n ta i n s K e y o 由于c o n ta i n s 方法容易让人引起误解。最大的不同是,Ha s h ta b l e 的方法是Sy n c h r o n i z e 的,而 Ha s h M a p 不是,在多个线程访问Ha s h ta b l e 时,不需要自己为它的方法实现同步,而 Ha s h M a p就必须为之提供外同步。Ha s h ta b l e 和 Ha s h M a p 采用的h a s h/r e h a s h 算法都大约同样,所以性能不会有很大的差异。4 3 .描述一下J VM 加载c l a ss文献的原理机制?4 4 .试举例说
12、明一个典型的垃圾回收算法?4 5 .请用j a v a 写二叉树算法,实现添加数据形成二叉树功能,并以先序的方式打印出来.4 6.请写一个j a v a 程序实现线程连接池功能?4 7 .给定一个C语言函数,规定实现在j a v a 类中进行调用。4 8、编一段代码,实现在控制台输入一组数字后,排序后在控制台输出;4 9、列出某文献夹下的所有文献;5 0、调用系统命令实现删除文献的操作;51、实现从文献中一次读出一个字符的操作;52、列出一些控制流程的方法;53、多线程有哪些状态?54、编写了一个服务器端的程序实现在客户端输入字符然后在控制台上显示,直到输入“EN D”为止,让你写出客户端的程
13、序;55、作用域public,private,protected,以及不写时的区别答:区别如下:作用域当前类同一 package子 孙 类 其 他packagepublic /V V Vprotected V V V Xfriendly J J X Xprivate V X X X不写时默认为friendly56、ArrayList 和 Vector 的区别,HashMap 和 Hashtable 的区别答:就ArrayList与Vector重要从二方面来说.一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的二.数据增长:当需要增长时,Ve
14、ctor默认增长为本来一培,而ArrayList却是本来的一半就HashMap与HashTable重要从三方面来说。一.历史因素:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的三.值:只有HashMap可以让你将空值作为一个表的条目的key或value57、char型变量中能不能存贮一个中文汉字?为什么?答:是可以定义成为一个中文的,由于java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的58
15、、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notify59、垃圾回收机制,如何优化程序?希望大家补上,谢谢60、float 型 float f=3.4 是否对的?答:不对的。精度不准确,应当用强制类型转换,如下所示:float f=(float)3.461、介绍JAVA中的Collection FrameWork(涉及如何写自己的数据结构)?答:C o l l e c t i o n F r a m e W o r k 如下:C o
16、l l e c t i o n卜 L i s t!p L i n k e d L i s t!卜 Ar r a y L i s t|LV e c t o r|LS t a c kLS e tMa p卜 H a s h t a b l eH H a s h Ma pLW e a k H a s h Ma pC o l l e c t i o n 是最基本的集合接口,一个C o l l e c t i o n 代表一组O b j e c t,即 C o l l e c t i o n 的元素(El e m e n t s)Ma p 提供k e y 到 v a l u e 的映射6 2、Ja v a
17、 中异常解决机制,事件机制?11、JAV A中的多形与继承?希望大家补上,谢谢6 3、抽象类与接口?答:抽象类与接口都用于抽象,但是抽象类(JAV A中)可以有自己的部分实现,而接口则完全是一个标记(同时有多重继承的功能)。编程题:1.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供r e s e t答 案(1)p u b l i c s t a t i c S t r i n gE s p l i t S t r i n gB y C o m m a(S t r i n g s o u r c e)i f(s o u r c e=n
18、u l l|s o u r c e,t r i m().e q u a l s()r e t u r n n u l l;S t r i n gT o k e n i z e r c o m m a T o k e r =n e w S t r i n gT o k e n i z e r(s o u r c e,;S t r i n g口 r e s u l t =n e w S t r i n g c o m m a T o k e r.c o u n t T o k e n s();i n t i=0;w h i l e(c o m m a T o k e r.h a s Mo r e
19、T o k e n s()r e s u l t i =c o m m a T o k e r.n e x t T o k e n O ;i+;)r e t u r n r e s u l t;循环遍历S t r i n g数组In t e ge r,p a r s e l n t (S t r i n g s)变成 i n t 类型组 成i n t数组Ar r a y s,s o r t(i n t a),a数组升序降序可以从尾部开始输出2.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(1 0 1 1)-(一千零一拾一元整)输出。3、继承时候类的执行顺序问题,一般都是选择题,问你将会打
20、印出什么?答:父类:p a c k a ge t e s t;p u b l i c c l a s s F a t h e r C l a s s(p u b l i c F a t h e r C l a s s 0(S y s t e m.o u t.p r i n t i n(F a t h e r C l a s s C r e a t e);)子类:p a c k a ge t e s t;i m p o r t t e s t.F a t h e r C l a s s;p u b l i c c l a s s C h i l d C l a s s e x t e n d s
21、 F a t h e r C l a s s(p u b l i c C h i l d C l a s s()(S y s t e m.o u t.p r i n t l n(,zC h i l d C l a s s C r e a t e);)p u b l i c s t a t i c v o i d m a i n(S t r i n g a r gs)F a t h e r C l a s s f c =n e w F a t h e r C l a s s();C h i l d C l a s s c c =n e w C h i l d C l a s s();输出结果:C
22、:j a v a t e s t.C h i l d C l a s sF a t h e r C l a s s C r e a t eF a t h e r C l a s s C r e a t eC h i l d C l a s s C r e a t e4、内部类的实现方式?答:示例代码如下:p a c k a ge t e s t;p u b l i c c l a s s O u t e r C l a s sp r i v a t e c l a s s In t e r C l a s sp u b l i c In t e r C l a s s 0(S y s t e
23、m,o u t.p r i n t i n (z,In t e r C l a s s C r e a t e);IIp u b l i c O u t e r C l a s s 0(In t e r C l a s s i c =n e w In t e r C l a s s 0;S y s t e m,o u t.p r i n t i n (z,O u t e r C l a s s C r e a t e);Ip u b l i c s t a t i c v o i d m a i n(S t r i n g a r gs)(O u t e r C l a s s o c =n
24、e w O u t e r C l a s s();!输出结果:C:j a v a t e s t/O u t e r C l a s sIn t e r C l a s s C r e a t eO u t e r C l a s s C r e a t e再一个例题:p u b l i c c l a s s O u t e r C l a s s p r i v a t e d o u b l e d l =1.0;/i n s e r t c o d e h e r eY o u n e e d t o i n s e r t a n i n n e r c l a s s d e c
25、 l a r a t i o n a t l i n e 3.W h i c h t w o i n n e r c l a s sd e c l a r a t i o n s a r ev a l i d?(C h o o s e t w o.)A.c l a s s In n e r O n e p u b l i c s t a t i c d o u b l e m e t h o d a O (r e t u r n d l;IB.p u b l i c c l a s s In n e r O n e s t a t i c d o u b l e m e t h o d a O
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 Java 试题 及其 答案
限制150内