今天去朝阳门附近一家叫“阳光互信”的公司面试了,这是阳光保险下面的一家子公司。进到他们工作区,感觉氛围和环境还不错,所以我当时就有不好的预感,他妈的我又要打酱油了。最近面试都面出心理阴影了,感觉稍微好一点的公司我都无缘,呵呵。
前台接待的妹子给我两页笔试题和一张个人信息表,对于这种表我也是挺烦的,本来面试成功率就不高,就不能面试通过之后再填吗?很多时候都他妈的没用啊。拿过题看了下,又是Activity生命周期,五种布局之类的无聊题目,不过有一个题问自定义异常是继承RuntimeException类还是Exception类,这我有点拿不准了。但是我印象中从来都是继承Exception的,我刚才去查了些资料,也没说自定义异常不能继承RuntimeException的,不知道这个题目考查的是啥。
然后是一个如何加载libJNITest.so动态库的问题,一个Binder在哪些场景下使用的问题,这都什么破题。最后是一个二分查找的编程题,要求用两种方法做。我现场没能写出来,回来之后我在Studio上写了一下,代码如下:
public class BinarySearch {
public static void main(String[] args) {
BinarySearch bs = new BinarySearch();
int[] source = new int[] {-1, 0, 3, 10, 22, 34, 56, 90, 103, 200};
Print.print("the target index is " + bs.binarySearchRecursive(source, 0, source.length, 200));
Print.print("the target index is " + bs.binarySearchLoop(source, 0, source.length, 200));
}
// 递归式
private int binarySearchRecursive(int[] sourseData, int startIndex, int endIndex, int searchTarget) {
if (startIndex <= endIndex) {
int mid = (startIndex + endIndex) / 2;
if (searchTarget > sourseData[mid]) {
return binarySearchRecursive(sourseData, mid + 1, endIndex, searchTarget);
} else if (searchTarget < sourseData[mid]) {
return binarySearchRecursive(sourseData, startIndex, mid - 1, searchTarget);
} else {
return mid;
}
}
return -1;
}
// 循环式
private int binarySearchLoop(int[] sourseData, int startIndex, int endIndex, int searchTarget) {
while (startIndex <= endIndex) {
int mid = (startIndex + endIndex) / 2;
if (searchTarget > sourseData[mid]) {
startIndex = mid + 1;
} else if (searchTarget < sourseData[mid]){
endIndex = mid - 1;
} else {
return mid;
}
}
return -1;
}
}