Android之内存泄漏调试学习与总结,灵魂拷问

2021/7/8 7:35:40

本文主要是介绍Android之内存泄漏调试学习与总结,灵魂拷问,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

### 初级 初级研发工程师的定义是掌握基础的Android知识,能够独立完成一个功能,工作年限大概在1-2年,这个层级大部分人通过看一些资料书籍再经过项目练习很快可以达到。这个级别的人往往需要掌握如下一些技能: * 掌握Android 四大组件知识,深入了解相关生命周期,对于Application、Fragment、Intent常见的开发知识也必须掌握。 * 掌握Android 基本布局和控件的属性和使用,常用布局有LinearLayout、RelativeLayout、ConstraintLayout等,控件有- TextView、ImageView、RecyclerView、ScrollView等。 * 对Android的资源访问使用有基本了解,了解Android针对不同国家、语言、屏幕、API的适配原理。 * 掌握android系统服务和工具类的使用,对网络访问和数据库操作有基本认知。 * 熟练掌握研发工具,如IDE、模拟器、网络代理、日志等。 ### 中级 我对中级工程师的定义是能够熟练完成功能研发外,还需要掌握常见开源库的一些原理,并仿照开源库去造轮子练习。这个阶段的人大多工作3-5年,业务开发能力熟练,碰到任何一个问题都能够得到解决,这个级别的人往往需要具备如下技能: * 熟悉SOLID基础设计原则,掌握23种设计模式。 * 对于研发语言特性java/kotlin有深入理解,如反射、动态代理、apt等。 * 对Android架构有基础了解,对apk结构和打包原理有深入了解。 * 对于Android各个版本特性有基本了解,如MD设计、权限管理、doze模式等。 * 熟练掌握各种研发调试工具,如git、gradle、mat、layout inspector等。 * 掌握Handler\AsyncTask原理,熟悉多线程开发。 * 对绘页面制原理有初步理解,能够实现一个复杂自定义控件。 * 能够熟练掌握开源库的使用,如图片库(Glide\Fresco)、网络库(Volley\okhttp\Retrofit)、工具(Dagger\RxJava\EventBus)等,能够对这些常用的库进行二次封装。 * 熟悉应用常见的优化方法,避免编写内存泄漏的代码。 ### 高级 对于高级,就不仅限于功能和业务开发,还需要深入理解Android系统的运行原理,达到融会贯通,部分可够作为Android端架构师。这一阶段的人大多工作5-8年,具备开源库设计能力,同时对于Android系统的运行原理也比较了解。 * 掌握java高级特性,如JUC、线程池、NIO\BIO等;掌握jvm虚拟机知识,如内存模型、GC原理、类加载机制、线程模型等。 * 对Android运行环境有深入理解,理解Android沙盒机制,掌握AIDL原理及Binder通信原理,了解app和activity启动原理。 * 掌握热修复原理,各大厂商方案的优缺点。 * 对于Android事件分发有深入理解,重点掌握触摸事件机制。 * 深入理解Android绘制原理,理解VSYNC和surface机制和窗口原理。 * 深入理解Android动画原理,包括补间动画和属性动画。 * 对于Android安全机制有基本认知,理解Android安全原理。 * 深入理解端上设计范式思想,如mvc\mvp\mvvm\clean-arch等。 * 理解架构演进,有良好的分层和拆分思路,掌握模块化、插件化、动态部署等。 * 对新技术敏感(,理解掌握下一代架构dynamic feature等。 如果达到这一水平,恭喜你,你已经超过70%左右的人,但是如果要再进一步,比如架构中/开发专家,那么除了理解Android的一些核心原理外,还需要具有架构设计能力,能够从更高层面看待问题,理解整个系统的设计。 ### 专家 作为开发专家,那么除了理解Android的一些核心原理外,还需要具有架构设计能力,能够从更高层面看待问题,理解整个系统的设计。 * 理解微服务、SOA思想,对于后端开发有一定涉猎。 * 了解前端研发工具和思想,知道vue react等研发框架。 * 深入理解跨端技术,如phonegap、weex/RN flutter、小程序快应用等。 ![](http://www.www.zyiz.net/i/li/?n=2&i=images/20210708/1625675119692098.jpg) **那么除了上面的技术方面你与高级工程师差在哪里呢?** ### 1、工作经验与技术积累 说到高级工程师大家的第一印象自然就是工作经验丰富,技术够牛逼。 注意这里说的是工作经验,并不是指工作时间。有的人踏踏实实做项目,业余时间想着多学点新技术,坚持读书,认真写博客总结,多实践,加上自己本身悟性又不差的,2、3 年的时间都可以有别人 3、5 年的工作经验,成长为公司的高级工程师水到渠成。而有的人混日子,做的项目得过且过,业余时间玩游戏,追剧,也许你在公司工作了 10 年看起来兢兢业业,然而你对自己没有更高的要求,安于现状,不求进步,这类人即使有 10 年的工作时间,却只能止步于此。 靠着自己持续不断的学习,以及工作经验的积累,一步一步,见得市面多,踩的坑也多,技术越来越牛逼也是理所应当的事,而技术是一个高级工程师最基本的要求,然而我却认为只要不是傻子,对技术有点追求的人,想达到这点不难,只是时间长短问题而已,除了技术,你跟那些真正的高级工程师还有其他方面的差距! ### 2、责任心 高级工程师责任心一定很强,责任心是体现一个人的态度问题,对于一个 bug ,他们永远都会重视,想尽一切办法找到原因并尽快解决,而有的人对于 bug 却是得过且过,解决 bug 的态度就是尝试,认为从表面上解决了就 ok 了。 我们 CTO 十几年的软件开发经验,有用户反馈 bug ,不管多忙,不管什么时间,一定停下手头上的事情,去找到原因并解决。我在薄荷的经历,曾不止一次跟着他为了解决一个 bug 搞到深夜,有几次深夜发现一个导致用户不能付款的 bug ,我都躺床上睡觉了,被 CTO 喊起来半夜赶往公司去修复的经历,当时还觉得不理解,时间长了,我才意识到这种责任心是职业素养,现在也深深的被感染,在任何时候、任何时间,我的手机、电脑都是不离身,出问题一定第一时间进行响应! 对比下你们,你们的责任心够强么? ## 最后 都说三年是程序员的一个坎,能否晋升或者提高自己的核心竞争力,这几年就十分关键。 **技术发展的这么快,从哪些方面开始学习,才能达到高级工程师水平,最后进阶到Android架构师/技术专家?我总结了这 5大块;** > 我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 PDF(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。 >![](http://www.www.zyiz.net/i/li/?n=2&i=images/20210708/1625675119620045.jpg) **Java语言与原理;** 大厂,小厂。Android面试先看你熟不熟悉Java语言 > ![](http://www.www.zyiz.net/i/li/?n=2&i=images/20210708/1625675119833620.jpg) **高级UI与自定义view;** 自定义view,Android开发的基本功。 > ![](http://www.www.zyiz.net/i/li/?n=2&i=images/20210708/1625675119250277.jpg) **性能调优;** 数据结构算法,设计模式。都是这里面的关键基础和重点需要熟练的。 > ![](http://www.www.zyiz.net/i/li/?n=2&i=images/20210708/1625675120583280.jpg) **NDK开发;** 未来的方向,高薪必会。 > ![](http://www.www.zyiz.net/i/li/?n=2&i=images/20210708/1625675120482707.jpg) **前沿技术;** 组件化,热升级,热修复,框架设计 > ![](http://www.www.zyiz.net/i/li/?n=2&i=images/20210708/1625675120484426.jpg) > 网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。 我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多,GitHub可见;**[《Android架构视频+学习笔记》](https://github.com/a120464/Android-P7/blob/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)** 当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。 **不出半年,你就能看出变化!**

这篇关于Android之内存泄漏调试学习与总结,灵魂拷问的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程