-
List 和 Map 的实现方式以及存储方式
-
HashMap 的实现原理
-
HashMap 源码理解
-
HashMap 几种遍历方式的实现
-
HashSet 与 HashMap 怎么判断集合元素重复
-
数组和链表的区别
-
堆和树的区别
-
堆和栈在内存中的区别是什么
-
什么是深拷贝和浅拷贝
-
手写链表逆序代码
-
在 Java 中,什么时候用重载,什么时候用重写?
-
使用工厂模式最主要的好处是什么?
-
说一下泛型原理,并举例说明
-
泛型中 extends 和 super 的区别
-
什么是泛型中的限定通配符和非限定通配符
-
HTTP 响应的结构是怎么样的?
-
HTTP 和 HTTPS 的区别
-
开启线程的三种方式?
-
谈谈你对多线程同步机制的理解?
-
如何控制某个方法允许并发访问线程的个数?
-
什么导致线程阻塞?
-
谈谈对 Synchronized 关键字,类锁,方法锁,重入锁的理解
-
谈谈 volatile 关键字的作用
-
Synchronized 和 volatile 关键字的区别
-
Synchronized 与 Lock 的区别
-
死锁的四个必要条件?
-
怎么避免死锁?
-
什么是线程池,如何使用?
-
多线程断点续传原理
Kotlin 面试题
-
你有使用过 Kotlin 来开发 Android 应用吗?说说 Kotlin 和 Java 有什么区别?
-
Kotlin 如何与 Java 混编
-
协程
-
说一下 Kotlin 的伴生对象(关键字 companion 使用要说出来)
-
Kotlin 的高阶函数使用过吗
-
当你项目中同时使用 Kotlin 和 Java ,你是如何保证空指针问题的?
-
Kotlin 是否向后兼容?
-
Kotlin 是否支持宏?
-
Kotlin 类的默认类型是什么?
-
Kotlin 内联函数的使用
Android 应用开发
生命周期
-
说说 Activity 的生命周期
-
说说 Fragment 生命周期?
-
说说 Service 生命周期?
-
下拉状态栏是不是影响 activity 的生命周期,如果在 onStop 的时候做了网络请求,onResume 的时候怎么恢复
-
Activity 上有 Dialog 的时候按 home 键时的生命周期
-
横竖屏切换的时候,AVctivity 各种情况下的生命周期
View/UI 相关
-
简单概述 View 的绘制流程
-
View,ViewGroup 事件分发
-
概述 Android UI 适配方案
-
理解 Activity,View,Window 三者关系
-
View 滑动冲突怎么解决
-
View 渲染流程
其他
-
动态权限适配方案,权限组的概念
-
网络请求缓存处理,okhttp 如何处理网络缓存的
-
bitmap 如何处理大图,如一张 30M 的大图,如何预防 OOM
-
进程保活,如何实现常驻进程
-
LRUCache 原理
-
Handler 机制
-
App 是如何沙箱化,为什么要这么做
-
handler 发消息给子线程,looper 怎么启动
-
怎么启动 service,service 和 activity 怎么进行数据交互
-
四种 LaunchMode 及其使用场景
-
Android 中的几种动画有哪些
-
Android 中跨进程通讯的几种方式
-
Binde 机制简单理解
-
热修复的原理
-
Android 内存泄露及管理
-
Fragment 与 Fragment、Activity 通信的方式
-
概述 Android 优化方案
-
内存泄漏与内存溢出区别
-
MVP,MVC,MVVM 的优劣
-
Universal-ImageLoader,Picasso,Fresco,Glide 对比
-
Xutils, OKhttp, Volley, Retrofit 对比
-
跨进程通信的几种方式
-
简述 TCP,UDP,Socket
-
进程和线程的区别
-
内存泄露如何查看和解决
-
RecyclerView 的拖拽怎么实现的?
-
RcyclerView 嵌套卡顿解决如何解决
-
Dgger2 框架的了解
-
SharedPreference 跨进程使用会怎么样?如何保证跨进程使用安全?
-
Android 的数据存储方式–持久化技术
-
Android 数据解析的几种方式及优劣
-
Fragment 的生命周期
-
Fragment 的切换方式
-
消息推送原理以及实现过程
-
Alipay 的支付流程?
-
加密解密技术
-
图片的三级缓存
-
AIDL 的使用
-
常用的 git 命令
-
git 冲突的产生原因以及解决?
-
如何避免冲突?
-
广播(动态注册和静态注册区别,有序广播和标准广播)
-
Android 中哪里使用了观察者模式
-
Android 系统为什么会设计 ContentProvider,进程共享和线程安全问题
-
RxJava 的功能与原理实现
-
sqlite 升级,增加字段的语句
-
强引用置为 null,会不会被回收?
-
glide 使用什么缓存?
-
AndroidManifest 的作用与理解
-
如何计算一个 view 的嵌套层级
-
EventBus 实现原理
-
Application 和 Activity 的 context 对象的区别
-
ViewPager 使用细节,如何设置成每次只初始化当前的 Fragment,其他的不初始化
-
如何实现 Fragment 的滑动
-
差值器&估值器
-
介绍下 SurfView
-
概述 Android 事件分发机制
-
如何进行 Android 电量优化
-
Activity 栈相关
-
封装 view 的时候怎么知道 view 的大小
-
App 启动崩溃异常捕捉
-
手写生产者/消费者模式
-
Activity 之间的通信方式
-
Activity 与 Service 通信的方式
-
Oom 是否可以 try catch ?
-
在任何地方 new handler 都是什么线程下
-
如何保证多线程读写文件的安全?
-
Glide 内存缓存如何控制大小?
-
简要概述 Android 垃圾收集器
-
String 为什么要设计成不可变的?
-
线程如何关闭,以及如何防止线程的内存泄漏
-
Android 线程有没有上限?
-
Glide 加载一个一兆的图片(100x100),是否会压缩后再加载,放到一个200x200的 view 上会怎样,1000x1000呢,图片会很模糊,怎么处理?
-
Socket 建立网络连接的步骤
-
如何使用 OkHttp 进行异步网络请求,并根据请求结果刷新 UI
-
可否介绍一下 OkHttp 的整个异步请求流程
-
OkHttp 对于网络请求都有哪些优化,如何实现的
-
OkHttp 框架中都用到了哪些设计模式
音视频面试题
-
常用的编码格式有哪些
-
常用的封装格式有哪些
-
说说 YUV 与 RGB 格式的转换
-
传输语音的格式一般有哪些
-
列举一些音视频编码常用的实现方案
-
请叙述 MPEG 视频基本码流结构
-
请叙述 AMR 基本码流结构
-
预测编码的基本原理是什么
-
丢包恢复算法怎么实现的?丢包是由于网络不好导致的,还是确实丢包了,丢包率怎么反馈给发送端的?
-
回音消除的实现原理
-
Opus,G.711 音频编解码的实现原理?OPus 的好处,最低带宽是多少?
-
音视频数据传输怎么判断延迟发生在哪个阶段?
-
带宽估计和带宽反馈是怎么做的?
-
为什么要有 YUV 这种数据出来?优点在哪?
-
为什么要用 FLV?
-
视频硬编码-压缩率关键参数设置
-
什么是大小端?网络通信中的大小端问题如何解决?
-
TCP 和 UDP 的区别?UDP 如何实现可靠传输?
-
视频或者音频传输,你会选择 TCP 协议还是 UDP 协议?为什么?
-
如何实现服务器高并发?都有什么方式?你会选择什么方式?为什么?
-
TCP、UDP 如何处理丢包问题?
-
TCP如何实现可靠传输,讲一下超时重传?
-
AsyncTask 内部维护了一个线程池,是串行还是并行,怎么维护的?
-
Material Design 如何定义一个 Behavior
底层开发面试题
-
Android sqlite3 是否支持并发访问?
-
Android wap 访问方式。
-
介绍 Android IPC 机制
-
ART、Dalvik 和 JVM 的关系及区别是什么?
-
例举一下 Android 系统级服务,在 App 层一般都用过哪些?如何实现一个自定义的系统级服务?
-
概述 Binder 机制。
-
Launcher 的实现。
-
系统级 app 和第三方应用级 app 分别在什么目录下?一个第三方的 app 能否直接放到系统级 app 目录下而又能正常运行?
-
能不能单独编译一个系统级应用?
-
JNI,共享库和静态库的区别和使用场景,JNI 中 C/C++ 和 Java 相互调用各自使用的机制是什么?
-
如何限制第三方应用安装?
逆向开发面试题
-
Andorid 如何本地提权获得 root 权限
-
概述 Android 打包流程
-
概述 Android 反编译流程
-
概述 Android 破解流程
-
注入有哪几种方式?
-
空结构体多少个字节?
-
用const修饰一个函数有什么作用?
-
Smali 是什么
-
Smali 的数据类型和 Java 的对应关系
-
了解 Android 的加解密
-
了解反破解的技术
-
简要概述 so 破解(破壳技术)
Android如何学习提高个人硬实力?
Android学习是一条漫长的道路,我们要学习的东西不仅仅只有表面的 技术,还要深入底层,弄明白下面的 原理,只有这样,我们才能够提高自己的竞争力,在当今这个竞争激烈的世界里立足。
现在竞争这么激烈,只有通过不断学习,提高自己,才能保持竞争力。
对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
对于一些不知道学习什么,没有一个系统路线的程序员,这里给大家提供一个大概的思路:
- Android学习路线图
首先,对于没有学习方向,知识不体系的人,我把我工作几年整理的学习路线分享给大家,做一个借鉴作用,还不知道怎么学习的人可以直接照着我这个学习路线一个个的去学习,知识不体系的人可以参考下我整理路线的方式,总之希望能够帮到你们!
- 模块化学习资源
接下来是每个模块我整理出来的文档学习资料,帮助大家更细致化的学习。
《Android汇总复习资料—Java》
《Android汇总复习资料—Android》
《Android汇总复习资料—Android扩展》
《Android汇总复习资料—Kotlin》
《Android汇总复习资料—Flutter》
《Android汇总复习资料—算法》
除了上面的学习路线,还可以额外的配合以下方式学习,效果翻倍~
①看视频进行系统学习
文末
好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,可以来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。
这里放上一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套进阶学习的视频及面试专题资料包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
convert/f417cd0596234b8a66bab16fc31651dc.png)
除了上面的学习路线,还可以额外的配合以下方式学习,效果翻倍~
①看视频进行系统学习
文末
好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,可以来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。
这里放上一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套进阶学习的视频及面试专题资料包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家
[外链图片转存中…(img-rsBlLTHo-1715426975684)]
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!