• 安卓面经_anroid面经_111道安卓基础面试题全解析


    高级系列专栏:

    安卓(安卓系统开发也要掌握)


    嵌入式


    本人是2020年毕业于广东工业大学研究生:许乔丹,有国内大厂CVTE和世界500强企业安卓开发经验,该专栏整理本人对常见安卓高频开发面试题的理解;

    网上安卓资料千千万,笔者将继续维护专栏,一杯奶茶价格不止提供答案解析,承诺提供专栏内容免费技术答疑,直接咨询即可。助您提高安卓面试准备效率,为您面试保驾护航!

    答案地址:《Android高频面试题解析大全》

    目录

    第一部分:四大组件篇

    1、Activity

    • 请介绍Activity的生命周期?⭐⭐⭐⭐⭐
    • 请介绍Activity的4种启动模式?⭐⭐⭐⭐
    • 请说下切换横竖屏时 Activity的生命周期变化?⭐⭐⭐⭐

    2、Service

    • 请介绍Service的启动方式,启动方式的区别?⭐⭐⭐⭐⭐⭐
    • 请介绍Service的生命周期?⭐⭐⭐⭐⭐
    • Activity、Service、intent之间的联系?⭐⭐⭐⭐
    • 在Activity和Service中创建Thread的区别?(进阶题)⭐⭐⭐
    • android进程的优先级?以及如何保证Service不被杀死?(进阶题)⭐⭐⭐⭐

    3、BroadCast

    • 请介绍Android里广播的分类?⭐⭐⭐⭐
    • 程序A能否接收到程序B的广播?⭐⭐⭐
    • 请列举广播注册的方式,并简单描述其区别?⭐⭐⭐⭐⭐

    4、内容提供者

    • 什么是内容提供者?⭐⭐⭐⭐⭐
    • 简单介绍下 ContentProvider 是如何实现数据共享的(原理)?⭐⭐⭐⭐
    • 说说 ContentProvider、ContentResolver、ContentObserver 之间的关系?⭐⭐⭐⭐
    • 说说如何创建自己应用的内容提供者的使用场景。⭐⭐⭐
    • 说说ContentProvider的权限管理。⭐⭐⭐
    • 为什么要使用通过ContentResolver类从而与ContentProvider类进行交互,而不直接访问ContentProvider类?⭐⭐⭐
    • ContentProvider的底层是采用Android中的Binder机制,既然已经有了binder实现了进程间通信了为什么还会需要contentProvider?⭐⭐⭐⭐

    第二部分:Android基础知识篇

    5、Context

    • 谈谈你对Activity的Context的认识?⭐⭐⭐⭐⭐
    • Application和Activity,Context的区别?⭐⭐⭐⭐⭐
    • getApplication()和getApplicationContext()的区别?⭐⭐⭐⭐
    • context错误用法有哪些?⭐⭐⭐
    • 如何正确使用Context,如何获取Context?⭐⭐⭐⭐
    • 一个应用程序有几个Context? ⭐⭐⭐⭐

    6、Intent

    • 什么是Intent? ⭐⭐⭐⭐⭐
    • 显式Intent和隐式Intent的区别?⭐⭐⭐⭐
    • 在隐式启动中Intent可以设置多个action,多个category吗?⭐⭐⭐⭐
    • 隐式Intent的匹配规则?⭐⭐⭐⭐⭐
    • Activity之间传递数据的方式Intent是否有大小限制,如果传递的数据量偏大,有哪些方案?⭐⭐⭐

    7、8、Handler异步消息机制

    • 请介绍下Handler消息机制 ⭐⭐⭐⭐⭐
    • Handler 引起的内存泄露原因以及最佳解决方案 ⭐⭐⭐⭐⭐
    • 为什么我们能在主线程直接使用 Handler,而不需要创建 Looper ? ⭐⭐⭐⭐⭐
    • Handler、Thread和HandlerThread的差别 ⭐⭐⭐⭐
    • 子线程中怎么使用 Handler? ⭐⭐⭐⭐
    • 为什么在子线程中创建 Handler 会抛异常?⭐⭐⭐⭐
    • Handler 里藏着的 Callback 能干什么?⭐⭐⭐
    • Handler 的 send 和 post 的区别?⭐⭐⭐⭐
    • 创建 Message 实例的最佳方式 ⭐⭐⭐
    • Message 的插入以及回收是如何进行的,如何实例化一个 Message 呢?⭐⭐⭐
    • 妙用Looper机制,或者你知道Handler机制的其他用途吗?⭐⭐⭐
    • Looper.loop()死循环一直运行是不是特别消耗CPU资源呢?不会造成应用卡死吗?⭐⭐⭐⭐⭐
    • MessageQueue 中如何等待消息?为何不使用 Java 中的 wait/notify 来实现阻塞等待呢?⭐⭐
    • 你知道延时消息的原理吗?⭐⭐⭐⭐
    • handler postDelay这个延迟是怎么实现的?⭐⭐⭐⭐
    • 如何保证在msg.postDelay情况下保证消息次序?⭐⭐⭐
    • 更新UI的方式有哪些 ⭐⭐⭐⭐
    • 线程、Handler、Looper、MessageQueue 的关系?⭐⭐⭐⭐
    • 多个线程给 MessageQueue 发消息,如何保证线程安全?⭐⭐⭐
    • View.post 和 Handler.post 的区别?⭐⭐⭐
    • 你知道 IdleHandler 吗?⭐⭐

    9、HandlerThread

    • HandlerThread是什么?⭐⭐⭐⭐⭐
    • HandlerThread原理和使用场景?⭐⭐⭐⭐

    10、AsyncTask

    • AsyncTask是什么?能解决什么问题 ⭐⭐⭐⭐
    • 给我谈谈AsyncTask的三个泛型参数作用以及它的一些方法作用。⭐⭐⭐
    • 给我说说AsyncTask的原理。⭐⭐⭐
    • 你觉得AsyncTask有不足之处吗?有何使用注意事项?⭐⭐⭐

    11、IntentService

    • IntentService是什么?⭐⭐⭐⭐⭐
    • IntentService原理和使用场景?⭐⭐⭐⭐
    • IntentService和Service的区别 ⭐⭐⭐⭐⭐

    12、Fragment

    • Fragment是什么?和Activity的联系?生命周期如何?⭐⭐⭐⭐⭐⭐
    • Activity和Fragment之间如何通讯?Fragment和Fragment之间如何通讯?⭐⭐⭐⭐⭐
    • Fragment的回退栈了解吗?⭐⭐⭐⭐
    • Fragment的使用方式⭐⭐⭐
    • 你有遇到过哪些关于Fragment的问题,如何处理的?⭐⭐⭐

    13、Binder

    • 请介绍什么是Binder机制⭐⭐⭐⭐⭐
    • 请介绍Binder机制流程 ⭐⭐⭐⭐
    • Binder机制需要多少次内存拷贝 ⭐⭐⭐
    • Android有很多跨进程通信方法,为何选择Binder?⭐⭐⭐

    14、AIDL

    • 请介绍什么是AIDL⭐⭐⭐⭐⭐
    • 有几种AIDL文件?⭐⭐⭐
    • 一个程序AIDL文件的数量? ⭐⭐
    • 你有没有使用过AIDL?谈谈你如何实现的? ⭐⭐⭐⭐
    • 知道AIDL语法中的定向tag吗?⭐⭐⭐
    • 你能不能简单描述AIDL实现的原理?⭐⭐⭐

    15、SharedPreferences

    • SharedPreference是线程安全的吗?⭐⭐⭐
    • SharedPreference的apply和commit的区别?commit 一定会在主线程操作嘛?⭐⭐⭐⭐⭐
    • SharedPreferences 是如何初始化的,它会阻塞主线程吗?⭐⭐⭐
    • 每次获取 SP 对象真的会很慢吗?⭐⭐⭐
    • 在使用时需要注意哪些问题,以及有什么优化点呢?⭐⭐⭐⭐

    16、线程池

    • 线程池的种类⭐⭐⭐⭐⭐
    • 线程池的优点⭐⭐⭐⭐
    • 平时当中使用案例⭐⭐⭐⭐
    • ThreadPoolExecutor类有了解吗?⭐⭐

    第三部分:View相关篇

    17、Activity、Window、DecorView以及ViewRoot层级关系

    • 请讲述Activity、Window、DecorView以及ViewRoot之间的层级关系⭐⭐⭐⭐⭐
    • DecorView什么时候可见?⭐⭐⭐⭐

    18、触摸事件分发机制

    • 请介绍什么是事件分发机制,以及对应流程⭐⭐⭐⭐⭐
    • 谈谈你对MotionEvent的认识?Cancel事件是什么情况下触发的⭐⭐⭐
    • OnTouchListener & OnTouchEvent & OnClickListener三者之间的关系⭐⭐⭐⭐

    19、View绘制流程

    • 请介绍View的三大绘制流程 ⭐⭐⭐⭐⭐
    • 你知道View绘制前的准备流程吗?⭐
    • 什么是MeasureSpec?⭐⭐⭐
    • 测量模式有哪三种?⭐⭐
    • 为什么有时候getMeasuredWidth获取值为0?⭐⭐
    • 绘制的顺序是怎么样?⭐⭐

    20、自定义View

    • 自定义View的流程 ⭐⭐⭐⭐⭐
    • 自定义View需要重写哪些函数?说说你在自定义View时常常重写的一些方法? ⭐⭐⭐⭐
    • 自定义View的种类有哪些?给我说说你之前项目中的案例。⭐⭐⭐⭐
    • 说说自定义View中如何自定义属性?⭐⭐⭐
    • 自定义View如何处理padding?⭐⭐
    • 自定义View效率高于xml布局文件吗?⭐⭐
    • 自定义View什么时候需要处理wrap_content属性?怎么处理?⭐

    第四部分:Android进阶篇

    21、序列化

    • 序列化是什么?⭐⭐⭐⭐
    • 序列化的作用?什么时候需要序列化? ⭐⭐⭐⭐
    • Android中序列化方式有几种?说说它们的区别。⭐⭐⭐⭐⭐
    • Bunder传递对象为什么需要序列化?⭐⭐⭐

    22、JNI/NDK

    • 什么是JNI?它主要用来干什么。 ⭐⭐⭐⭐⭐
    • Java 声明的Native方法如何和Native层的Native函数进行绑定的?(也就是介绍两种注册方法)⭐⭐⭐⭐⭐
    • JNI如何实现数据传递?⭐⭐⭐⭐
    • 如何全局捕获Native发生的异常?⭐⭐⭐
    • JNIEnv与JavaVM的关系⭐⭐⭐⭐
    • C和C++的JNIEnv的区别 ⭐⭐⭐
    • JNI项目配置和数据映射 ⭐⭐

    23、设计模式使用案例

    • 说说设计模式的六大原则。⭐⭐⭐
    • 请简要谈一谈单例模式?⭐⭐⭐⭐⭐
    • 请列出几种常见的工厂模式并说明它们的用法?⭐⭐⭐⭐
    • 静态代理和动态代理的区别,什么场景使用?⭐⭐⭐⭐⭐
    • 谈一谈责任链模式的使用场景?⭐⭐⭐
    • 请讲讲你会使用的一些设计模式?⭐⭐⭐⭐
    • 能否给我说说Android中至少3个用到设计模式的例子? ⭐⭐⭐⭐⭐

    24、APK启动流程

    25、MVC、MVP、MVVM

    • 说说你对MVC、MVP、MVVM的理解,他们有什么区别和联系,如何演变的? ⭐⭐⭐⭐⭐
    • MVVM的优点和缺点 ⭐⭐⭐⭐
    • 为什么Activity旋转屏幕后ViewModel可以恢复数据 ⭐⭐
    • ViewModel 的实例缓存到哪儿了 ⭐⭐
    • 什么时候 ViewModel#onCleared() 会被调用 ⭐⭐

    26、缓存机制

    • 你了解Android中的缓存机制吗?⭐⭐⭐⭐
    • LruCache的源码看过吗?⭐⭐⭐
    • 还有用过哪些缓存工具?⭐⭐⭐⭐

    27、APK打包流程和反编译

    • 请讲述一下APK打包的流程? ⭐⭐⭐⭐
    • 使用过哪些反编译的工具?⭐⭐⭐

    28、注解

    • 你是否了解注解?⭐⭐⭐⭐⭐
    • 你知道元注解吗?⭐⭐⭐
    • 知道如何使用自定义注解吗?有哪些实现方法?⭐⭐⭐⭐
    • 具体说一下编译时注解的实现思路⭐⭐⭐⭐
    • 如何使用注解代替枚举?⭐⭐⭐
    • 你知道哪些常用的注解?⭐⭐⭐⭐

    第五部分:Android性能优化篇

    29、内存优化

    • 什么是OOM、内存泄漏、内存抖动?如何发生的? ⭐⭐⭐⭐⭐
    • Handler导致的内存泄露你是如何解决的? ⭐⭐⭐⭐
    • 知道如何定位内存泄漏吗?有什么工具?⭐⭐⭐⭐
    • 请至少例举出5种内存泄漏情况。⭐⭐⭐⭐⭐
    • 在 Android 中如何避免内存泄漏?⭐⭐⭐⭐⭐
    • 谈谈你项目中内存优化的一些经验(开放题)⭐⭐⭐

    30、卡顿优化

    • 造成系统卡顿的根本原因 ⭐⭐⭐
    • 什么是 ANR ?导致原因有哪些?⭐⭐⭐⭐⭐
    • 如何避免发生 ANR ?⭐⭐⭐⭐
    • 分别说说Activity、BroadcastReceiver、Serice最长可耗时时间为多少?⭐⭐⭐⭐⭐
    • 谈谈你项目中避免ANR的一些经验(开放题)⭐⭐
    • 有什么方法和工具可以分析ANR ⭐⭐⭐

    以上内容均提供售后答疑

  • 相关阅读:
    技术干货 | 一文弄懂差分隐私原理!
    第十八章 Swing程序设计
    计算机操作系统第四版第八章磁盘存储器的管理—课后习题答案
    【LIN总线测试】——LIN主节点数据链路层测试
    JDBC编程的六个步骤以及使用示例(详细)
    Kotlin协程中的作用域 `GlobalScope`、`lifecycleScope` 和 `viewModelScope`
    MyBatisPlus-02
    Linux.系统命令
    让终端命令更有时间观念
    2022爱分析· 信创厂商全景报告 | 爱分析报告
  • 原文地址:https://blog.csdn.net/a763450633/article/details/128088713