【面试】Android面试题集锦

持续更新…

Handler

  1. 谈谈消息机制Handler作用 ?有哪些要素 ?流程是怎样的 ?
  2. 一个线程能否创建多个Handler,Handler跟Looper之间的对应关系 ?
  3. Handler 引起的内存泄露原因以及最佳解决方案
  4. 软引用跟弱引用的区别
  5. 为什么系统不建议在子线程访问UI?
  6. Looper死循环为什么不会导致应用卡死?
  7. 使用Handler的postDealy后消息队列会有什么变化?
  8. 可以在子线程直接new一个Handler吗?怎么做?
  9. Message可以如何创建?哪种效果更好,为什么?
  10. Looper能创建多个实例嘛?能自己创建Looper实例嘛?
  11. 在子线程创建的handler能与主线程通信嘛?如果能怎么实现。
  12. handler,asyncTask有什么区别?

线程

  1. 线程池的好处? 四种线程池的使用场景,线程池的几个参数的理解?
  2. Android中还了解哪些方便线程切换的类?
  3. 讲讲AsyncTask的原理
  4. IntentService有什么用 ?
  5. 直接在Activity中创建一个thread跟在service中创建一个thread之间的区别
  6. ThreadPoolExecutor的工作策略 ?
  7. Handler、Thread和HandlerThread的差别?
  8. ThreadLocal的原理
  9. 多线程是否一定会高效(优缺点)
  10. 多线程中,让你做一个单例,你会怎么做
  11. 除了notify还有什么方式可以唤醒线程
  12. 什么是ANR ? 什么情况会出现ANR ?如何避免 ? 在不看代码的情况下如何快速定位出现ANR问题所在 ?
  13. 可重入锁的实现,公平锁非公平锁都是什么定义?
  14. 说说Android中线程池的实现
  15. 进程线程在操作系统中的实现
  16. 安卓线程间通信有哪几种方式
  17. 能在子线程创建handler嘛?有什么要注意的吗?
  18. 说一下为什么要用线程池?线程池的几个参数,以及它是怎么工作的?核心线程数一般有多少?
  19. Android多线程的实现方式有哪些?
  20. Android开发中何时使用多进程?使用多进程的好处是什么?

数据结构与算法

  1. 都用过那些常用的数据结构,说说对树的了解?
  2. 快排写一下,动态规划了解吗?
  3. 冒泡排序的链表实现
  4. HashMap如果Hash冲突了怎么解决?
  5. 双线程通过线程同步的方式打印12121212…….
  6. 快排 堆排 选择排序
  7. 二叉树排序方式
  8. 二分查找(手写)
  9. 10大排序算法

Bitmap

  1. Bitmap使用需要注意哪些问题 ?
  2. Bitmap.recycle()会立即回收么?什么时候会回收?如果没有地方使用这个Bitmap,为什么垃圾回收不会直接回收?
  3. 一张Bitmap所占内存以及内存占用的计算
  4. Android中缓存更新策略 ?
  5. LRU的原理 ?

性能优化

  1. 图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理?
  2. 内存中如果加载一张500*500的png高清图片.应该是占用多少的内存?
  3. WebView的性能优化 ?
  4. Bitmap如何处理大图,如一张30M的大图,如何预防OOM?
  5. 内存回收机制与GC算法(各种算法的优缺点以及应用场景);GC原理时机以及GC对象
  6. 内存泄露和内存溢出的区别 ?AS有什么工具可以检测内存泄露?
  7. 性能优化,怎么保证应用启动不卡顿? 黑白屏怎么处理?
  8. 强引用置为null,会不会被回收?
  9. ListView跟RecyclerView的区别?
  10. ListView的adapter是什么adapter?
  11. LinearLayout、FrameLayout、RelativeLayout性能对比,为什么?
  12. Android UI优化
  13. Android启动优化
  14. 屏幕适配方式
  15. apk瘦身技巧
  16. webp使用的注意事项
  17. 要做一个尽可能流畅的ListView,你平时在工作中如何进行优化的?
  18. Android下解决滑动冲突的常见思路是什么?
  19. 内存泄露检测有什么好方法?

设计模式

  1. 你所知道的设计模式有哪些?
  2. 谈谈MVC、MVP和MVVM,好在哪里,不好在哪里 ?
  3. 封装p层之后.如果p层数据过大,如何解决?
  4. 是否能从Android中举几个例子说说用到了什么设计模式 ?
  5. 装饰模式和代理模式有哪些区别 ?
  6. 实现单例模式有几种方法 ?懒汉式中双层锁的目的是什么 ?两次判空的目的又是什么 ?
  7. 用到的一些开源框架,介绍一个看过源码的,内部实现过程。
  8. Fragment如果在Adapter中使用应该如何解耦?
  9. 是否了解责任链模式?
  10. 说说你对设计模式的理解,开发过程中主要用到了哪些设计模式?
  11. 写个单例模式

Java

  1. 如何理解Java的多态?其中,重载和重写有什么区别?
  2. 谈一下JVM内存区域划分?哪部分是线程公有的,哪部分是私有的?
  3. final关键字的用法?
  4. 死锁是怎么导致的?如何定位死锁
  5. 数据库如何进行升级?SQLite增删改查的基础sql语句?
  6. Java内存模块分区和GC机制,GC算法有哪些
  7. HashMap的实现机制,怎么样HashMap线程安全
  8. Finalize机制
  9. 强引用 弱引用 软引用 虚引用的区别和使用场景
  10. 反射能反射私有方法以及静态方法嘛?

Broadcast

  1. Broadcast的分类?
  2. 广播中怎么进行网络请求

Activity

  1. Activity启动模式,allowReparent的特点和栈亲和性
  2. 异常生命周期
  3. 设备横竖屏切换的时候,接下来会发生什么?
  4. Activity A启动Activity B,这两个Activity生命周期变化顺序?

Service

  1. Service的两种启动模式?其生命周期各是什么?
  2. IntentService与普通Service的区别?

Android原理

  1. Android中的事件传递机制?
  2. ANR出现的情况有几种? 怎么分析解决ANR问题?
  3. 内存泄露的场景有哪些?内存泄漏分析工具使用方法?
  4. 如何实现启动优化,有什么工具可以使用?
  5. Android View绘制流程,当一个TextView的实例调用setText()方法后执行了什么
  6. Android dalvik虚拟机和Art虚拟机的优化升级点
  7. Android屏幕渲染机制
  8. 热修复的原理,你都了解过哪几种热修复框架
  9. OkHttp的原理
  10. Android 线程池的实现原理
  11. 从点击应用图标到进入应用,Android系统都做了哪些工作,期间涉及到的进程切换有哪些?
  12. Android事件传递流程和OnTouchListener的关系
  13. 双指缩放拖动大图
  14. RecyclerView绘制步骤和复用机制
  15. Activity遵循什么设计模式
  16. EventBus源码解析,遵循什么设计模式
  17. 系统的启动流程,从桌面点击图标开始。
  18. 自定义view的实现,以及注意事项
  19. MVC和MVP的区别,为什么要使用MVP?MVP有什么缺点嘛?
  20. 单例有哪几种?单例为什么要双重检查,优点? 那么双重检查就绝对是安全的嘛?
  21. 既然双重检查还不是绝对安全的,那么有没有办法完善呢?
  22. LRUCache原理
  23. Tinker热修复的原理
  24. 黄油刀(butterknife)实现原理
  25. rxjava是如何实现线程切换的
  26. 请介绍下AsyncTask的内部实现,适用的场景是?
  27. 如何把一个应用设置为系统应用?

进程间通信

  1. 说说你了解的IPC方法
  2. 说说Binder的大体实现
  3. 怎么控制另外一个进程的View显示
  4. Android中进程间通信有哪些实现方式?

网络

  1. HTTPS是怎么实现的?
  2. 客户端网络安全实现
  3. 对服务器众多错误码的处理(错误码有好几万个)
  4. HTTPS的组成是什么?
  5. tcp,udp的区别
  6. 为什么要三次握手
  7. tcp包过大怎么办?
  8. 网络传输你们是怎么加密的?

实际问题

  1. Android应用保活
  2. RemoteViews实现和使用场景
  3. LeakCanary的使用和实现原理
  4. 介绍一下你在开发过程中使用到的设计模式
  5. ClassLoader的双亲委托
  6. Android中的ClassLoader
  7. 各大图片框架之间的区别,如果让你自己实现,怎么实现?
  8. kotlin有什么优点,或者说你在使用它之前做了什么考虑?
  9. 如何实现一个bug统计框架(如bugly,友盟)
  10. 混淆的注意事项(反射不能混淆等),第三方框架能混淆嘛?
  11. 断点续传实现原理。怎么从断点处继续下载?下载完怎么确保文件是正确的?

基础

  1. 安卓的动画有哪几类,有什么区别
  2. 多个进程,会创建几个application实例?
  3. anr怎么定位

你可能感兴趣的:(Android,面试)