您的位置:首页 > 职场人生

面试题

2016-02-24 17:21 323 查看
1.引用变量

public class T {
public static void main(String[] args) {
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
operrater(a,b);
System.out.println(a+","+b);
}

public static void operrater(StringBuffer x,StringBuffer y) {
x.append(y);
y=x;
}
}


结果:AB,B

基本数据类型都是值传递,引用数据类型都是地址传递。

x.append(y)是对a指向地址内容的操作,故a的值会被改变。

y=x只是将y的地址指向x的地址,并未改变a指向地址里的内容。

2.时间复杂度的计算+排序

(1)找到执行次数最多的语句
(2)计算语句执行次数的数量级
(3)用大O来表示结果

import util.StringUtil;

/**
* 插入排序-直接插入排序
*/
public class T2 {

/**
* 插入排序-直接插入排序
*/
public void sort1(int[] array) {
int j;
for (int i = 1; i < array.length; i++) {
int temp = array[i];
for (j = i - 1; j >= 0 && array[j] > temp; j--) {
array[j + 1] = array[j];
}
array[j + 1] = temp;
}
}

/**
* 交换排序-冒泡排序
*/
public void sort2(int[] a) {
int temp;
for (int i = 0; i < a.length - 1; i++) {
boolean flag = false;
for (int j = a.length - 1; j > i; j--) {
if (a[j] < a[j - 1]) {
temp = a[j - 1];
a[j - 1] = a[j];
a[j] = temp;
flag = true;
}
}
if (!flag)
return;
}
}

/**
* 选择排序-简单选择排序
*/
public void sort3(int[] a) {
int temp;
for (int i = 0; i < a.length - 1; i++) {
int min = i;
for (int j = i + 1; j < a.length; j++) {
if (a[j] < a[min]) {
min = j;
}
}

if (min != i) {
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
}

public static void main(String[] args) {
int[] a = { 49, 38, 65, 97, 76, 13, 27 };
new T2().sort2(a);
StringUtil.show(a);
}

}


3.hashmap和hashtable的区别

hashmap

线程不安全

允许有null的键和值

效率高一点、

方法不是Synchronize的要提供外同步

有containsvalue和containsKey方法

HashMap 是Java1.2 引进的Map interface 的一个实现

HashMap是Hashtable的轻量级实现

hashtable

线程安全

不允许有null的键和值

效率稍低、

方法是是Synchronize的

有contains方法方法

、Hashtable 继承于Dictionary 类

Hashtable 比HashMap 要旧

  

  是否有序是否允许元素重复
Collection
List
SetAbstractSet
 HashSet
 TreeSet是(用二叉排序树)
MapAbstractMap使用key-value来映射和存储数据,key必须唯一,value可以重复
 HashMap
 TreeMap是(用二叉排序树)

3.数组遍历效率
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: