一家小公司android实习岗

昨天面试一家公司的android实习岗,竟然有一轮笔试和两轮面试。
笔试题:1.有一百万个整数,其中大概90%在区间[0,1000]内,剩下的在(1000,2147483648]之间。对这些数进行从小到大排序。

这道题当时没有想出什么好的方法,于是手写了一个归并排序上去,然后第一轮的面试官告诉我用桶排序,然而我之前只是听过并不了解。问我归并排序的时间复杂度。

2.将一个数组中的0全部放到数组的底部而不改变其他元素的顺序,要求空间复杂度为O(1)
我当时想的是限制了空间复杂度的话肯定不能创建新的数组了,所以我写了一个冒泡排序的改版,把所有0全部沉底了,然后问我这个算法的复杂度,我说是O(n2),然后问我有没有更快的,我说那用堆排序。他问我堆排序的复杂度,我说是O(nlogn),然后问我有没有O(n)的方法,我想不到就作罢了。

刚刚想出来了给一下答案:

public static void sort(int a[])
{    
    int numOfNotZero=0;    
    for( int i=0;i<a.length;i++)
  {        
       if (a[i] != 0)
    {         if (i != numOfNotZero)
       {           
              a[numOfNotZero] = a[i];           
        }            
           numOfNotZero++;       
    }   
  }    
    for(int i=numOfNotZero;i<a.length;i++)   
  {        
      a[i] = 0;    
  }
}

第一轮面试
1.图片的三级缓存是怎么实现的
2.软件升级时,数据库也发生了变动,怎么处理数据库同步?
3.说一说其中一个项目是怎么实现的
4.handle和service的区别
5.arraylist和LinkList的区别
6.httpclient的具体实现

第二轮面试:
1.图片三级缓存中的LRU算法是怎么实现的?
2.handle和Thread的区别
3.handle和service的区别
4.线程和service的区别
5.重写和重载的区别
6.面向对象的特性
7.接口的优势

然后就gg了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,846评论 25 708
  • 一、 C/C++程序基础 面试例题1——分析代码写输出(一般赋值语句的概念和方法)。 面试例题2—...
    LuckTime阅读 2,003评论 2 42
  • 1. 减少图层的Blend操作。展示半透明的view,设备会把当前图层和背景图层进行alpha叠加,这是很耗性能的...
    passionCai阅读 256评论 0 0
  • 从庄严肃穆的米兰大教堂出来,孩子们向着一群灰白相间的鸽子跑去。一个棕色皮肤、七八岁大的孩,捧来一把玉米粒儿,和我的...
    兰兮阅读 321评论 0 3
  • 蝉鸣穿过梧桐树,叶与叶的缝隙 唱响了整个夏季 地面的浮尘层层叠叠 行人的双足如火如炙 晨色中还算葱郁,精神抖擞的树...
    近者悦远者来阅读 220评论 0 4