写点什么

【干货】Android 一线互联网面试题汇总,13 模块 200

发布于: 2021 年 11 月 07 日
  • 描述一下你知道的数据存储方式

  • SharedPreferences 的应用场景,核心原理是什么

  • SharedPreferences 是线程安全的吗?

  • 描述一下图片存储在本地的方式

  • sqlite 升级,增加字段的语句

  • 数据库框架对比和源码分析

  • 数据库的优化

  • 数据库数据迁移问题

5.网络

  • 描述一次网络请求的流程

  • HTTP 报文结构

  • HttpClient 和 HttpURLConnection 的区别

  • Volley,okhttp,retrofit 之间的区别和核心原理和使用场景

  • 描述一下 https

  • https 中哪里用了对称加密,哪里用了非对称加密,对加密算法(如 RSA)等是否有了解?

  • 说一下三次握手,四次挥手的具体细节

  • 描述一下 socket 是什么东西

  • 从网络加载一个 10M 的图片,说下注意事项

  • TCP 与 UDP 的区别

  • client 如何确定自己发送的消息被 server 收到?

  • WebSocket 与 socket 的区别

  • 网络请求缓存处理,okhttp 如何处理网络缓存的

  • 自己去设计网络请求框架,怎么做?

6.图片

  • 说一下 OOM 的原因,如何避免

  • 说一下三级缓存的原理

  • 描述一下内存缓存的容器

  • 图片库对比

  • 图片库的源码分析

  • 图片框架缓存实现

  • LRUCache 原理

  • 自己去实现图片库,怎么做?

  • 说说 Glide 内存缓存的具体实现?

7.布局

  • 说一下布局性能的排序,谁的效率最高

  • 描述一下约束布局

  • 关于布局优化的方案

  • 怎么检测布局深度

  • LinearLayout、RelativeLayout、FrameLayout 的特性及对比,并介绍使用场景。

8.性能优化

性能优化包括:内存,处理效率,视觉流畅度,CPU,电量,流量等方面,针对手机的性能去做相应的方案。个人认为更应该把握好内存优化、处理效率(代码质量)、视觉流畅度(布局优化)。


  • ANR 产生的原因是什么?

  • oom 是什么?

  • 什么情况导致 oom?

  • 有什么解决方法可以避免 OOM?

  • Oom 是否可以 try catch?为什么?

  • 内存泄漏是什么?

  • 什么情况导致内存泄漏?

  • 如何防止线程的内存泄漏?

  • 内存泄露的解决方法

  • 内存泄漏和内存溢出区别?

  • 如何对 Android 应用进行性能分析以及优化?

  • 怎么去除无用代码?

  • 性能优化如何分析 systrace?

  • 用 IDE 如何分析内存泄漏?

  • Java 多线程引发的性能问题,怎么解决?

  • 启动页白屏及黑屏解决?

  • 启动太慢怎么解决?

  • 怎么保证应用启动不卡顿?

  • App 启动崩溃异常捕捉

  • 自定义 View 注意事项

  • 现在下载速度很慢,试从网络协议的角度分析原因,并优化(提示:网络的 5 层都可以涉及)。

  • Https 请求慢的解决办法(提示:DNS,携带数据,直接访问 IP)

  • 如何保持应用的稳定性

  • RecyclerView 和 ListView 的性能对比

  • ListView 的优化

  • RecycleView 优化

  • View 渲染

  • Bitmap 如何处理大图,如一张 30M 的大图,如何预防 OOM

  • java 中的四种引用的区别以及使用场景

  • 强引用置为 null,会不会被回收?

9.JNI

  • 请介绍一下 NDK

  • 什么是 NDK 库?

  • 如何在 JNI 中注册 native 函数,有几种注册方式?

  • Java 如何调用 c、c++语言?

  • JNI 如何调用 java 层代码?

  • 你用 JNI 来实现过什么功能吗?怎么实现的?

10.进程间通信(简称:IPC)

  • 进程间通信的方式?

  • Binder 机制的作用和原理

  • 简述 IPC?

  • 什么是 AIDL?

  • AIDL 解决了什么问题?

  • AIDL 如何使用?

  • Android 进程分类?

  • 进程和 Application 的生命周期?

  • 进程调度

  • 谈谈对进程共享和线程安全的认识

11.WebView

  • 描述一下 Webview 的作用

  • WebView 的内核是什么

  • 描述一下 WebView 与 js 的交互方式

  • 描述一下 WebView 的缓存机制

  • 关于 WebView 的优化你知道哪些

  • 有没有用过第三方 WebView 组件?讲一讲优势

12.进程保活

  • 做过进程保活吗?

  • 5.0 下和 5.0 上的保活方式了解吗?

  • 描述一下进程回收的过程

  • 如何降低进程的 oom_adj

其他

  • Handler 机制和底层实现

  • Handler、Thread 和 HandlerThread 的差别

  • handler 发消息给子线程,looper 怎么启动?

  • 关于 Handler,在任何地方 new Handler 都是什么线程下?

  • ThreadLocal 原理,实现及如何保证 Local 属性?

  • 请解释下在单线程模型中 Message、Handler、Message Queue、Looper 之间的关系

  • AsyncTask 机制

  • AsyncTask 原理及不足

  • 如何取消 AsyncTask?

  • 为什么不能在子线程更新 UI?

  • LruCache 默认内存缓存大小

  • ContentProvider 的权限管理(解答:读写分离,权限控制-精确到表级,URL 控制)

  • 如何通过广播拦截和 abort 一条短信?

  • 广播是否可以请求网络?

  • 广播引起 anr 的时间限制是多少?

  • 描述一下 Activity 栈

  • Android 线程有没有上限?

  • 线程池有没有上限?

  • ListView 重用的是什么?

  • Android 为什么引入 Parcelable?

  • 有没有尝试简化 Parcelable 的使用?

  • 混合开发有了解吗?

  • 知道哪些混合开发的方式?说出它们的优缺点和各自使用场景?(解答:比如:RN,weex,H5,小程序,WPA 等)

  • 屏幕适配的处理技巧都有哪些?

  • 服务器只提供数据接收接口,在多线程或多进程条件下,如何保证数据的有序到达?

  • 动态布局的理解

  • 画出 Android 的大体架构图

  • Recycleview 和 ListView 的区别

  • ListView 图片加载错乱的原理和解决方案

  • 动态权限适配方案,权限组的概念

  • Android 系统为什么会设计 ContentProvider?

  • 下拉状态栏是不是影响 activity 的生命周期

  • Bitma


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


p 使用时候注意什么?


  • Bitmap 的 recycler()

  • Android 中开启摄像头的主要步骤

  • ViewPager 使用细节,如何设置成每次只初始化当前的

  • 点击事件被拦截,但是想传到下面的 View,如何操作?

  • 描述一下微信主页面的实现方式

  • invalidate 和 postInvalidate 的区别及使用

  • Activity-Window-View 三者的差别

  • 谈谈对 Volley 的理解

  • ActivityThread,AMS,WMS 的工作原理

  • LaunchMode 应用场景

  • SpareArray 原理

  • 请介绍下 ContentProvider 是如何实现数据共享的?

  • IntentService 原理及作用是什么?

  • ApplicationContext 和 ActivityContext 的区别

  • 封装 View 的时候怎么知道 view 的大小

  • AndroidManifest 的作用与理解

结尾

去好公司面试,能答出来只是第一步,延伸问答、灵活运用才是面试官的目的,你越能答,他们越能问。我希望读者们能知道深入了解的含义,这真的是一个过程。


自己的知识准备得怎么样,这直接决定了你能否顺利通过一面和二面,所以在面试前来一个知识梳理,看需不需要提升自己的知识储备是很有必要的。


关于知识梳理,这里再分享一下我面试这段时间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)



知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结:


最后我在这里分享一下这段时间从朋友,大佬那里收集到的一些 2019-2020BAT 面试真题解析,里面内容很多也很系统,包含了很多内容:Android 基础、Java 基础、Android 源码相关分析、常见的一些原理性问题等等,可以很好地帮助我们深刻理解 Android 相关知识点的原理以及面试相关知识


这份资料把大厂面试中常被问到的技术点整理成了 PDF ,包知识脉络 + 诸多细节;还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。


以上内容均放在了开源项目:github 中已收录,里面包含不同方向的自学 Android 路线、面试题集合/面经、及系列技术文章等,资源持续更新中...


最后复习的差不多的同学,请花一两个小时认真准备这些东西:

评论

发布
暂无评论
【干货】Android 一线互联网面试题汇总,13模块200