开头
在大厂,写得一手好文档是一个非常吃香的技能。这可不只是一个锦上添花的东西,而是很多工程师晋升,打造自己话语权的武器。 我这两年在组内的深刻体会就是,大部分厉害的高级工程师(不包括那些纯混日子靠资历晋升的人),写文档的能力一点也不含糊,很能抓住上级和项目的G点。
可能有人会觉得,我技术牛逼就行了,为啥还要提高写文档的能力,有这功夫我还不如多看看源码分析?这是一些初级或者刚入门的工程师的普遍的困惑。这是因为大部分刚刚入行的朋友有一个很深的误区,就是他们以为做软件工程是一个和计算机打交道的工作,其实不然。软件工程不只是和代码打交道,更重要的是和人打交道,是一份社会性质很强的工作。在大部分公司里面,尤其是大厂,牵涉到的人,组,都是非常非常多的。在小厂,人与人之间交流意见和设计可以口口相传,心领神会,但是一旦人开始多了,就只能靠文档了。除非你可以厉害到一个人把所有代码撸完,不然还是最好老老实实的夯实自己写文档的能力。
如果你有写技术博客的习惯,那么恭喜你,相信你已经对如何抓住文档受众的技巧有所了解了。这对你在大厂生存有很大的帮助。如果没有也不要伤心,这篇文章就是为你精心设计的。
在这篇文章里,我会大致的把一份安卓的项目设计文档的骨架,和一些我工作中实际遇到的正反例都列出来,方便大家以后在工作中实践。
面试刷题
刷题我从常见Android基础知识面试题,刷到了Java面试题,继而攻坚Android高级面试题,以及突破学习Flutter相关热点技术面试题(不是很难),最后总攻今年大厂面试真题总结。
Android基础知识
一、 Activity
1、 什么是Activity?
2、 请描述一下Activity 生命周期
3、 常见的Activity类型有FragmentActivitiy,ListActivity,TabAcitivty等。请描述一下Activity 生命周期
4、 如何保存Activity的状态?
5、 两个Activity之间跳转时必然会执行的是哪几个方法?
6、 横竖屏切换时Activity的生命周期
7、 如何将一个Activity设置成窗口的样式
8、 如何退出Activity?如何安全退出已调用多个Activity的Application?
9、 Activity的四种启动模式,singletop和singletask区别是什么?一般书签的使用模式是singletop,那为什么不使用singletask?
10、 Android中的Context, Activity,Appliction有什么区别?
11、 两个Activity之间传递数据,除了intent,广播接收者,content provider还有啥?
12、 Context是什么?
二、 Service
1、 Service是否在main thread中执行, service里面是否能执行耗时的操作?
2、 Activity怎么和Service绑定,怎么在Activity中启动自己对应的Service?
3、 请描述一下Service的生命周期
4、 什么是IntentService?有何优点?
5、 说说Activity、Intent、Service是什么关系
6、 Service和Activity在同一个线程吗
7、 Service里面可以弹吐司么
8、 什么是Service以及描述下它的生命周期。Service有哪些启动方法,有什么区别,怎样停用Service?
9、 在service的生命周期方法onstartConmand()可不可以执行网络操作?如何在service中执行网络操作?
三、 Broadcast Receiver
1、 请描述一下BroadcastReceiver
2、 在manifest和代码中如何注册和使用BroadcastReceiver
3、 BroadCastReceiver的生命周期
四、 ContentProvider
1、 请介绍下ContentProvider是如何实现数据共享的
2、 请介绍下Android的数据存储方式
3、 为什么要用ContentProvider?它和sql的实现上有什么差别?
4、 说说ContentProvider、ContentResolver、ContentObserver之间的关系
五、 ListView
1、 ListView如何提高其效率?
2、 当ListView数据集改变后,如何更新ListView
3、 ListView如何实现分页加载
4、 ListView可以显示多种类型的条目吗
5、 ListView如何定位到指定位置
6、 如何在ScrollView中如何嵌入ListView
7、 ListView中如何优化图片
8、 ListView中图片错位的问题是如何产生的
9、 如何刷新ListView中单个item的数据,不刷新整个ListView的数据?
六、 Intent
1、 Intent传递数据时,可以传递哪些类型数据?
2、 Serializable和Parcelable的区别
3、 请描述一下Intent 和 IntentFilter
七、 Fragment
1、 Fragment跟Activity之间是如何传值的
2、 描述一下Fragment的生命周期
3、 Fragment的replace和add方法的区别
4、 Fragment如何实现类似Activity栈的压栈和出栈效果的?
5、 Fragment在你们项目中的使用
6、 如何切换fragement,不重新实例化
Java面试题
一、 Java基础
1、 Java中引用类型都有哪些
2、 什么是重载,什么是重写,有什么区别? )
3、 String、StringBuffer和StringBuilder的区别
4、 关键字final和static是怎么使用的
5、 TCP/IP协议簇分哪几层?TCP、IP、XMPP、HTTP、分别属于哪一层?
二、 Java中的设计模式
1、 你所知道的设计模式有哪些
2、 单例设计模式
3、 工厂设计模式
4、 建造者模式(Builder)
5、 适配器设计模式
6、 装饰模式(Decorator)
7、 策略模式(strategy)
8、 观察者模式(Observer)
Android 高级
一、 Android性能优化
1、 如何对Android应用进行性能分析
2、 什么情况下会导致内存泄露
3、 如何避免OOM异常
4、 Android中如何捕获未捕获的异常
5、 ANR是什么?怎样避免和解决ANR(重要)
6、 Android线程间通信有哪几种方式(重要)
7、 Devik进程,linux进程,线程的区别
8、 描述一下android的系统架构?
9、 android应用对内存是如何限制的?我们应该如何合理使用内存?
10、 简述android应用程序结构是哪些?
11、 请解释下Android程序运行时权限与文件系统权限的区别?
12、 Framework工作方式及原理,Activity是如何生成一个view的,机制是什么?
13、 多线程间通信和多进程之间通信有什么不同,分别怎么实现?
二、 Android屏幕适配
1、 屏幕适配方式都有哪些
2、 屏幕适配的处理技巧都有哪些
三、 AIDL
1、 什么是AIDL以及如何使用
2、 AIDL的全称是什么?如何工作?能处理哪些类型的数据?
四、 Android中的事件处理
1、 Handler机制
2、 事件分发机制
3、 子线程发消息到主线程进行更新UI,除了handler和AsyncTask,还有什么?
4、 子线程中能不能new handler?为什么?
五、 Android中的动画
1、 Android中的动画有哪几类,它们的特点和区别是什么
2、 如何修改Activity进入和退出动画
3、 属性动画,例如一个button从A移动到B点,B点还是可以响应点击事件,这个原理是什么?
六、 ContentObserver 内容观察者作用及特点
项目框架的使用
一、 自我介绍
二、 开发中都使用过哪些框架、平台
三、 都使用过哪些自定义控件
四、 自定义控件:绘制圆环的实现过程
五、 自定义控件:摩天轮的实现过程
六、 自定义控件:可拖拽排序的GridLayout的实现过程
七、 流式布局的实现过程
八、 项目的流程
九、 项目中常见的问题
十、 即时通讯是是怎么做的?
十一、 设计模式六大原则
十二、 第三方登陆
十三、 第三方支付
十四、 常见框架分析
《设计思想解读开源框架》
第一章、 热修复设计
-
第一节、 AOT/JIT & dexopt 与 dex2oat
-
第二节、 热修复设计之 CLASS_ISPREVERIFIED 问题
-
第三节、热修复设计之热修复原理
-
第四节、Tinker 的集成与使用(自动补丁包生成)
第二章、 插件化框架设计
-
第一节、 Class 文件与 Dex 文件的结构解读
-
第二节、 Android 资源加载机制详解
-
第三节、 四大组件调用原理
-
第四节、 so 文件加载机制
-
第五节、 Android 系统服务实现原理
第三章、 组件化框架设计
-
第一节、阿里巴巴开源路由框——ARouter 原理分析
-
第二节、APT 编译时期自动生成代码&动态类加载
-
第三节、 Java SPI 机制
-
第四节、 AOP&IOC
-
第五节、 手写组件化架构
第四章、图片加载框架
-
第一节、图片加载框架选型
-
第二节、Glide 原理分析
-
第三节、手写图片加载框架实战
第五章、网络访问框架设计
-
第一节、网络通信必备基础
-
第二节、OkHttp 源码解读
-
第三节、Retrofit 源码解析
第六章、 RXJava 响应式编程框架设计
-
第一节、链式调用
-
第二节、 扩展的观察者模式
-
第三节、事件变换设计
-
第四节、Scheduler 线程控制
第七章、 IOC 架构设计
-
第一节、 依赖注入与控制反转
-
第二节、ButterKnife 原理上篇、中篇、下篇
-
第三节、Dagger 架构设计核心解密
第八章、 Android 架构组件 Jetpack
-
第一节、 LiveData 原理
-
第二节、 Navigation 如何解决 tabLayout 问题
-
第三节、 ViewModel 如何感知 View 生命周期及内核原理
-
第四节、 Room 架构方式方法
-
第五节、 dataBinding 为什么能够支持 MVVM
-
第六节、 WorkManager 内核揭秘
-
第七节、 Lifecycles 生命周期
本文包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
如果需要八份神级学习进阶资料,赶紧戳这里免费领取!
w 生命周期及内核原理**
-
第四节、 Room 架构方式方法
-
第五节、 dataBinding 为什么能够支持 MVVM
-
第六节、 WorkManager 内核揭秘
-
第七节、 Lifecycles 生命周期
[外链图片转存中…(img-GFGtZka2-1619446804624)]
本文包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
[外链图片转存中…(img-dxmcQy1k-1619446804625)]
如果需要八份神级学习进阶资料,赶紧戳这里免费领取!