Android 面试复习资料

Android面试题总结

1.handler

1.handelr机制
2.子线程创建handler需要注意启动looper
3.handlerThread的原理:在run方法中创建了一个looper
4.handler导致内存泄漏的原因
5.handler.postDelay的实现原理
6.messagequeue阻塞与唤醒的实现原理
7.messagequeue数据结构是什么
8.一个线程为什么只有一个looper
9.looper怎么区分message的目标handler是哪个
10.looper为什么没有阻塞主线程
11. ThreadLocal原理

参考文章:

  • 1.腾讯Android面试:Handler中有Loop死循环,为什么没有阻塞主线程,原理是什么
  • 2.Android Handler postDelayed的原理
  • 3.找到一篇关于“MessageQueue”的好文章
  • 4.Android消息机制Handler,有必要再讲一次
  • 5.ThreadLocal 原理
  • Android异步消息处理机制(源码分析+面试题)

2.intentService

1.intentService为什么能够执行耗时操作?

答:IntentService中的onCreat方法中创建了handlerThread,
利用handlerTread中的looper创建了ServiceHandler,
而ServiceHandler中的handleMessage中调用的是IntentService中的onHandlerIntent方法,所以可以在handleIntent中进行耗时操作

2.IntentService为什么只能用StartService来开启服务?

答:因为传递的intent最后都会封装成message最后由serviceHandler发送到子线程的消息队列,而serviceHandler发送的过程是在onStartCommand中完成的,所以要想走到onStartCommand生命周期只能使用startService

3.service

1.startService的生命周期?

答:onCreate->onStartCommand->ondestry

2.重复调用startService会走哪些方法?

答:会重复走onStartCommand方法

3.binderService的生命周期?

答:onCreat->onBind->onUnbind->ondestry

4.重复调用unbindService会走那些方法?

答:服务绑定后不会重复绑定

5.混合绑定先startService再bindService的生命周期?

答:onCreat->onStartCommand->onBind->onUnbind->onDestry
注意先解绑unbindService在stopService

4.广播

1.广播有几种,区别是什么?

答:有序广播:可以被拦截和修改
无序广播:不可以被拦截

2.广播注册有几种区别是什么?

答:动态注册:代码注册,组件结束广播就结束,组件移除前先移除广播,避免发生内存泄漏
静态注册:清单文件注册,常驻系统,不受组件的生命周期影响,但是耗电占内存

3.广播的原理?

答:集成BroadCast重写onRecive方法,通过bindler向AMS注册广播,通过bindler向AMS来发送广播,AMS通过intentFelter找到合适的BroadCastReciver,把消息发送到对应的BroadCastReciver的消息队列中,回调onRecive方法

5.contentProvider,ContentReciver,ContentObserve

1.广播发送原理

6.fragment

1.fragement的理解?
2.fragement和activity的数据交互?
3.fragement的生命周期?
4.fragement重复添加?

6.Activity

1.Activity的生命周期
2.Acitivty的启动过程

Activity启动流程源码分析
Activity启动流程

3.Activity的启动模式,A跳转B,B返回A

android的启动模式

4.主线程为什么不用创建looper

ActivityThread的main方法究竟做了什么?

7.intent

1.intent传递数据有大小限制吗,为什么是1M?

答: 探究intent传递大小限制

9.事件等的传递机制

1.事件冲突解决?

Android面试题(三)——View的事件体系和工作原理

10.view的绘制

1.view的绘制流程?

Android 绘制原理浅析「干货」

2.requestLayout的原理?
3.invalidat和postInvalidat的区别?
4.measureSpeace是什么,有几种模式,由什么组成的?

MeasureSpec 到底是个啥!

4.自定义view?

答:1.自定义组合view
2.自定义继承view
3.自定义绘制view

5.RelativeLayout和LinearLayout性能分析

Android中RelativeLayout和LinearLayout性能分析

6.动画的分类

Android 属性动画:这是一篇全面 & 详细的 属性动画 总结&攻略

11.Apk的打包流程?

12.Apk的安装流程?

13.activity的启动流程?

14.Binder的原理?

  • 阿里巴巴面试:Binder通信原理与机制

15.内存泄漏?

1.handler导致内存泄漏
2.线程内部类导致
3.资源未释放
4.静态变量和单例模式导致内存泄漏,主要是持有content引用
5.leakCanary的原理

16.Android几种进程

前台进程
可见进程
服务进程
后台进程
空进程

17.SharedPreference

1.SharedPreference的原理?
  • Android之不要滥用SharedPreferences
2.SharedPreference使用注意事项?

18.进程包活的思路

  • 阿里巴巴面试 :进程保活如何做到,你们保活率有多高

19.序列化

Serializable和Parceable的区别?
Serializable和Parceable的原理?

20.Bitmap

Bitmap的大小如何计算?
Bitmap压缩处理?
列表图片三级缓存?

21.内存缓存,磁盘缓存,

LruCache的原理?

22.PatchClassLoad和DexClassLoad

23.js互掉

24.热修复原理?

  • Android 类加载机制以及基于类加载机制的热修复
  • 腾讯面试合集:热修复连环炮热修复是什么 有接触过tinker吗,tinker原理是什么

25.性能优化

  • 布局优化:include viewStub merge
  • 图片优化:图片缩放处理,图片缓存处理Glide
  • 内存优化:内存泄漏 内存溢出
    参考文章:
  • android APP性能优化总结
  • Android性能优化面试题集锦
  • 最全的Android内存优化技巧
  • 不可思议的OOM
  • 想让安卓app不再卡顿?看这篇文章就够了
  • Android App卡顿分析,以及使用Choreographer进行帧率统计监测
  • RecycleView性能优化

26.64K问题

27.MVP和MVC和MVVM

28.person p=new Person();

29.jvm的结构

  • 深入浅出 Java 虚拟机 是你通往高级 Java 开发的必经之路
  • JVM类加载机制

30.GC

31.计算机五层模型

  • 聊一聊计算机网络的五层模型
  • 计算机网络五层模型复习

32.http和https区别

  • HTTPS加密过程和TLS证书验证
  • https原理:证书传递、验证和数据加密、解密过程解析
  • 面试官常问问题(1)-http 和 https 区别、https 是如何保证数据安全的
  • 菜鸟教程——http和Https、SSL

32.http请求流程

  • Https原理及流程

32.DNS流程

  • 互联网基础服务之DNS—基础篇

33.集合

  • jdk1.8 HashMap红黑树源码解析
  • 图解LinkedHashMap原理
  • 图解HashMap原理
  • 聊聊HashMap
  • 并发编程——ConcurrentHashMap#addCount() 分析
  • HashMap,ArrayMap,SparseArray源码分析及性能对比
  • HashMap深度分析
  • 死磕 java集合之终结篇
  • 面试官:”准备用HashMap存1w条数据,构造时传10000会触发扩容吗?“
  • HashMap为什么选择红黑树

34.线程

  • java面试题之多线程
  • Android中多线程切换的几种方法
  • 2019中级Android开发面试解答之线程篇
  • Android 多线程:AsyncTask的原理 及其源码分析
  • android 多线程 — 线程的面试题和答案
  • EventBus 3.0 源码分析
  • Retrofit分析-漂亮的解耦套路
  • 网络加载框架 - Retrofit
  • OKHttp源码解析(一)--初阶
  • 盘它,okhttp3吊炸天源码分析(一):同步、异步请求源码解析
  • 线程、多线程和线程池面试专题

35.源码分析

  • RxJava 从入门到放弃再到不离不弃
  • RxJava 之 Android使用初体验
  • 我们真的需要使用RxJava+Retrofit吗?
  • 一步一步带你认识MVP+Retrofit+Rxjava并封装
  • Retrofit 2.x 的使用,优势,源码分析和启发
  • OkHttp3 HTTP请求执行流程分析

36.优秀面试题

  • 妹子面试阿里,面试官竟问她有没有男朋友?面试真题「PDF分享」
  • 金九银十中,看看这31道Android面试题
  • Android面试心得,已拿到offer
  • 2019Android大厂面试必问系列(可收藏)
  • 6年Android程序员的面试心得(可收藏)
  • Android面试一天一题(Day 37:一套高级工程师的面试题)
  • 2020字节跳动春招客户端开发岗面经
  • 360面试心得(Android)
  • 分享一份非常强势的Android面试题360+小米+BAT多家公司面试题汇总
  • 最新百度、头条、小米、360、网易、等公司 Android 社招面试心得
  • 2019 百度、头条、小米、360、网易、拼多多等公司 Android 社招面试心得
  • Android面试题:小米+百度+360+美团
  • 2018 Android面试心得,已拿到offer
  • 比较高级的Android面试题
  • Android 面试之 Android 篇二

37.java

  • 详解synchronized与Lock的区别与使用
  • 头条,华为面试高频题;Java中的锁有哪些?以及区别
  • Java 经典问题
  • Java 的泛型擦除和运行时泛型信息获取
  • 分析int和Integer的区别
  • 父类的静态方法能不能被子类重写
  • 常见面试题:Java值传递深度解析

38.Android

  • 腾讯Android面试:系统如何加载一个dex文件,他的底层原理是怎么实现的
  • 在腾讯面试,被问到组件化如何实现,组件化与插件化的差别在哪里,该怎么选型?
  • 关于onActivityResult的resultCode为0的异常
  • Android埋点,减少对业务代码的入侵
  • 阿里巴巴 说说 Android 虚拟机Dalvik与ART区别在哪里?

38.Android 各个版本的区别

主要记住一些大版本变化:

  • android3.0 代号Honeycomb, 引入Fragments, ActionBar,属性动画,硬件加速
  • android4.0 代号Ice Cream,API14:截图功能,人脸识别,虚拟按键,3D优化驱动
  • android5.0 代号Lollipop API21:调整桌面图标及部件透明度等
  • android6.0 代号M Marshmallow API23,软件权限管理,安卓支付,指纹支持,App关联,
  • android7.0 代号N Preview API24,多窗口支持(不影响Activity生命周期),增加了JIT编译器,引入了新的应用签名方案APK Signature Scheme v2(缩短应用安装时间和更多未授权APK文件更改保护),严格了权限访问
  • android8.0 代号O API26,取消静态广播注册,限制后台进程调用手机资源,桌面图标自适应
  • android9.0 代号P API27,加强电池管理,系统界面添加了Home虚拟键,提供人工智能API,支持免打扰模式

你可能感兴趣的:(Android 面试复习资料)