想要成为一名优秀的Android开发,你需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样。
本文参考了目前大部分 Android 应用启动优化的方案,将大家的方案做一个汇总,如果你有这方面的需求,只需要对照这篇文章,看看其他人的方案,查漏补缺。很多方案是要根据具体的业务去做优化的,所以这里也没有对每一种方案进行详细的介绍,要用到哪一个方案的时候,可以具体去网上查找对应方案的具体实现方法,这里只是做一个汇总。
另外我还加上了部分系统厂商所做的启动相关的优化,不过只写了一些我知道的,还有一些厂商有黑科技,就不在这里的讨论范围了。知道厂商做的事情,可能也会帮助到你,比如联系厂商做白名单、接入厂商 SDK 等
献上面经~
一面:
0.自我介绍完 , 说说项目 , 从第一个到最后一个;
1.问了常用布局有哪几种;
2.Activity生命周期有哪些 , 具体什么情况下回调;
3.问了进程间通信 , Binder、管道、socket等;
4.问了View事件的传递 , activity-window-decorview-view;
5.事件怎么从手指传递到activity的;
6.LongClick和OnClick分别怎么触发的;
7.说说Java类加载器 , Android有哪些类加载器 , android顶级类加载器是什么;
8.怎么自己加载一个类 , 不让父加载器去加载 , 自己load的话 , 怎么解决其它类加载器的引用;
9.说说内存优化(内存泄漏、大对象优化等) ;
10.说说openGL(举了一个实例 , 做一个画中画);
11.说说netty(之前项目提到过) , 基于什么线程模型 , 为什么能承载高并发;
12.说说你最擅长什么(说了x86项目移植 , 算法优化);
13.写一个排序算法 , 时间复杂度多少 , 怎么优化(写了归并 , 说了加希尔) ;
14.写一个常用的动画。
二面:
1、自我介绍?
2、很大数组中找第K大元素?
3、项目相关?
4、比较擅长什么语言?脚本性语言?
5、三次握手?
6、UDP数据包长度多少?
7、研究经历?
8、最近看的书?
9、对Linux环境的了解?
10、进程的状态有几种?
11、你觉得你优势的地方?
12、平时学习开发过程中遇到什么困难?
13、发表了几篇论文?
14、进程和线程的区别?线程池?
15、多线程要注意什么问题?
16、有什么想问的?
三面:
1、项目?项目难点?花了多久时间?
2、有了解哪些最短路算法?如果速度不够,你要怎么优化?
3、最近在看哪些书?
4、平时关注哪些技术?
5、进程与线程的理解?什么时候用进程什么时候用线程?
8、说一下平时的一些学习习惯?
9、团队沟通能力?
10、遇到的最困难的事情?
11、你有什么优势?有什么缺点?
13、对于OFFER怎么选择?考虑哪些因素?
14、有什么想问的?
架构师必须具备抽象思维和分析的能力,这是你进行系统分析和系统分解的基本素质。只有具备这样的能力,架构师才能看清系统的整体,掌控全局,这也是架构师大局观的形成基础。 你如何具备这种能力呢?一是来自于经验,二是来自于学习。
架构师不仅要具备在问题领域上的经验,也需要具备在软件工程领域内的经验。也就是说,架构师必须能够准确得理解需求,然后用软件工程的思想,把需求转化和分解成可用计算机语言实现的程度。经验的积累是需要一个时间过程的,这个过程谁也帮不了你,是需要你去经历的。
但是,如果你有意识地去培养,不断吸取前人的经验的话,还是可以缩短这个周期的。这也是我整理架构师进阶此系列的始动力之一。
《设计思想解读开源框架》
15289712079)]
本文在开源项目:【腾讯文档 】中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…