第一次遇到比较正规的面试就被吊起来打,记录一下

进去先是手写一个小时的算法题,第一题是不用java String.split切割字符串,我没写当初想的是字符串分成字符数组和正则匹配,不过都有些难手写就没写了,后来想一想还可以通过另一种用,String.indexOf找到字符串然后substring切成一个个,不过当初也不知道indexOf是匹配字符还是匹配字符串的估计当场也写不出来。
用substring大概思路是这样吧:

public static ArrayList getString(String strs,String spe){

    ArrayList 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 start = new ArrayList();  
    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进程间通讯,网上很多就不说了,自然能说的越详细越好。

你可能感兴趣的:(第一次遇到比较正规的面试就被吊起来打,记录一下)