Android面试题记录
生命周期
View绘制,需要看一遍源码
事件分发
设计模式
java垃圾回收算法,可达算法
对象已死吗
1.引用计数算法
有人引用这个对象,+1,失效一个引用,-1;但是有个问题,有两个对象,互相引用,但是他们都没用了,怎么办?
2.可达算法
从根节点开始找寻,如果断了,就88。树的形式。不过就算断了,也不能直接宣判死刑。发现断了,会进行一次标记。至少进行2次标记才能干掉他。标记条件是啥,重写了finalize方法或者,finalize方法没有表调用过。这两种情况会进入一个队列,将会去执行他们的finalize方法,但是不一定会等这个方法运行结束。
垃圾回收算法
1.标记清除,统一回收,但是会有内存碎片。
2.复制算法。就是一半一半。每次就用一半,在回收的时候,把活着的对象弄到另一边,把死的清理了。但是利用率低了。
3.同上,811,用9。
4.老年代是一般存活15次以上的,对于老年代要用整理算法,死掉的,空出来的位置,后面的顶上,使之尽量整块化。
1.一个变量,一个数组,进行一个数组的倒置
如果知道长度,开个一半的循环就可以解决;但是长度如果是未知的,就不太明白了。
2.mn矩阵,右下会依次增大,如何在O(m+n)内找到一个数
我觉得dfs可以,全部遍历一遍。百度了一下,是杨氏矩阵查找。
怎么想出来的呢?从0,0开始无法判断0,1和1,0的大小。但是从4,1开始就可以!
- bool search_in_young_matrix(int arr[][4], int x, int y, int target)
- {
- if((x==width)||(y==height))
- return false;
- if(target<arr[x][y])
- return false;
- if(target==arr[x][y])
- return true;
- else
- {
- return search_in_young_matrix(arr,x+1,y,target) || search_in_young_matrix(arr,x+1,y,target);
- }
- }
面向对象
邮件系统,收件箱,发件箱,联系人,黑名单,应该设计哪几个类,A发给B的时候,这几个类是怎样的,B收到的时候,这几个类会怎样的,收发邮件这个操作应该是方法还是类。