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

来源:互联网 发布:淘宝商城品牌旗舰店 编辑:程序博客网 时间:2024/06/14 00:17

面试注意事项

 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方法 没有任何逻辑了
http://blog.csdn.net/mp624183768/article/details/57074472



7 view的刷新机制 

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

8 handler原理机制 

http://blog.csdn.net/mp624183768/article/details/54969659



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 写出你所了解的设计模式

 http://blog.csdn.net/mp624183768/article/details/58035572

0 0