0
点赞
收藏
分享

微信扫一扫

Android实际面试被问到问题总结归纳


面试注意事项


 1 知之为知之。不要糊弄。


 2 不要有小动作。会显得心虚。


 3 不要谦虚,不要睥睨天下的感觉 把握好尺度。


4 不要停下来 面试官问你一个问题 你就把你知道的都说一遍 面试官不说停 你也别停


1 activity怎么传递数据 


 方案1 intent 可以传递些基本类型或者实现Serializable或者parcelable的序列化对象


方案2 使用public static 修饰 但是生命周期过长 不推荐使用


方案3 使用inputStream存储 或者SQLite 或者contentProvider或者sharedpreferences


2 gravity和layout_gravity的区别 


 gravity是相对与自己 比如button里面写个TextView 里面加属性left 该TextView的字体就会在button最左边开始


layout_gravity写left属性的话是相对与 父容器  会在父布局的左边


3 res目录有几项Resource 分别作用是什么 


drawable 存放图片和selector和shape等资源文件


layout 存放布局


mipmap 存放适配好的图pain


valuse 存放一些用到的字符串或者颜色和样式


xml存放一些配置文件



4 处理触屏事件的方法 和他们之间的关系 


onTouchevent 当onTouchenent处理的时候 就是返回true的时候就onClickListener就会不处理了


事件先由父布局分发下来 父容器如果拦截的话 就在父容器的onTOuchevent里处理 否则就向下传递 直到子view 子view如果也不处理的话就会以冒泡的形式传给父容器并且默认消费


5 margin和padding的区别  


margin是指从自身边框到另一个容器边框之间的距离,就是容器外距离。在CSS中padding是指自身边框到自身内部另一个容器边框之间的距离,就是容器内距离。


6 简述mvp和mvc mvc中的c后来放到了mvp中的那里


后来的c没有了 转换成了p的接口


mvp的v之中只有简单的set和get方法 没有任何逻辑了


7 view的刷新机制 


Invalidate()方法和postInvalidate()都可以在主线程中调用而刷新视图。


8 handler原理机制 


9手写算法 冒泡 插入排序 快速排序 


冒泡很简单~~


private static void maoPao(int[] arrs) {
        for (int i = 0; i < arrs.length-1; i++) {
            for (int j = 0; j <  arrs.length-1-i; j++) {
                if(arrs[j]>arrs[j+1]){
                    int temp=arrs[j];
                    arrs[j]=arrs[j+1];
                    arrs[j+1]=temp;
                }

            }
        }
        System.out.println(Arrays.toString(arrs));
    }

快速就用到了递归


private static void quickSort(int[] arrs) {
        if(arrs.length>0){
            //如果数组不为空
            quickSortRecurSion(arrs,0,arrs.length-1);
        }
        System.out.println(Arrays.toString(arrs));

    }

    private static void quickSortRecurSion(int[] arrs, int low, int high) {
        if(low<high){
            //将list数组一分为二
            int  middle=getMiddle(arrs,low,high);
            //对低字表进行排序
            quickSortRecurSion(arrs,low,middle-1);
            //对高字表进行排序
            quickSortRecurSion(arrs,middle+1,high);

        }

    }

    private static int getMiddle(int[] arrs, int low, int high) {
        //数组第一个作为中轴
        int temp=arrs[low];
        while (low<high){
            while (low<high&&arrs[high]>=temp){
                high--;
            }
            //比较轴小的记录移到低端
            arrs[low]=arrs[high];
            while (low<high&&arrs[low]<temp){
                low++;
            }
            //比中轴大的记录移到高端
            arrs[high]=arrs[low];
            //返回中轴的位置

        }
        //中轴记录到尾
        arrs[low]=temp;
        return low;
    }


插入排序就是从数组第三个开始往前插入


private static void insertSort(int[] arrs) {
        for (int i =0 ; i < arrs.length; i++) {
            //待插入数据
            int temp=arrs[i];
            int j=0;
            for (j=i-1;j>=0;j--){
                //判断是否大于temp 大于则后移一步i
                if(arrs[j]>temp){
                    arrs[j+1]=arrs[j];
                }else{
                    break;
                }

            }
            arrs[j+1]=temp;

            System.out.println(i+":"+ Arrays.toString(arrs));
        }

    }






10 写出你所了解的设计模式



举报

相关推荐

0 条评论