java面试问题收集。-未完持续

来源:互联网 发布:大学生兼职被骗数据 编辑:程序博客网 时间:2024/06/03 20:52
Java基础方面:

1,作用域public,protected,private,以及不写时的区别

1publicpublic表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用

2privateprivate表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。

3protectedprotected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部classprotected就变成private

作用域 当前类 同一package 子孙类 其他package 

public       √ √ √ √ 
protected √ √ √ × 
friendly     √ √ × × 
private     √ × × × 
不写时默认为friendly 

2,ArrayList和Vector的区别,HashMap和Hashtable的区别
1.ArrayList和Vector的区别:
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半。
PS:以下内容来自:(《corejava》卷2第88页)
现在为什么要用ArrayList类来代替Vector了呢?原因很简单:Vector类的所有方法都是同步的。你可以用两个线程安全的访问Vector对象。但是,如果你只用单个线程来访问Vector对象——这是更加常见的情况——那么你的代码将会在同步操作上浪费相当多的时间。相反,ArrayList类的方法不是同步的。因此我们建议你在不需要同步时使用ArrayList而不是Vector。

jdk:ArrayList与Vector也都是实现相同的接口,并且继承自相同的AbstractList类;它们的方法几乎也一模一样。
ArrayList类:
java.lang.Object
  java.util.AbstractCollection<E>
      java.util.AbstractList<E>
          java.util.ArrayList<E>
All Implemented Interfaces: 
Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess 


Vector类:
java.lang.Object
  java.util.AbstractCollection<E>
      java.util.AbstractList<E>
          java.util.Vector<E>
All Implemented Interfaces: 
Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess 


就HashMap与HashTable主要从三方面来说。 
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现 
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value
PS:以下内容来自:(《corejava 卷2》第119页)
Hashtable类的作用与HashMap类是相同的,实际上它们拥有相同的接口。与Vector类的方法一样,Hashtable类的各个方法也是同步的。如果你不需要同步也不需要与遗留代码相兼容,你就应该使用HashMap类。

注意:Hashtable的类名字,table的"t"是小写,在windows系统,如果你使用HashTable,会报出一些奇怪的出错信息,因为windows文件系统不区分大小写,而java编译器则是区分大小写的。
jdk:HashMap与HashTable都实现了相同的接口,这两个类拥有一模一样的方法,不过它们不是继承自同一个类。
HashMap:
java.lang.Object
  java.util.AbstractMap<K,V>
      java.util.HashMap<K,V>
All Implemented Interfaces: 
Serializable, Cloneable, Map<K,V> 


Hashtable:
java.lang.Object
  java.util.Dictionary<K,V>
      java.util.Hashtable<K,V>
All Implemented Interfaces: 
Serializable, Cloneable, Map<K,V> 

3,char型变量能不能定义为一个中文?为什么?

能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的


4,多线程有几种表示方法,都是什么?同步有几种实现方法,都是什么?

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 
同步的实现方面有两种,分别是synchronized,wait与notify

5,继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?

父类: 
package test; 
public class FatherClass 

public FatherClass() 

System.out.println("FatherClass Create"; 


子类: 
package test; 
import test.FatherClass; 
public class ChildClass extends FatherClass 

public ChildClass() 

System.out.println("ChildClass Create"; 

public static void main(String[] args) 

FatherClass fc = new FatherClass(); 
ChildClass cc = new ChildClass(); 






输出结果: 
C:>java test.ChildClass 
FatherClass Create 
FatherClass Create 
ChildClass Create

6,内部类的实现方式?

使用匿名内部类课使代码更加简洁、紧凑,模块化程度更高。内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到。然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式:第一种,继承一个类,重写其方法;第二种,实现一个接口(可以是多个),实现其方法。

7,垃圾回收机制,如何优化程序?

使用NEW对象时候,java虚拟机会自动对对象分配的内存进行跟踪,java虚拟机会自动判断出对象是否还被引用,对不再被引用的对象,java对他实行释放内存操作。

8,float型float f=3.4是否正确?

不对,应该使用强制转换类型。float f=(float)3.4

0 0