进去先是手写一个小时的算法题,第一题是不用java String.split切割字符串,我没写当初想的是字符串分成字符数组和正则匹配,不过都有些难手写就没写了,后来想一想还可以通过另一种用,String.indexOf找到字符串然后substring切成一个个,不过当初也不知道indexOf是匹配字符还是匹配字符串的估计当场也写不出来。
用substring大概思路是这样吧:
public static ArrayList<String> getString(String strs,String spe){
ArrayList<String> arrStr = new ArrayList();
while(true){
int index = strs.indexOf(spe);
if(index>-1){
if(index != 0){
arrStr.add(strs.substring(0,index-1));
}
strs = strs.substring(index+2,strs.length());
}else{
arrStr.add(strs);
break;
}
}
return arrStr;
}
第二道题是找n里面最大的质数吧,找质数不算很难没想到我还是掉坑里去了。
第三题是1000个数在区间[0,999]其中有两个是重复的,求重复的数
第四道题是约瑟夫环,以前可能看过,可是具体实现忘了,时间问题直接贴个网上找的代码,虽然我感觉将来可能又忘了:
public static void yuesefu(int totalNum, int countNum) {
// 初始化人数
List<Integer> start = new ArrayList<Integer>();
for (int i = 1; i <= totalNum; i++) {
start.add(i);
}
//从第K个开始计数
int k = 0;
while (start.size() >0) {
k = k + countNum;
//第m人的索引位置
k = k % (start.size()) - 1;
// 判断是否到队尾
if (k < 0) {
System.out.println(start.get(start.size()-1));
start.remove(start.size() - 1);
k = 0;
} else {
System.out.println(start.get(k));
start.remove(k);
}
} }
最后一道题是求26个字母的所有组合排列,列如:a,b,c,ab,ac,abc,ads,a-z;都是,这道题没什么思路啊,希望有做过的大牛,小牛说说。
面试题问的是Activity的生命周期,怪我面试题看得不够:
一,当由Activity A跳转到Activity B时的执行顺序
A的onFreeze()>A的onPause() > B的onCreate() > B的onStart() > B的onResume() > A的onStop()
二,当按返回按钮由Activity B返回到Activity A时的执行顺序
B的onPause() >A的onRestart()> A的onStart() > A的onResume() > B的onStop() > B的onDestroy()
android的启动模式,还有singletop,singletask启动时activity在顶层时会调用onNewIntent(),而他还问了在这两个模式下,同一个和不同activity startactivity和finish的生命周期,这个当时我就懵逼了,还真没研究过,后来网上找找发现android7.0在这两种启动模式的生命周期和以前的好像还有些不一样,具体的下次写demo研究研究。
还有道Android进程间通讯,网上很多就不说了,自然能说的越详细越好。