《Java面试题大全答案.docx》由会员分享,可在线阅读,更多相关《Java面试题大全答案.docx(14页珍藏版)》请在第一文库网上搜索。
1、1、一个“Java”源文件中是否可以包括多个类(不是内部类)?有什么限制?可以,但是只能有一个类用public修饰,并且用public修饰的类名与文件名要一致2、&和&的区别。&和&都可以用作逻辑与;&还具有短路功能,即如果第一个表达式的结果为false,则不再计算第二个表达式;&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。3、Java 有没有 goto?java中的保留字,现在没有在java中使用。4、在JAVA中,如何跳出当前的多重嵌套循环?break+变量控制 与return5、switch是否能作用在byte(拜特)上,是否能作用在long上,
2、是否能作用在String上?Switch可以作用在int上,而byte可以隐式转换为int所以能作用在byte上不能作用在long上,也不能作用在String上6、short si = l;sl = sl + 1;有什么错? short si = 1; si += 1;有什么错?1在java中为int数据类型,short+int=int,大类型转为小类型,编译时,会报告需要强制转换类型的错误。sl+=l不会报,因为JVM会对它特殊处理(自动强转)7、char型变量中能不能存贮一个中文汉字?为什么?可以,char型变量是用来存储unicode(依妮Q特)编码的,而unicode编码包含了中文,所
3、以是可以保存的8、编程题:用最有效率的方法算出2乘以8等於儿?23,表示将2左移3位;一个数左移几位就表示这个数乘以了 2的几次方,左移运算,CPU直接支持,所以是最有效率的9、请设计一个一百亿的计算器思路用两个数组分别保存两个操作数,再新建一个数组保存结果。10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?引用变量不能变11、和equals方法究竟有什么区别?=和equals方法都可以用来比较两个对象是否是同一个对象。=还可以比较两个变量的值是否相等。equals是Object类中的方法,可以由子类重写此方法,实现内容相等。12、静态变量和实例变量的区别?语法上不
4、同:静态变量前要加static关键字,实例变量不需要程序运行时不同:实例变量是属于某个对象的,只有创建了对象,才会为这个对象的实例变量分配空间。静态变量是属于类的,当程序加载了这个类的字节码文件,就会为静态变量分配空间,并且所有对象共享这个变量13、是否可以从一个static方法内部发出对非static方法的调用?不可以,非static方法需要与对象关联在一起的,而static方法调用时不需要对象,可以直接调用,也就是说调用static方法时,可能还没有创建任何实例14 Integer 与 int 的区别int是java中的8种基本数据类型之一,默认值是0, Integer是int的包装类,默
5、认值是null,即Integer可以表示未赋值和赋值为015、(麦死)Math.round (乱的)(11.5)等於多少? Math.round(11.5)等於多少?12,-lLMath.round()方法的实现是:Math.floor(n+0.5);16、作用域public, private, protected,以及不写时的区别本类同包子类其他类publicprotectedXfriendlyXXprivateXXX17 Overload(喔我楼的)和Override的区别。Overloaded的方法是否可以改变返回值的类型?Overload是重载,Override是重写。Overload
6、是指在一个类中,方法名相同,参数列表不同,那么这些方法之间构成重载。Override是指在父子类之间,子类的方法签名和父类的方法签名完全一样,那么这两个方法构成重写。Overload的方法可以改变返回值。因为调用方法时,返回值可以接受也可以不接受,所以编译器无法根据返回值来判断是否重载。18、构造器Constructor看似爪克特)是否可被override?Constructor不能被继承,所以不能override19、接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?抽象类中是否可以有静态的main方法?接口可以继承接口
7、,抽象类可以实现接口,抽象类可以继承具体类,抽象类中可以有静态的main方法20、写done()方法时,通常都有一行代码,是什么?super.clone();克隆时,首先得将父类的成员克隆完。21、面向对象的特征有哪些方面封装封装是把过程和数据包围起来,对数据的访问只能通过己定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。继承继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类
8、(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。抽象抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。多态多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。第一种用正则表达式的方式:String类的split方法第二种方式:StingToken
9、izer,代码为:new StringTokenizer(/zl,2,3,477);35数组有没有length。这个方法? String有没有length。这个方法?数组是length属性,String有length。这个方法36、try 里有一个return语句,那么紧跟在这个try后的finally 里的code会不会被执行,什么时候被执行,在return前还是后?会,return 前38 final, finally, finalize 的区别。final用来修饰类,变量,方法的。修饰类表示类不可被继承,修饰变量表示变量的引用不可变,修饰方法表示方法不可被重写。finally是异常处理结
10、构中的一部分,表示一定会执行。finalize是Object类的方法,当垃圾收集器执行的时候会调用此对象的这个方法。39、运行时异常与-一般异常有何异同?一般异常强制要求捕获或声明。运行时异常可以捕获,也可以不捕获。40、error和exception有什么区别?error表示恢复不是不可能但是很困难的情况下的一种严重问题。例如:内存溢出exception表示程序的设计或实现有问题。也就是说如果程序正常运行,不会发生的情况。41、Java中的异常处理机制的简单原理和应用。当Java程序违反了 Java的语义规则时,JVM就会将发生的错误表示为一个异常。违反语义规则包括两种:一种是Java类库内
11、置的语义检查,另一种是程序员自己定义的异常。42给我一个你最常见到的runtime (茹二楼)exceptionoArithMaticException NullPointException lndeOfBoundEceptionHibernateException(-?:CacheException,LazylnitializationException,MappingException)NestedRuntimeException(AopConfigException,APnvocationException)43、JAVA语言如何进行异常处理,关键字:throws,throw,try,c
12、atch,finally分别代表什么意义?在try块中可以抛出异常吗?throws用来表名方法可能抛出异常。throw用来明确的抛一个异常。try用来监控一段可能出现异常的代码。当出现异常后进入catch块,进行异常类型匹配finally表示无论是否出现异常都要执行的代码。44、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop。和suspend。方法为何不推荐使用?有两种实现方法,分别是继承Thread (斯read)类与实现Runnable (软的包)接口用synchronized (新鬼耐斯特)关键字修饰同步方法因为他们是线程的方法,不安全,当已启动后,就想脱缰野
13、马难以把控45、sleep。(斯瑞谱)和wait()(外特)有什么区别?1、sleep是线程类的方法 wait是Object类的方法2、sleep会自动醒来 wait需要notify唤醒3、sleep不会释放锁 wait会释放锁46、同步和异步有何异同,在什么情况下分别使用他们?举例说明。48、多线程有几种实现方法?同步有几种实现方法?多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有三种:1、同步代码块2、同步方法3、 Lock49启动一个线程是用run()还是start。?.Start()(斯达特)50、当一个线程进入一个对象的一个synchroniz
14、ed方法后,其它线程是否可进入此对象的其它方法?分几种情况:L其他方法前是否加了 synchronized关键字,如果没加,则能。2 .如果这个方法内部调用了 wait,则可以进入其他synchronized方法。3 .如果其他个方法都加了 synchronized关键字,并且内部没有调用wait,则不能。51、线程的基本概念、线程的基本状态以及状态之间的关系线程就是进程中的一个执行线路。新建new Thread。;就绪新read.start();运行,阻塞,挂起,结束。创建一个线程,这时状态为新建,当调用start方法后转为就绪,再由线程调度器将就绪状态转为运行状态,遇到synchroniz
15、ed语句后,可能由运行状态改为阻塞状态,当获得synchronized锁后由阻塞状态转为运行,这时调用wait方法转为挂起状态。当线程关联的代码执行完成后。线程转为结束。52 简述 synchronized 和 java.util.concurrent.locks.Lock 的异同?主要相同点:Lock (拉克)能完成synchronized所实现的所有功能主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。54 Array List 和 Vector 的区别ArrayList 和 Vector 都实现了 List 接口。ArrayList是线程不安全的,Vector是线程安全的。ArrayList的增长方式为*M+1 Vector的增长方式为*2,Vector还可以设置增长量。