安卓面经_安卓系统面经_Android面经_150道安卓高频面试题答案汇总

150道安卓高频面试题答案订阅链接 --> 《Android面试题解析大全》

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

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

牛客高级系列专栏:

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

目录开始⬇(承诺提供免费技术答疑)

第一部分:四大组件篇

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启动流程

  • 你知道桌面点击应用图标到应用显示期间系统实现了什么流程吗?⭐⭐⭐⭐
  • 冷启动和热启动的区别 ⭐⭐
  • 桌面点击启动APP和从另一个程序跳转过去有什么区别?⭐⭐

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 ⭐⭐⭐

以上内容均提供售后答疑

alt

#安卓##安卓面经##android##Android##许乔丹安卓面经#
全部评论

相关推荐

📍面试公司:广州星峰信息🕐面试时间:2025年9月24日💻面试岗位:android开发工程师❓面试问题:1,做个简单的自我介绍。2,简历上的工作经历为啥空白了一段时间?3,负责开发投屏demo吗?介绍一下这个投屏sdk的原理。4,这个sdk是基于miracast的应用封装还是独立的呢?5,在开发这个sdk的过程中遇到什么困难和问题?你是怎么解决的?有关你说的客户的解码和编码问题具体是什么,为啥不兼容?为啥集成你们的sdk会出现黑屏现象?sdk的为啥需要控制在最低26以上版本?6,无声,杂音等现象,你是怎么处理的?7,场景题:3个产品,在你都完成后再通知我,你打算怎么处理?关于多线程,怎么解决线程安全?8,你最擅长的技术是什么?9,你的期望薪资是多少?10,反问环节。反问:1,公司的主营业务什么?2,贵司的开发团队规模是怎样的?3,在这个岗位需要使用到的技术栈主要是哪些。4,上班制度是大小周还是双休?标准的上下班时间是几点?5,广州和深圳的开发团队交集多吗?6,深圳分公司的办公地点在哪呢?7,平常工作是用企业微信进行交流沟通吗?🙌面试感想:作为一名毕业三年的老打工人,很久没有遭受面试的毒打了,可以说这次并没有十足的心理准备,但还是坚持回答完了~(1) 在这个过程中,我发现自己略微紧张,对技术的深入解析不够,对项目的思考深度不够,好些安卓的基础知识印象不够深了,这些都需要我花时间来加强和深入学习~(2) 感慨一下社招的面试,技术面主要拷打的还是项目,基本上就是对简历上的项目提问还有深入挖掘。所以项目极其重要。(3) 写简历需要十分注意,包括留空的时间。当时我的技术一面面试官是深圳区公司的CEO,整个面试过程体验还是不错的,氛围好,态度好,是个温柔的面试官~他说大概找2-3人。后来找他咨询结果,貌似是期望薪资较高被挂了~下次要尽量做好充足的准备,努力发挥好!希望每个面试人员皆如此!加油吧!我们!
查看18道真题和解析
点赞 评论 收藏
分享
10-20 20:03
门头沟学院 Java
点赞 评论 收藏
分享
牛客上理想的Android面经太少了,记录一下,面的是安卓岗,听面试官说应该是做framework之类的1. 介绍一下实习内容2. jBox2D了解多少3. Java基础类型,各占几个字节4. java值传递和值拷贝的区别5. java对象传递是值传递还是值拷贝6. 封装,继承,多态7. 接口和抽象类的区别8. 最近使用到的设计模式9. 责任链模式了解过吗?在哪些框架里用到?(okhttp)10. 进程和线程的区别11. 安卓中一个应用是一个进程还是一个线程?12. 一个应用可以有多个进程吗?13. 死锁的概念14. 如何解决死锁15. synchronized底层原理16. 我们如何知道加锁具体加在哪了?17. jvm内存模型18. 实例化一个对象的过程19. hashmap是否线程安全?20. 四大组件21. Activity启动方式22. Hanlder机制流程23. looper为什么不会导致Anr?24. 什么情况下会导致Anr?25. 开发中有遇到过Anr的情况吗?如何分析解决?26. 事件分发机制27. onTouch,onTouchEvent,onClick执行顺序28. 安卓绘制流程29. 如何强制刷新view?30. binder机制,有哪几个模块?31. binder如何导致Anr问题?32. 安卓中其他跨进程通信方式33. kotlin相关(我说kt不太熟,就没深问)34. tcp,udp区别35. http,https区别36. 对称加密和非对称加密作用于那个阶段?37. ca证书的作用是?反问:1. 做什么业务2. 几轮面试(一般2轮技术面,一轮hr面)
发面经攒人品
点赞 评论 收藏
分享
10-20 10:53
已编辑
仲恺农业工程学院 Web前端
查看15道真题和解析
点赞 评论 收藏
分享
评论
2
18
分享

创作者周榜

更多
正在热议
更多
# 你的mentor是什么样的人? #
3992次浏览 29人参与
# 你觉得mentor喜欢什么样的实习生 #
10339次浏览 286人参与
# 未岚大陆求职进展汇总 #
23824次浏览 113人参与
# 帮我看看,领导说这话什么意思? #
6245次浏览 25人参与
# 没有家庭托举的我是怎么找工作的 #
12354次浏览 158人参与
# 怎么给家人解释你的工作? #
1394次浏览 16人参与
# 智慧芽求职进展汇总 #
17886次浏览 106人参与
# 求职低谷期你是怎么度过的 #
5246次浏览 92人参与
# 26届秋招公司红黑榜 #
12157次浏览 42人参与
# 从哪些方向判断这个offer值不值得去? #
6568次浏览 93人参与
# 同bg的你秋招战况如何? #
158817次浏览 927人参与
# 度小满求职进展汇总 #
10091次浏览 51人参与
# 实习必须要去大厂吗? #
146641次浏览 1541人参与
# 校招泡的最久的公司是哪家? #
4531次浏览 22人参与
# 你有哪些缓解焦虑的方法? #
37174次浏览 835人参与
# 面试紧张时你会有什么表现? #
1697次浏览 20人参与
# 你喜欢工作还是上学 #
77574次浏览 860人参与
# 入职第一天,你准备什么时候下班 #
85478次浏览 467人参与
# 秋招想进国企该如何准备 #
97707次浏览 487人参与
# 简历无回复,你会继续海投还是优化再投? #
103582次浏览 819人参与
# 机械人的工作环境真的很差吗 #
25021次浏览 119人参与
# 独居后,你的生活是更好了还是更差了? #
28125次浏览 263人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务