This is my Blog!!Welcome to you!!
【分享个人java学习心得和技术问题汇总】

java面试题(二)

java 面向对象

java语言的特点:“完全的面向对象;可移植性”;安全性;多线程。不包括“执行效率高”。

javascript:不是纯净的面向对像语言。window,document.只有Extjs库,引入了面向对象的定义语法,才能编写类。

 解释型语言:边解释边执行,无需将程序编程成exe或class。例如:js,

编译型语言:需要编译成exe等格式的二进制文件。

java语言特殊:既是编译型又是解释型语言。

 

垃圾收集机制的作用和类名。System.gc().

机制:堆上的引用类型变量,如果一段时间没有被引用,则自动回收。栈上的引用类型变量是否会被回收?回收周期长。

 

强制转换:int i = (int) 1.001f, 由将高精度赋给低精度。

自动转换:低精度赋给高精度。

 

f和l和d的作用,是否可省略:

d可省略。l在没有溢出时可以省略。f不能省略。

引用类型和原始类型在作为函数入参时的区别。

a 引用类型的属性修改有效。原始类型以及原始类型对应的装箱类型及String对象修改都无效。

b 方法里面仅能地址中的值,无法改变地址本身。

c java方法入参都是“值类型”,分成”值拷贝“和引用类型对象地址”两种。

简要描述java的反射机制。在程序运行时根据“类名”创建该类的对象,可以陈列出该类的所有方法,属性及参数。

 

 

equals和==的区别:

a ==可以用在原始类型和引用类型,equals只能用在引用类型。

b equals是Object的方法,可以被子类重写。==无法被重写

c 对于字符串及装箱类型来说,equals比较值,==比较地址。

 

 

原始类型和装箱类型(属于引用类型)的区别。

 

数值型和字符串类型的相互转换(3种方法)。

 

 

面向对象三大特征及含义。

final,static,abstract的用法,是否能一起合用?

三种内部类:静态内部类,非静态内部类,匿名内部类的区别。|*|||||||||||||*|

四种访问限制的含义:public(所有都可以访问)>protected(同包都可,异包子类也可)–>默认(同包可)–>private(自己可).

 

类和对象的概念.

对象:具有明确的属性及行为的实体。

类:具有相同的属性及行为的实体集合。

接口:功能的集合。

对象的声明和定义的区别。

A a; //声明 declare

a = new B(); //定义或叫实例化

super关键字的两种用法:

(1) 子类的构造函数中,调用父类的构造函数。必须放在第1行。  super();//调用父类的无参构造,可以省略。

(2)子类的方法中,调用父类的方法。super.do();

 

this关键字的用法:this代表自己这个对象。有些编码规范中,调用自己的方法必须写this.do();

构造函数是否可重写:不能。是否可重载:可以。

重载和重写的区别:

a 重载发生在1个类里面 重写发生在子类中

b 重载要求方法名相同,参数列表不同。返回值没有限制。

重写要求方法名,参数列表及返回值都相同。

抽象类和接口的区别:

a is a vs has a

b 抽象类可以非静态的变量。接口只能有public final static 的变量。

c 抽象类可以包含其他实现的方法。抽象方法可以是public或protected。

接口的所有方法都是public的。

 

实现接口和继承类的区别。–implements(has a功能),extends(is a 是父类的继承)。

 

接口继承和类继承的区别–extends。

inteface IA extends IA1,IA2(一个接口可以继承很多接口)

class A extends P(类只能继承1个父亲)

 

java里面的常用类: String,Math,Random,Date和字符串的转换(SimpleDateFormat)。

java的两种随机数生成方法的区别

Math.rand()–返回0-1的double

Random rd = new Random(); rd.nextInt(n)–返回0到n-1。

java集合框架三个接口的关系:

Map–>Collection–>Iterator

 

写出集合框架的遍历方法 (List和set和map):a for,b 迭代器,c 简写的for。

List能用:a,b,c

Set能用:b,c

Map能用:b,c

ArrayList和静态数组的区别:

a ArrayList长度可变。静态数组不行

b ArrayList和LinkedList和vector的区别。

ArrayList:所有元素的内存连续;

ListedList:所有元素的内存不连续,前一个指向下一个。

Vector:比ArrayList加入线程同步支持。

List和Set的区别:

a List是有序的,可以用get(i)获得第i个元素。Set是无序的,无法用get(i) b List允许重复 ,Set不允许

HashMap和TreeMap的区别:TreeMap自动按key从小到大排。HashMap:不允许key重复.如果重复,put的返回值为原来key的value。 TreeMap可以通过重写比较器,允许key重复,只要比较器返回0.

 

HashMap和HashTable的区别:HashMap允许key为null,HashTable不允许。

 

重写 比较器,实现TreeSet和TreeMap的顺序重拍。看代码。 使用内部静态类,实现  Comparator接口。

 

实现文本文件读写的两种方式。

按字节读写:FileOutputStream–保存,fs.close();句柄。

按字符读写:FileWriter–保存, .记得bw.flush();bw.close();

 

实现二进制文件读写的两种方式。

a 让对象实现序列化接口.调用writeObject方法写入。

b 对象的每个属性都写入。DataOutputStream.

 

异常和错误的区别:错误一般来说难于捕获或难于恢复。比如:函数一直调用自己,堆栈溢出。

 

异常可以捕获,捕获后程序可以继续运行。

举几个运行时异常的子类(RunTimeException):ArrayIndexOutofBoundException–数组越界;

NullPointerException;Arithrim….数学异常。

注意:I/O异常不是运行期异常的子类。

 

 

finally的作用(强制执行),在finally中是否可以修改方法的返回值:finally中无法修改原来的返回值变量,但可以在finnaly用return来替代原来的返回值。。

 

throws和 throw的区别:throws声明该方法会抛出异常。

throw 是手动抛出异常。

 

什么叫做“指定泛型参数”.List<Student>,有哪两个好处?a 避免强制转换,提高运行速度 b 将运行期异常提早到编译期。

 

线程的两种实现方法:extends Thread /implements Runnable.

start()和 run()的区别:start()是开启一个新线程并运行run方法。run是在原来的线程运行run方法。

 

未经允许不得转载:Java学习 » java面试题(二)

分享到:更多 ()

评论 抢沙发