Android 面试题(不定时更新)

如果有错误或者不对的,希望大佬指出

科大讯飞的面试

是如何解决图片带来的OOM?

1.确定图片大小,可以先加载缩略图;
2.压缩图片质量;
3.根据控件实际大小加载对应大小的图片;
4.然后就是缓存,内存缓存,磁盘缓存,Lru缓存。

如何知道一张图片所占的内存?

1.分辨率 * 像素点; (width * height *像素点)

如果多线程中引用单例模式,会引发什么后果?如何解决?

后果(有大佬有好的文章,评论区贴一下):可能会出现多个单例(讲一下单例的3个模式(懒汉,饿汉,内部类)),讲一下3种模式的区别;
解决:加锁,引申到多线程的锁机制。

在子线程中new Handler 会怎么样?

很可能会延伸到Handler的源码,首先在子线程new Handler需要进行 Looper.loop 和Looper.prepare,使Handler进行工作,这个子线程会被handler一直持有,不会结束。大家可以写个例子

new Thread({
Looper.prepare()
     new Handler(){
       void hanlderMessage(){
        }
    }
handler.sendMessage()
Looper.loop()
//这句是不会执行的结果就是这样的,大家可以测试一下 需要调用handler.quitSalf()才会执行
Log.i(TAG,"log....") 
}).start()

安卓6.0的权限适配,8.0的权限适配?

6.0以后是运行时权限适配,8.0的权限分组

dp和px的关系?

等待有心人贴文章

屏幕分辨率的适配?

等待有心人贴文章

Service有几种启动方式?他们的生命周期又如何?

  1. start 和binder,2种方式
  2. start启动的生命周期不依赖某个组件,binder需要的生命周期依赖与一个组件
  3. 假设在A界面使用binder启动service,此时如果A界面退出,service会销毁
  4. 同样情况,A界面启动binder方式启动service,在B界面也用binder启动同一个service,这时service的生命周期不会重新执行.B界面销毁,serivce不会被销毁.A界面销毁,service会被销毁
  5. 可以得出,binder启动的service,是1个servive持有多个组件,等到持有的组件全部被销毁,service就会被销毁

android5.0 之后隐式启动Service会造成什么后果?如何解决?

有过多线程的编程经验吗?(线程池之类的)

说说Java中的设计原则?

String 类型能不能继承?

说说图片框架的缓存原理?

百度面试(无人驾驶事业部)

说说JVM虚拟机?

JAVA 类的加载机制?

ArrayList 的底层源码?

LinkedList 的底层源码?

Java 内存?

对比ArrayList 和LinkedList 的优缺点?

有没有看过一些框架的源码?(解析源码)

MVP 和MVC的不同?(解析架构)

你可能感兴趣的:(Android 面试题(不定时更新))