13 September 2014

面试题目

##我想出的笔试题目

算法题目

  1. 实现一个链表,提供一个插入方法,要求数据内不会有重复元素,并且按时间戳排列。

class mode{ int id, long ts } void insert(){

}

  1. 判断n!有几个零

  2. 输出一个二分树的所有路径

  3. 唯一的数字

  4. 一个排序数组 给出一个数 找出大于这个数中最小的数

  5. 一个排序的数组 找出 3 5 7 8 11 15 16 找 12 [-3,3,6,9]

  6. 一个数组,里面有一个数出现的次数大于一半,找出它。 (快排或count计数法)

android面试题

  1. 线程并发 线程池

  2. 内存泄露 界面卡顿 性能优化经验

  3. Binder 简要绘制流程

  4. ContentProvider原理 handler原理 epoll

  5. classloader的机制

  6. 熟悉MVP模式吗 android studio module

  7. Fragment与Fragment怎么传递信息?

其他软实力

  1. 你之前做的项目里有哪些你觉得特别不错的技术?

  2. 一般一个项目里面的各种java文件你是怎么分包的?

  3. 自定义动画卡顿的优化思路

  4. 项目中如何解耦合

listview view 点击理解 图文混排理解 多行混排


快排

public static void quickSort(int[] data, int start, int end) {
// 设置关键数据key为要排序数组的第一个元素,
// 即第一趟排序后,key右边的数全部比key大,key左边的数全部比key小
int key = data[start];
// 设置数组左边的索引,往右移动比key大的数
int i = start;
// 设置数组右边的索引,往左移动比key小的数
int j = end;
// 如果左边索引比右边索引小,则还有数据没有排序
while (i < j) {
while (data[j] >= key && j > i) {
j–;
}
data[i] = data[j];

        while (data[i] < key && i < j) {  
            i++;  
        }  
        data[j] = data[i];  
    }  
    // 此时 i==j  
    data[i] = key;  
  
    // 递归调用  
    if (i - 1 > start) {  
        // 递归调用,把key前面的完成排序  
        quickSort(data, start, i - 1);  
    }  
    if (i + 1 < end) {  
        // 递归调用,把key后面的完成排序  
        quickSort(data, i + 1, end);  
    }  
}  

求平方根

入求 100 的平方根, a 与 100/a 肯定是一个大于 100 的平方根,一个小于 100 的平方根的,以此迭代。


A activity 调用B activity 生命周期的调用顺序

A–onPause B–oncreate onstart onresume A–onStop 若A未被完全遮盖,即B透明,则 onStop 不一定会调用。


写一个LRU cache


apk 编译过程 介绍


SurfaceView 和 TextureView 的区别与优势

双缓冲,textture存在一些延迟



blog comments powered by Disqus