2023年Java面试题及其答案.docx





《2023年Java面试题及其答案.docx》由会员分享,可在线阅读,更多相关《2023年Java面试题及其答案.docx(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java面试题及其答案(二).txtlO有了执著,生命路程上的寂寞可以铺成一片蓝天;有了执著,孤单可以演绎成一排鸿雁;有了执著,欢乐可以绽放成满圆的鲜花。Java面试题及其答案(二)1 .C+或Java中的异常解决机制的简朴原理和应用。当JAVA程序违反了 JAVA的语义规则时,JAVA虚拟机就会将发生的错误表达为一个异常。违 反语义规则涉及2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发 IndexOutOfBoundsException;访问 null 的对象时会引发 NullPointerException。另一种情 况就是JAVA允许程序员扩展这种语义检查,程序员可
2、以创建自己的异常,并自由选择在何时 用throw关键字引发异常。所有的异常都是java. lang. Thowable的子类。2 . Java的接口和C+的虚类的相同和不同处。由于Java不支持多继承,而有也许某个类或对象要使用分别在几个类或对象里面的方法或属 性,现有的单继承机制就不能满足规定。与继承相比,接口有更高的灵活性,由于接口中没 有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且 接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public. 一个类 可以实现多个接口。3 .垃圾回收的优点和原理。并考虑2种回收机制。Ja
3、va语言中一个显著的特点就是引入了垃圾【可收机制,使C+程序员最头疼的内存管理的问 题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回 收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域:垃圾I可 收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独 的低档别的线程运营,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象 进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增屋垃圾回收。义static final成员变量。接口的实
4、现与子类相似,除了该实现类不能从接口定义中继承行 为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以 在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为 引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换, instanceof运算符可以用来决定某对象的类是否实现了接口。31, abstract的method是否可同时是static,是否可同时是native,是否可同时是 synchronized?都不能32,接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类 (conc
5、rete class)?接口可以继承接口。抽象类可以实现(implcmonts)接口,抽象类是否可继承实体类,但 前提是实体类必须有明确的构造函数。33,启动一个线程是用run()还是start ()?启动一个线程是调用start。方法,使线程所代表的虚拟解决机处在可运营状态,这意 味着它可以由JVM调度并执行。这并不意味着线程就会立即运营。run()方法可以产生必须退 出的标志来停止一个线程。34,构造器 Constructor 是否可被 override?构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。35,是否可以继承Stri
6、ng类?String类是final类故不可以继承。36,当个线程进入个对象的个synchronized方法后,其它线程是否可进入此对象的其 它方法?不能,一个对象的一个synchronized方法只能由一个线程访问。37, try。里有一个return语句,那么紧跟在这个try后的finally 里的code会不会被 执行,什么时候被执行,在relum前还是后?会执行,在return前执行。38,编程题:用最有效率的方法算出2乘以8等於儿?有C背景的程序员特别喜欢问这种问题。2 339,两个对象值相同(x. equals(y) = true),但却可有不同的hash code,这句话对不对?不
7、对,有相同的hash code。40,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变 化后的结果,那么这里到底是值传递还是引用传递?是值传递。Java编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法 中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引 用是永远不会改变的。41, swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?switch (exprl)中,exprl是一个整数表达式。因此传递给switch和case语句的参 数应当是 int short char 或者 byte。
8、long, string 都不能作用于 swtich。42,编程题:写一个Singleton出来。Singleton模式重要作用是保证在Java应用程序中,一个类Class只有一个实例存在。一般Singleton模式通常有几种种形式:第一种形式:定义一个类,它的构造函数为private的,它有一个static的private 的该类变量,在类初始化时实例话,通过一个publ ic的get Instance方法获取对它的引用, 继而调用其中的方法。public class Singleton private Singleton()在自己内部定义自己一个实例,是不是很奇怪?注意这是private只
9、供内部调用private static Singleton instance = new Singleton();这里提供了一个供外部访问本class的静态方法,可以直接访问public static Singleton get Instance() return instance;第二种形式:public class Singleton (private static Singleton instance = null;public static synchronized Singleton getlnstanceO (这个方法比上面有所改善,不用每次都进行生成对象,只是第一次使用时生成实例
10、,提高了效率!if (instance-null)instance=new Singleton();return instance; 其他形式:定义一个类,它的构造函数为private的,所有方法为static的。般认为第种形式要更加安全些Hashtcible 和 HashMapHashtablc 继承自 Dictionary 类,而 HashMap 是 Javal. 2 弓|进的 Map interface 的一个 实现HashMap允许将nul 1作为一个entry的key或者value*而Hashlable不允许尚有就是,HashMap 把 llashtable 的 contains 方
11、法去掉了,改成 containsvalue 和 containsKeyo由于contains方法容易让人引起误解。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashlable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。Hashtablc和HashMap采用的hash/rchash算法都大约同样,所以性能不会有很大的差异。43 .描述一下JVM加载class文献的原理机制?44 .试举例说明一个典型的垃圾回收算法?45 .请用java写二叉树算法,实现添加数据形成二叉树功能,并以先序的方式打印出来.46 .请
12、写个java程序实现线程连接池功能?47 .给定一个C语言函数,规定实现在java类中进行调用。48、编一段代码,实现在控制台输入一组数字后,排序后在控制台输出;49、列出某文献夹下的所有文献;50、调用系统命令实现删除文献的操作;51、实现从文献中一次读出一个字符的操作;52、列出一些控制流程的方法;53、多线程有哪些状态?54、编写了 个服务器端的程序实现在客户端输入字符然后在控制台上显示,直到输入END” 为止,让你写出客户端的程序;55、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 当前类 同一 package子孙类 其他packagep
13、ublic J J J Jprotected V V V Xfriendly J J X Xprivate V X X X不写时默认为friendly56 ArrayList 和 Vector 的区别,HashMap 和 Hashtable 的区别答:就ArrayList与Vector重要从二方面来说.一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不 是同步的二.数据增长:当需要增长时,Vector默认增长为本来一培,而ArrayList却是本来的一半就HashMap与HashTable重要从三方面来说。一.历史因素:Hashtable是基于陈旧
14、的Dictionary类的,HashMap是Java 1. 2引进的Map 接口的一个实现二.同步性:llashtablc是线程安全的,也就是说是同步的,而HashMap是线程序不安全的, 不是同步的三.值:只有HashMap可以让你将空值作为一个表的条目的key或value57、char型变量中能不能存贮一个中文汉字?为什么?答:是可以定义成为一个中文的,由于java中以unicode编码,一个char占16个字节,所 以放一个中文是没问题的58、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实
15、现方面有两种,分别是synchronized, wai t与notify59、垃圾回收机制,如何优化程序?希望大家补上,谢谢60、float 型 float f=3. 4 是否对的?答:不对的。精度不准确,应当用强制类型转换,如下所示:float f= (float)3. 461、介绍JAVA中的Collection Framework(涉及如何写自己的数据结构)? 答:Collection FrameWork 如下:Collection卜 List| 卜LinkcdListI pArrayListI LVectorI LStackLSetMap|-Hash table(-HashMapLWe
16、akHashMapCollection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素 (Elements)Map提供key到value的映射62、Java中异常解决机制,事件机制?11、JAVA中的多形与继承?希望大家补上,谢谢63、抽象类与接口?答:抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全 是个标记(同时有多重继承的功能)。编程题:1 .现在输入n个数字,以逗号,分开; 然后可选择升或者降序排序; 按提交键就在另一页面显示 按什么排序,结果为, 提供reset答案 (1) public static S
17、tring口 splitStringByComma(String source)( if (source=null | . source. trim(). equals/) return null;StringTokenizer commaToker = new StringTokenizer(source, ,,);Siri ng口 result = new StringcommaToker. countTokens(); int i=();whi le(conunaToker. hasMoreTokens () resulti = commaToker. nextTokenO ;i+;)r
18、eturn result;循环遍历String数组Integer, parselnt (String s)变成 int 类型组成int数组Arrays, sort(int a),a数组升序降序可以从尾部开始输出.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(1011)- (一千零一拾一元整)输出。3、继承时候类的执行顺序问题,般都是选择题,问你将会打印出什么?答:父类:4 .请说出你所知道的线程同步的方法。wait。:使一个线程处在等待状态,并且释放所持有的对象的lock。sleep。:使一个正在运营的线程处在睡眠状态,是一个静态方法,调用此方法要捕获 InterruptedExcept
19、ion 异常。notify。:唤醒一个处在等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒 某一个等待状态的线程,而是由JVM拟定唤醒哪个线程,并且不是按优先级。AllnolilyO:唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而 是让它们竞争。5 .请讲讲析构函数和虚函数的用法和作用。6 . Error与Exception有什么区别?Error表达系统级的错误和程序不必解决的异常,Exception表达需要捕获或者需要程序进行解决的异常。7 .在java中一个类被声明为final类型,表达了什么意思?表达该类不能被继承,是顶级类。8 .描述一下你最常用的编程
20、风格。9 . heap和stack有什么区别。栈是一种线形集合,其添加和删除元素的操作应在同一段完毕。栈按照后进先出的方式进行 解决。package test;public class FatherClasspublic FatherClass0System, out. print In(FatherClass Create);)子类:package test;import test. FatherClass;public class ChildClass extends FatherClasspublic ChildClass()(System, out. print In(ChiIdCla
21、ss Create);public static void main(String args)FatherClass fc = new FatherClass();ChildClass cc = new ChildClass();)1输出结果:C:java test. ChildClassFatherClass CreateFatherClass CreateChiIdClass Create4、内部类的实现方式?答:示例代码如下:package test;public class OuterClassprivate class InterClass public InterClass()Sy
22、stem, out. print InIn terClass Create);)public OutcrClass()(InterClass ic = new InterClass();System. out. print In (OutcrClass Greate,z);)public static void main(String args)(OuterClass oc = new OuterClass();输出结果:C:java test/OuterClassIntcrClass CreateOutcrClass Create再一个例题:public class OuterClass p
23、rivate double dl = 1. 0;/insert code here)You need to insert an inner class declaration at 1ine 3. Which two inner class declarations areveil id? (Choose two.)A. class 1nnerOnepublic static double methodaO return dl;B. public ckiss InnerOne static double methodaO return dl;)C. private class InnorOne
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 Java 试题 及其 答案

限制150内