1、写一段代码在遍历 ArrayList 时移除一个元素?
该问题的关键在于面试者使用的是 ArrayList 的 remove() 还是 Iterator 的 remove()方法。
Iterator it= list.iterator();
while(it.hasNext()) {
if(...) {
it.remove();
}
}
2、怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串?
String s1 = "你好";
String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1");
3、如何实现字符串的反转及替换?
方法一:通过StringBuiler的reverse()的方法,最快的方式
public String reverseStr(String str) {
StringBuilder sb = new StringBuilder(str);
return sb.reverse().toString();
}
方法二:逆序遍历法(将字符串转换成字符数组,可对数组进行逆序遍历)
public String reverseStr(String str){
char[] c = str.toCharArray();
StringBuilder sb = new StringBuilder();
for(int i=c.length-1;i>=0;i--){
sb.append(c[i]);
}
return sb.toString();
}
方法三:递归法
public String reverse(String str) {
if(str == null || str.length() <= 1)
return str;
return reverse(str.substring(1)) + str.charAt(0);
}
4、用Java写一个单例类?
- 饿汉式单例
public class Singleton {
private Singleton(){}
private static Singleton instance = new Singleton();
public static Singleton getInstance(){
return instance;
}
}
- 懒汉式单例
public class Singleton {
private Singleton() {}
private static Singleton instance = null;
public static synchronized Singleton getInstance(){
if (instance == null)
instance = new Singleton();
return instance;
}
}
注意:实现一个单例有两点注意事项,①将构造器私有,不允许外界通过构造器创建对象;②通过公开的静态方法向外界返回类的唯一实例。这里有一个问题可以思考:Spring的IoC容器可以为普通的类创建单例,它是怎么做到的呢?(将bean的作用域设置为singleton)
5、用Java写一个冒泡排序?
/**
* 冒泡排序
*/
private static void bubbleSort(int[] arr) {
int temp;
boolean flag;//标志位:循环开始时置为true,如果循环中发生数据交换(有排序行为),则置为false;如果没有发生数据交换,则跳出循环
for (int i = 0; i < arr.length - 1; i++) {
flag = true;
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = false;
}
}
if (flag) {//没有发生交换(表示已经是有序的了)则退出循环;
break;
}
}
}
6、用Java写一个折半查找(二分查找)?
private static int binarySerach(int[] arr, int key) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] < key) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
7、