面试注意事项
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