2021年了,居然还有这样的Android工程师?

本文讲述了作者公司的一位自称有3年经验的安卓工程师在实际工作中暴露出技术不足的问题,如内存泄漏、应用卡顿等。作者意识到在技术日新月异的行业中,程序员需要不断提升自己的专业技能,避免被行业淘汰。同时,文章强调了Android开发中的性能优化重要性,如JVM内存管理,并提出Android开发者应深入理解JVM原理以提升应用性能。
摘要由CSDN通过智能技术生成

想起前段时间,公司入职了一个安卓工程师,说是工作3年多了。吃饭的时候经常听到其他同事吐槽那个人太菜了。我心想,能有多菜,总不至于基本工作都做不了吧?

最近他被调到了我们小组,负责接手某个app的后续开发。那个app已经是个半成品,按理说,不出半个月肯定做完了。

可是每天看他愁眉苦脸的鼓捣,也不知道做的咋样了。

某天中午他趁着大家都出去吃饭,让我帮他看看。我一看,这个项目基本没什么进展啊,反而漏洞百出。装上这个应用之后,十分卡顿,随便点点,就有三个地方报错了,经常使用一段时间就莫名其妙的闪退,而且时不时跳出应用异常,建议卸载的提示。一登录就三处报错,什么鬼???一进行检查,发现里面有大量的内存泄漏和内存抖动问题。

我问他你不是工作3年了吗?怎么能做成这个样子?

他支支吾吾半天,才说自己是自学了3年。我问他Java掌握的怎么样?他说,做andriod还要掌握Java吗?

我震惊了!这TM怎么通过面试的???

刚好老板路过,我正准备抱怨一番。没想到他先开口了:“二舅,一起去吃饭吗?”

老板笑着和他一起走了,只剩下我在风中凌乱…

本故事纯属虚构,如有雷同,可能是巧合吧。

人还是需要有危机意识:

人在年轻的时候不能过的太舒服,刚毕业前几年还是要多吃点苦,努力提高自己的专业知识,提前做好积累,等后面干不动了,也有老本可以吃啊。

“平时工作用不到这些东西,自己也就没去看”。有这种观点的人,我相信不在少数。我就不明白了,一些技能,一家公司用不到不代表其它公司也用不到,人总得换工作吧,不多学一点怎么能通过面试呢。

话说回来,有些技能工作中还真用的少,但就是面试有用,这个不服气不行。

所以摆在面前得一个事实:现在随着年龄的增长,程序员的学习能力减弱,对新技术的掌握也会越发困难。对比年轻的程序员,年长的程序员的技术核心竞争力将不复存在,原因无非是在自己应该静下来思考,静下来体系化学习的时候,没有把握住机遇,能力提升不起来。所以时时刻刻都要面临着被公司淘汰的风险。

每个人都要思考这个问题,在当今的互联网环境下,如何有危机感,如何规划自己的未来,只有未雨绸缪,未来才能应对自如

Android 开发的现状

经过近十年的发展,Android技术优化日新月异,如今Android 10.0 已经发布,Android系统性能也已经非常流畅,可以在体验上完全媲美iOS。到了各大厂商手里,改源码、自定义系统,使得Android原生系统变得鱼龙混杂,然后到了不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。

APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。

安卓手机的开发语言是Java(kotlin也是对java的封装),Java本身有一个很好的管理内存的机制—— GC。然而,GC却经常会遇到无法回收的内存,即内存泄漏,内存抖动,结果可能是OOM。

为了避免出现这些问题,我们首先必须对JVM的内存管理机制有自己清晰的认识。

JVM将运行时数据区分为线程私有和共享数据区两大类。

其中线程私有的数据区包含程序计数器、虚拟机栈、本地方法区,所有线程共享的数据区包含 Java 堆、方法区,在方法区内有一个常量池。

内存泄露就是系统回收不了那些分配出去但是又不使用的内存, 形象点比喻就像家里的水龙头没有拧紧,漏水了。

随着程序的运行,可以使用的内存就会越来越少,机子就会越来越卡,直到内存数据溢出,然后程序就会挂掉,再跟着操作系统也可能无响应,接着你就按重启了…

内存泄漏分为:

常发性内存泄漏,偶发性内存泄漏,一次性内存泄漏,隐式内存泄漏。

隐式内存泄漏危害性非常大,因为较之于常发性和偶发性内存泄漏更难被检测到。内存泄漏的堆积,将会消耗系统所有的内存!手机变卡,就在所难免了。

另外,JAVA编程可以跨平台,但运行效率相对于iOS的Objective-C编程要低,运行时需要占用大量内存来换取执行速度,再加上不定期的内存自动回收机制,出现的现象就是卡顿。随着安装程序越多,大量的系统垃圾和后台运行占据了很多资源,出现卡顿现象,有些甚至还直接黑屏死机,严重影响了手机正常使用体验。使用时间越长,安卓手机出现卡顿就越多。

如今安卓手机的性能已经比之前提高了许多,一个优秀的Android开发者,需要熟练掌握JVM原理与性能优化技术,将自己开发的app性能做到极致。

JVM的核心原理你懂多少?如何通过JVM原理指导我们代码实践开发?我们该如何从架构层面优化产品性能?谷歌工程师是如何实现性能与功能上的改进技术?项目整体框架设计中该使用哪些优化技术?

最后

不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知。懂的越多的时候你才会发现懂的越少。

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2019-2020面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节

还有 高级架构技术进阶脑图、Android开发面试专题资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

如果你进阶的路上缺乏方向,可以扫码下方二维码进群领取更多学习资料,我们一起在群内技术升级!


以下全部内容都可以在github上获取!

 

  • Android进阶学习全套手册

  • Android对标阿里P7学习视频

  • BATJ大厂Android高频面试题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值