没有那些花花肠子, 上来连自我介绍都省了, 直接看你的简历, 开始提问
实习的时候干得啥?比如…
接下来就是使用 ZOOM 进行共享屏幕开始, 写代码
第一题: 单例模式
‘’ 简单的吧 ! ‘’
第一次写出来的
public class Singleton {
private static volatile Singleton instance;
public static Singleton getIntance() {
if (instance == null) {
synchronized (Singleton.class) {
if(instance ==null) {
instance = new Singleton();
return instance;
}
}
}
return null;
}
}
面试官说review一下
第二次
public class Singleton {
private static volatile Singleton instance;
public static Singleton getIntance() {
if (instance == null) {
synchronized (Singleton.class) {
if(instance ==null) {
instance = new Singleton();
// 不能在这里进行 return 了嘛, 面试官说, 你这个单例准备给谁用呢?
// 单例的意思是 : 只能创建一次对象, 而不是像现在写的一样 , 只会创建一次对象
// return instance;
}
}
}
// return null;
return instance;
}
}
再 review仔细一点, 你这个 对象我在外面还是能 **new Singleton()**的形式new一个出来啊!
第三次, 写博客的时候才想到,(面试的结果当然是凉凉啦)
public class Singleton {
private static volatile Singleton instance;
// 在不给对象进行构造函数的创建的时候, java会默认创建一个 public 类型的构造函数 , 重点就在这里了, 那么解决方式不就显而易见了
// 创建一个私有的构造函数 , 那么获取对象时候只能通过 调用我们的 getInstance() 方法来获取了
private Singleton(){}
public static Singleton getIntance() {
if (instance == null) {
synchronized (Singleton.class) {
if(instance ==null) {
instance = new Singleton();
// 不能在这里进行 return 了嘛, 面试官说, 你这个单例准备给谁用呢?
// 单例的意思是 : 只能创建一次对象, 而不是像现在写的一样 , 只会创建一次对象
// return instance;
}
}
}
// return null;
return instance;
}
}
第二题 : 二分法查找 一个带有重复数的下标
" 简单的吧 ! "
到现在都还是不太明白,怎么搞--------------普通的二分法
// 二分法使用的前提是 , 集合已经排好顺序了, 比如 有序数组等 , 有序很重要
public static int search(int[] arr, int key) {
int start = 0;
int end = arr.length - 1;
while (start <= end) {
// 找到中间的数. 直接舍去小数部分
int middle = (start + end) / 2;
if (key < arr[middle]) {
end = middle - 1;
} else if (key > arr[middle]) {
start = middle + 1;
} else {
return middle;
}
}
return -1;
}