java笔试题回忆录

匿名网友 匿名网友 发布于: 2015-08-30 00:00:00
阅读 158 收藏 0 点赞 0 评论 0

前几日参加一家公司的java笔试题,今日归纳总结下,答案大部分自己总结的可能不太完美,请给位看官看后指出,本人也好跟后面学习!!

1HashMap和Hashtable的区别.

当时看到这道题时我懵了,这怎么回答呢,后来把思路整理下回答如下:
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,在只有一个线程访问的情况下,效率要高于Hashtable。 
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。 
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 
后来我在网上又看了一些答案觉得有最重要一点区别没有说那就是:

Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 
2.GC是什么? 为什么要有GC?
呵呵当时这道题我未做出看来,现在学习后才知道:GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
我觉得java这点比c++好
3.排序都有哪几种方法?请列举。用JAVA实现一个快速排序。
呵呵其实这道题我们只要知道排序思想就好办了

public class XuhantingQuickSort {
/**
* 快速排序
* @param strDate
* @param left
* @param right
*/
public void quickSort(String[] strDate,int left,int right){
String middle,tempDate;
int i,j;
i=left;
j=right;
middle=strDate[(i+j)/2];
do{
while(strDate.compareTo(middle)<0&& i<right)
i++; //找出左边比中间值大的数
while(strDate[j].compareTo(middle)>0&& j>left)
j–; //找出右边比中间值小的数
if(i<=j){ //将左边大的数和右边小的数进行替换
tempDate=strDate;
strDate=strDate[j];
strDate[j]=tempDate;
i++;
j–;
}
}while(i<=j); //当两者交错时停止

if(i<right){
quickSort(strDate,i,right);//从
}
if(j>left){
quickSort(strDate,left,j);
}
}
/**
* @param args
*/
public static void main(String[] args){
String[] strVoid=new String[]{“11″,”66″,”22″,”0″,”55″,”22″,”0″,”32″};
XuhantingQuickSort sort=new XuhantingQuickSort();
sort.quickSort(strVoid,0,strVoid.length-1);
for(int i=0;i<strVoid.length;i++){
System.out.println(strVoid+” “);
}
}

}

评论列表
文章目录