望35岁Android开发,在程序这条路上能越走越远
2020-12-29 本文已影响0人
冬日毛毛雨
前言
想必不少伙伴担忧的情况——“晋升无望、收入见顶、生活开支飙升、财务危机如影随形”,小编之前精心收录整理了一些关于Android开发的知识点、面试题,推荐给大家化解成长的烦恼。
它们都是我平时也经常翻看、学习的一些珍藏资料,包括Java基础、Android进阶、架构设计、NDK、音视频开发、跨平台、底层源码等技术,还有往年一线大厂最新面试题集锦,都分享给大家,助大家学习路上披荆斩棘~ 能力得到提升,思维得到开阔~
View
- 说下View 的绘制流程?
- MotionEvent 是什么?包含几种事件?什么条件下会产生?
- 描述一下 View 事件传递分发机制?
- scrollTo()和 scollBy()的区别?
- Scroller 是怎么实现 View 的弹性滑动?
- invalidate()和 postInvalidate()的区别 ?
- SurfaceView 和 View 的区别?
- 自定义 View 如何考虑机型适配 ?
Activity
- 说下 Activity 生命周期
- Activity A 启动另一个 Activity B 会调用哪些方法?如果 B 是透明主题的 又或者是个 DialogActivity 呢 ?
- 说下 onSaveInstanceState()方法的作用,何时会被调用?
- 说下 Activity 的四种启动模式、应用场景
- 了解哪些 Activity 常用的标记位 Flags
- 说下 Activity 跟 window,view 之间的关系
- 横竖屏切换的 Activity 生命周期变化
- 如何启动其他应用的 Activity
- Activity 的启动过程
Fragment
- Fragment 为什么会被称为第五大组件
- Fragment 加载到 Activity 的 2 种方式
- Fragment 与 ViewPager 的搭配使用
- Fragment 的生命周期
- 在 Fragment 中调用 Activity 中的方法
- 在 Activity 中调用 Fragment 的方法
- 在 Fragment 中调用另外一个 Fragment 的方法
- Fragment 的切换方式
- 谈谈 Activity 和 Fragment 的区别
- Fragment 中 add 与 replace 的区别(Fragment 重叠)
- getFragmentManager、getSupportFragmentManager 、 getChildFragmentManager 之间的区别
- FragmentPagerAdapter 与 FragmentStatePagerAdapter 的区别与使用场景
Bitmap
- Bitmap 使用需要注意哪些问题
- Bitmap.recycle()会立即回收么?什么时候会回收?如果没有地方使用这 个 Bitmap,为什么垃圾回收不会直接回收
- 一张 Bitmap 所占内存以及内存占用的计算
- Android 中缓存更新策略
- LRU 的原理
- Service及BroadcastReceiver
- 谈一谈 Service 的生命周期
- Service 的两种启动方式?区别在哪
- 如何保证 Service 不被杀死
- 能否在 Service 开启耗时操作 ? 怎么做
- 用过哪些系统 Service
- 了解 ActivityManagerService 吗?发挥什么作用
- 广播有几种形式 ? 都有什么特点
- 广播的两种注册方式
- 广播发送和接收的原理了解吗 ?(Binder 机制、AMS)
Handler
- 谈谈消息机制 Handler 作用 ?有哪些要素 ?流程是怎样的
- 一个线程能否创建多个 Handler,Handler 跟 Looper 之间的对应关系
- 软引用跟弱引用的区别
- Handler 引起的内存泄露原因以及最佳解决方案
- 为什么系统不建议在子线程访问 UI
- Looper 死循环为什么不会导致应用卡死
- 使用 Handler 的 postDealy 后消息队列会有什么变化
- 可以在子线程直接 new 一个 Handler 吗?怎么做
- Message 可以如何创建?哪种效果更好,为什么
性能优化
- 图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理
- 内存中如果加载一张 500*500 的 png 高清图片.应该是占用多少的内存
- WebView 的性能优化
- Bitmap 如何处理大图,如一张 30M 的大图,如何预防 OOM
- 内存回收机制与 GC 算法(各种算法的优缺点以及应用场景);GC 原理时机 以及 GC 对象
- 内存泄露和内存溢出的区别 ?AS 有什么工具可以检测内存泄露
- 性能优化,怎么保证应用启动不卡顿? 黑白屏怎么处理
- 强引用置为 null,会不会被回收
- ListView 跟 RecyclerView 的区别
- ListView 的 adapter 是什么 adapter
- LinearLayout、FrameLayout、RelativeLayout 性能对比,为什么
设计模式
- 你所知道的设计模式有哪些
- 谈谈 MVC、MVP 和 MVVM,好在哪里,不好在哪里
- 封装 p 层之后.如果 p 层数据过大,如何解决
- 是否能从 Android 中举几个例子说说用到了什么设计模式
- 装饰模式和代理模式有哪些区别
- 实现单例模式有几种方法 ?懒汉式中双层锁的目的是什么 ?两次判空的目的又是什么
- 用到的一些开源框架,介绍一个看过源码的,内部实现过程
- Fragment 如果在 Adapter 中使用应该如何解耦
线程
- 线程池的好处? 四种线程池的使用场景,线程池的几个参数的理解
- Android 中还了解哪些方便线程切换的类
- 讲讲 AsyncTask 的原理
- IntentService 有什么用
- 直接在 Activity 中创建一个 thread 跟在 service 中创建一个 thread 之间 的区别
- ThreadPoolExecutor 的工作策略
- Handler、Thread 和 HandlerThread 的差别
- ThreadLocal 的原理
- 多线程是否一定会高效(优缺点)
- 多线程中,让你做一个单例,你会怎么做
- 除了 notify 还有什么方式可以唤醒线程
- 什么是 ANR ? 什么情况会出现 ANR ?如何避免 ? 在不看代码的情况 下如何快速定位出现 ANR 问题所在
算法
- ViewGroup的层级深度,转换为二叉树的层级深度
- 查找两个字符串的交集和字符串1中有字符串2中没有的问题
- String字符串的数字相加
- 使用三个线程顺序打印有序的数组
- 给定一个有序的数组和目标数,找出与目标数最近接的index,要求复杂度是log(n)的时间复杂度
- 二叉树的深度和广度,要求一次遍历
- 给定一个二叉树和一个目标数,在二叉树中是否存在一条路径的所有节点的和与目标数是相同的case,并且打印
- m*n的二维数组,做(0,0)出发,可以上下左右走,0为畅通,1为阻塞,目标位置(k,j),问是否能到达这个位置
- int数组,除了一个数字外,其他数字都出现两次,找出这个只出现一次的数字
- 一个无序的int数组,给一个target数字,找出数组中两个数字相加为target,并输出坐标
- 数组中存有1-3的三种数字,例如[1,2,3,1,2,2,1,3,3],将其排序为[1,1,1,2,2,2,3,3,3],要求时间复杂度,后续将内容变为一个对象,继续排序
- 1~100盏灯,都是亮的,第一次将能被1整除的数的灯按下,变暗,第二次将能被2整除的数的等按下,变亮,第三次将能被3整除的数的等按下,变暗…第100次将能被100整除的数的灯按下,问,最后有多少盏灯是亮的
最后由于本文篇幅长度有限,我暂且分享到这里了,如想观看后续的内容可以在我【GitHub项目中:https://github.com/733gh/Android-T3/blob/master/JianShu.md】可自行查阅,我已归纳整理。望这些知识点能够帮助到大家在Android 开发这条路上少踩两个坑。