java面试题
2011-12-02 20:07 javaspring 阅读(530) 评论(0) 编辑 收藏 举报1.Java 面向对象的特征
继承,封装,抽象,多态
2.String StringBuffer区别
String:是不可变对象,创建后如果被修改,相当于又创建一个对象,大部情况下效率比较低
StringBuffer:是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
3.Hashtable HashMap区别
Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 。
Hashtable key value不允许为空,而HashMap可以。
HashTable使用Enumeration,HashMap使用Iterator
4.String 是最基本的数据类型吗?
不是基本的数据类型,String类是final类型
基本的数据类型有:byte char short int long float double
5.说出ArrayList,Vector,LinkedList存储性能
ArrayList,Vector 都是采用数组的存储方式,索引速度快而插入数据慢。
LinkedList 使用双链表实现存储,插入速度快,而索引速度慢。
6.int 和 Integer有什么区别
int是最原始的数据类型,Integer是java为int提供的封装类。
7.collection 和collections 区别
collection 是集合类的上级接口,继承他的子接口主要有List和set
collections 是集合类的一个帮助类,他提供一系列的静态方法实现对各种集合的搜索,排序,线程安全等操作
8.&和&&区别
&是位运算符,&&是逻辑运算符
9.final,finally,finalize的区别
final是用来声明属性,方法,类,表示属性不可变,方法不能被重写,类不能被继承
finally是异常处理语句结构的一部分,表示总是执行。
finalize 是Object类的一个方法,我们可以重写该方法,用来资源回收。
10.sleep()和wait()区别
调用sleep()不会释放对象锁
调用wait()会放弃对象锁,直到些对象发出notify()方法(或notifyAll)后才可进入运行状态。
11.overload和override的区别。overload是否可以改变返回值类型?
重载overload是一个类中多态性的表现,当一个类中定义多个同名的方法,它们有不同参数个数或不同参数类型,则称方法为重载
重写override是子类与父类之间多态性的一种表现,如果子类中定义某方法,与其父类具有相同参数和名称,我们说该方法被重写
overload是可以改变返回值类型的
12.同步和异步区别,在什么情况下使用他们。
同步是指数据将在线程间共享防止多线程的并发操作。例如正在写数据的时候可能被另一个线程读到。或者正在读数据的时候可能被另一个线程写过,那么这么数据就是共享数据,必须采用同步存取。
异步是指多个线程同时运行,并且互不干扰。例如:当一个应用程序在对象上调用了一个需要花费长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程。
13.抽象类和接口区别
抽象类可以拥有自己的数据成员,可以拥有抽象方法的声明和非抽象方法的定义。抽象类要被继承,抽象方法要被重写
接口就是一种特殊的抽象类,包含常量与方法的定义,定义常量必须是public static final,定义的方法必须是public abstract
14.Static Nested Class 和 Inner Class的不同。
Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。
15.short s = 1; s = s+ 1;有什么错? short s = 1; s += 1;有什么错?
s = s + 1;会出错;必须经过类型的强制转换。
s += 1 可以正确编译。
16.Math.round(12.5)等于多少? Math.round(-12.5)等于多少?
Math.round(12.5) 等于 13
Math.round(-12.5) 等于 -11
Math.round()返回是与参数最接近的长整数
17.String s = new String("xyz");创建了几个String Object?
两个
18.Java有没有goto?
goto是java中的保留字,现在没有在java中使用
19.启动一个线程是用run()还是start()?
用start()启动,启动后执行run()方法。
20.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
21.List, Set, Map是否继承自Collection接口?
List,Set是,Map不是
22.数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()方法,但有lenght属性.String有length()这个方法
23.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
用== equals都不能判断Set里的元素重复与否,可以采用Iterator进行遍历来区分。
==判断引用值是否指向同一个对象 equals判断双方对象内容是否相等;
Set<Integer> set = new HashSet<Integer>(); Set<Integer> newset = set; System.out.println(set == newset);//输出为ture Set<Integer> set = new HashSet<Integer>(); Set<Integer> newset = new HashSet<Integer>(); System.out.println(set.equals(newset));//输出为ture
24.构造器Constructor是否可被override?
构造器不能被继承,因此不能被重写。但可以重载
25.是否可以继承String类?
String 是final类,因为不能被继承
26.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr)中,expr是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。
27.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
会被执行,在return 之前执行
28.Java的接口和C++的虚类的相同和不同处。
相同:都不能被实例化
可能某个类或对象要使用分别在几个类或对象里面的方法或属性,java没有多继承,只能通过接口。
不同处:java接口属性必须是public static 方法必须是抽象方法,接口没有任何实现代码。
29.char型变量中能不能存贮一个中文汉字?为什么?
可以存放,因为java中以unicode编码,一个char占16字节,所以放一个中文没问题
30.描述一下JVM加载class文件的原理机制?
JVM中类的装载是由ClassLoader和它的子类来实现的 ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。
31、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
多线程实现方法一种是继承Thread,一种是实现Runnable接口
同步实现方法有wait,notify,synchronized
32.float型float f=3.4是否正确?
不正确。精度不准确,应该用强制类型转换,float f=(float)3.4,或者 float f = 3.4f;
33.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
是值的传递,在java编程中只有值的传递。当一个对象实例作为一个参数传递到方法时,参数的值就是该对象的引用。
34.用最有效率的方法算出2乘以8等于几?
2<<3
35.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。
36.你所知道的集合类都有哪些?主要方法?
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
List接口主要方法:add() clear() get() isEmpty() iterator() remove() size()
Map接口主要方法:entrySet() get() clear() isEmpty() put() rmove() size()
37.我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
public String translate(String str){ String resultString = null; try { resultString = new String(str.getBytes("iso8859-1"), "utf-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return resultString; }
38 一个“.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?
可以。必须只有一个类名与文件名相同。
39.MVC的各个部分都有那些技术来实现?如何实现?
MVC是Model-View-Controller的简写。以 android应用程序开发为例
"Model"代表的是应用的业务逻辑(javabean ).
"View" 是应用的表示面(main.xml .....在手机显示界面的xml资源文件).
"Controller" 是提供应用的处理过程控制(一般是activity).
40.java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
字节流,字符流。
字节流继承于InputStream \ OutputStream,字符流继承于InputStreamReader \ OutputStreamWriter。
在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。
41.java中会存在内存泄漏吗,请简单描述?
会。
//当a足够大的正数,b足够大的负数。就会导致溢位 int a ,b; return a - b;
42.静态变量和实例变量的区别?
静态变量可以直接使用类名来仿问,实例变量需要通过对象来仿问
静态变量可以被所有的实例共享
43.在JAVA中,如何跳出当前的多重嵌套循环?
用break;return 方法
44、说出一些java常用的类,包,接口,请各举5个
常用的类:String Integer Thread Date File
常用的包:java.lang java.awt java.io java.util java.sql
常用的接口:Comparable List Map Document ResultSet