面试题总结(一)
来源:互联网 发布:lewin'gene知乎 编辑:程序博客网 时间:2024/05/22 14:52
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
可以有多个类,但只能有一个与文件名相同的public类。
2、Java有没有goto?
Goto java中的保留字。
3、说说&和&&的区别。
&和&&都可做逻辑运算符,只有当算是两边都是true结果才为true,否则结果为false
&&的作用是当左边表达式为false的时候不再进行右边的表达式,只有当左边为true的时候才进行右边的表达式
&作为位运算符当两边表达式不是boolean的时候,&表示按位与操作
4、在JAVA中如何跳出当前的多重嵌套循环?
使用break跳出当前循环
5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
switch的默认数据类型是int,byte转换int是自动转换转换,而long和String是强制转换,所以,switch只能做用在byte上,不能做用在long和String上
6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
前面会报强制类型转换错误,后面的正确编译
7、char型变量中能不能存贮一个中文汉字?为什么?
能储存,因为char用来存储unicode编码字符,unicode字符长度为2位,中文汉字也是两位,所以只要是unicode编码字符中有的中文都能储存
8、用最有效率的方法算出2乘以8等於几?
2<<3,2乘以8相当于二进制的2想左移3位,所以是2<<3
9、请设计一个一百亿的计算器
想要设计一个百亿计算器,先考虑结果在哪个数字类型中可以储存,然后才能进行设计,只有long类型的变量可以存储百亿,所以只能使用long类型的变量来接收
10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
Final修饰的引用变量不可变,引用对象可以改变
11、"=="和equals方法究竟有什么区别?
==判断基本数据类型和引用数据类型的地址值是否相等,equals判断字符串和引用数据类型地址指向的空间里面的值是否相等
12、静态变量和实例变量的区别?
实例变量需要创建实例对象才可以使用,静态变量直接就可以使用,静态变量前面要加static,静态变量是类变量,存储在全局数据区,实例变量是对象属性
13、是否可以从一个static方法内部发出对非static方法的调用?
不可以,因为创建static方法不用实例对象,而没有实力对象的情况下是不能调用非static方法的
14、Integer与int的区别
Integer是int的封装类,int默认值为0,integer默认值为null,integer可以区分值为0和null的区别
15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.Round方法是四舍五入,加上0.5然后向下取整,所以Math.round(11.5)值是12,Math.round(-11.5)值是11
17、请说出作用域public,private,protected,以及不写时的区别
Public修饰的时候,什么情况下都可以调用,protected修饰,只能在同包、同类或者父子级关系中可以用,缺省修饰是在同包或同类中才可以使用,private修饰,只有在同一类中才可以使用
18、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
Overload是重载,是一个方法中可以有多个相同名字的方法但是参数列表不同
Override是重写,子类重写父类的方法,方面名和参数列表相同,方法体不同
在参数列表相同的情况下不可以改变返回值类型
19、构造器Constructor是否可被override?
构造器Constructor不能被继承,所以不能重写Override,但可以被重载Overload。
20、接口是否可继承接口? 抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?抽象类中是否可以有静态的main方法?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承具体类。抽象类中可以有静态的main方法
21、写clone()方法时,通常都有一行代码,是什么?
clone 有缺省行为
22、面向对象的特征有哪些方面
封装:把一些属性和方法封装在一个类中,使它变成私有的,只能通过方法来访问
继承:子类继承父类,把父类的方法当作自己的方法使用,也可以重写父类方法
多态:方法的多态,重载和重写,对象的多态,向上和向下转型
23、java中实现多态的机制是什么?
父类或接口定义的引用变量可以指向子类或具体实现类的实例对象
24、abstract class和interface有什么区别?
抽象类可以有构造方法,接口中没有
抽象类中可以有普通成员变量,接口中没有
抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的
抽象类中的抽象方法的访问类型可以是public,protected和默认缺省,但接口中的抽象方法只能是public类型的
抽象类中可以包含静态方法,接口中不能包含静态方法
抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型
一个类可以实现多个接口,但只能继承一个抽象类
26、什么是内部类?Static Nested Class和 Inner Class的不同。
内部类就是在一个类的内部定义的类,内部类中不能定义静态成员,内部类可以直接访问外部类中的成员变量,内部类可以定义在外部类的方法外面,也可以定义在外部类的方法体中,在方法体外面定义的内部类的访问类型可以是public,protecte,默认的,private等4种类型,在方法体内部不可以有访问控制符
27、内部类可以引用它的包含类的成员吗?有没有什么限制?
可以,当内部类为静态的时候,只可以访问外部类中的静态属性
28、Anonymous Inner Class (匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
可以继承其他类或实现其他接口
30、String是最基本的数据类型吗?
不是,基本数据类型是byte、int、char、long、float、double、boolean和short
31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有?
没有改变,只是重新声明了一块内存空间
32、是否可以继承String类?
String类是final修饰的类,不可以被继承
34、String 和StringBuffer的区别
String值不可变,Stringbuffer值可变,String修改后是重新声明一块内存空间进行储存,原空间的值不变,Stringbuffer改变是直接在原空间里面修改值
36、数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()方法,有length属性,String有length()方法
37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";
一共创建”a”,”b”,”c”,”d”,”abcd”五个对象
40、final, finally, finalize的区别。
Final修饰属性,属性不可变,修饰方法,不可被重写,修饰类,不可被继承
Finally是异常,在finally里面的语句必定被执行
Finalize是java垃圾处理机制里面的
41、运行时异常与一般异常有何异同?
运行时是在运行之后报的错,像除数为零这样的异常,一般异常是写代码时遇到的代码报的错误,需要捕获处理的
42、error和exception有什么区别?
Error是程序异常不可恢复的异常,如内存溢出等异常,exception是程序可恢复的异常,如下标越界等异常
43、Java中的异常处理机制的简单原理和应用。
在java遇到异常会产生一个异常对象,生成的异常对象传递给JRE的过程叫做抛出异常,
JRE得到异常会先寻找解决此异常的代码,JRE会把异常对象交给这个方法来处理,这个过程叫做捕获异常,如果找不到捕获异常的方法,JRE会停止运行
44、请写出你最常见到的5个runtime exception。
数组下标越界异常(ArrayIndexOutOfBoundsException),算数异常(ArithmeticException),空指针异常(NullPointerException),类转换异常(ClassCastException),文件找不到异常(FileNotFoundException),方法找不到异常(NoSuchMethodException)
45、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
throws捕获并向外抛出异常
throw抛出异常
try catch是内部捕获异常并做自定义处理
finally是无论是否有异常都会被处理的语句
46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?
有两种实现方法,分别是继承Thread类与实现Runnable接口,通过start()方法启动
用synchronized关键字修饰同步方法
反对使用stop(),是因为它不安全,suspend()方法容易发生死锁
47、sleep()和 wait() 有什么区别?
Sleep()方法是让当前线程停止运行一定时间,让出cpu
wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
48、同步和异步有何异同,在什么情况下分别使用他们?举例说明。
如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。
50、多线程有几种实现方法?同步有几种实现方法?
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify
wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
51、启动一个线程是用run()还是start()? .
启动一个线程是调用start()方法
52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
1.其他方法前是否加了synchronized关键字,如果没加,则能。
2.如果这个方法内部调用了wait,则可以进入其他synchronized方法。
3.如果其他个方法都加了synchronized关键字,并且内部没有调用wait,则不能。
4.如果其他方法是static,它用的同步锁是当前类的字节码,与非静态的方法不能同步,因为非静态的方法用的是this。
53、线程的基本概念、线程的基本状态以及状态之间的关系
线程就是程序中的一条执行线索,每个线程上都关联有要执行的代码
状态:就绪,运行,synchronize阻塞,wait和sleep挂起,结束。wait必须在synchronized内部调用。
54、简述synchronized和java.util.concurrent.locks.Lock的异同 ?
相同点:Lock能完成synchronized所实现的所有功能
不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。Lock还有更强大的功能,例如,它的tryLock方法可以非阻塞方式去拿锁。
- 面试题总结(一)
- 面试题总结(一)
- 面试题总结(一)
- 面试题总结(一)
- java面试题总结(一)
- HP面试题总结(一)
- IT公司面试题总结(一)
- 个人总结Java面试题(一)
- java面试题总结(一)
- Android面试题总结(一)
- 阿里面试题总结(一)
- PHP面试题总结归纳(一)
- 面试题总结 JS篇 (一)
- 前端面试题总结(一)
- android面试题总结一:
- Android 面试题总结(一)
- iOS 面试题总结(一)
- iOS面试题总结(一)
- Flex 布局教程:语法篇
- 论坛帖子列表页调用帖子摘要教程
- Android中Handler的作用和使用方法
- 【angular】项目实践-表格显示
- Web前端开发推荐阅读书籍-精华
- 面试题总结(一)
- Php7的这些新特性你掌握了吗?
- windows搭建python开发环境并操作MySQL
- Flex 布局教程:实例篇
- C语言之指针专题四:指针做函数参数
- pandas库的数据类型运算
- 判断子树问题
- 10-7&&10-8NOIP模拟赛总结
- 关于列表的扁平化