1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 安卓开发快速学习!一个本科渣渣是怎么逆袭从咸鱼到Offer收割机的?BAT大厂面试总结

安卓开发快速学习!一个本科渣渣是怎么逆袭从咸鱼到Offer收割机的?BAT大厂面试总结

时间:2019-08-08 11:16:47

相关推荐

安卓开发快速学习!一个本科渣渣是怎么逆袭从咸鱼到Offer收割机的?BAT大厂面试总结

Android开发者该如何提升自己?

说说我的两点建议:

1、横向发展:(适合有自己专精技术的人)

在自己擅长领域深入钻研的同时,会Hybrid开发(Flutter,RN,H5)之外,会web开发、微信小程序等,再过5年你也完全不用担心找工作。但是,这确实比较难,全栈容易发展成全菜,就是啥都知道,啥都不精!

2、纵向发展:(适合大多数人)

如果做应用开发,就往应用架构方向发展;如果做系统层开发,就钻研底层驱动。

可以从以下这些方面进行学习:

移动架构

架构展示层:MVC、MVP、MVVM、Android Architecture Components;

架构层:模块化->组件化->插件化->沙盒/双开技术;

基础进阶:

比如高级自定义View、Android Framework层原理, App 管理机制等等;

JNI 和 NDK 开发也是比较常见,5G来了,招聘单位都在给自己公司规划小视频功能,然而我们却连NDK都不懂;

学习开发语言:

比如Kotlin,做底层C/C++是必不可少的,还有一个最容易忽略的 Java语言本身的高级面向对象思想;

源码:

看懂并且熟悉源码,熟悉其实现原理,争取做到能自己二次封装三方库。

面试官: 说一下垃圾回收机制吧

我: …可以通过强、弱引用计数结合方式解决引用计数的循环引用问题,实际上 Android 的智能指针就是这样实现的…

智能指针

智能指针在整个 Android 工程中使用很广泛,在 binder 相关源码可以看到 sp、wp 类型的引用:

sp<IBinder> result = new BpBinder(handle);wp<IBinder> result = new BpBinder(handle);

sp 即 strong pointer 强指针引用;wp 是 weak pointer 弱指针引用。

在 Java 中我们不用关心对象的销毁及内存释放,GC 机制会自动辨别回收无用对象,而 智能指针 就是 native 层一个小型的 GC 实现。

智能指针以引用计数的方式来标识无用对象,使用智能指针的对象需继承自 RefBase,RefBase 中维护了此对象的强引用数量和弱引用数量。

强指针 sp 重载了 “=” 运算符,在引用其他对象时将强引用计数 +1,在 sp 析构函数中将强引用计数 -1,当强引用计数减至 0 时销毁引用的对象,这样就实现了对象的自动释放。

弱指针引用其他对象时将弱引用计数 +1,在 wp 析构函数中将弱引用计数 -1,当强引用计数为 0 时,不论弱引用计数是否为 0 都销毁引用的对象。

如何解决循环引用问题

只靠强引用计数方式,会存在循环引用的问题,导致对象永远无法被释放,弱引用就是专门用来解决循环引用问题的:

若 A 强引用了 B,那 B 引用 A 时就需使用弱引用,当判断是否为无用对象时仅考虑强引用计数是否为 0,不关心弱引用计数的数量

这样就解决了循环引用导致对象无法释放的问题,但这会引发野指针问题:当 B 要通过弱指针访问 A 时,A 可能已经被销毁了,那指向 A 的这个弱指针就变成野指针了。在这种情况下,就表示 A 确实已经不存在了,需要进行重新创建等其他操作

智能指针自定义规则

智能指针并不是固定的 “当强引用计数为 0 时,不论弱引用计数是否为 0 都销毁引用的对象” ,而是可以自定义规则。RefBase 提供了 extendObjectLifetime() 方法,可以用来设置引用计数器的规则,不同规则对删除目标对象的时机判断也是不一样的,包括以下三种规则:

OBJECT_LIFETIME_STRONG:只有在这个对象内存空间中的强计数器值为 0 的时候才会销毁对象

OBJECT_LIFETIME_WEAK:只有在这个对象内存空间中的强计数器和弱计数器的值都为 0 的时候才会销毁对象

OBJECT_LIFETIME_MASK:不管这两个计数器是不是都为 0,都不销毁对象,即与一般指针无异,还是要自己手动去释放对象

尾声

开发是需要一定的基础的,我是08年开始进入Android这行的,在这期间经历了Android的鼎盛时期,和所谓的Android”凉了“。中间当然也有着,不可说的心酸,看着身边朋友,同事一个个转前端,换行业,其实当时我的心也有过犹豫,但是我还是坚持下来了,这次的疫情就是一个好的机会,大浪淘沙,优胜劣汰。再等等,说不定下一个黄金浪潮就被你等到了。

这是我在这行工作10几年积累的一些资料,如果还想继续在这行业走下去的,或者现在打算跳槽,可以**私信【学习】**我愿意把资料免费分享给大家。

或者直接点击下面链接领取

Android学习PDF+架构视频+面试文档+源码笔记

330页 PDF Android核心笔记几十套阿里 、字节跳动、腾讯、华为、美团等公司的面试题PDF和思维脑图,包含知识脉络 + 诸多细节

Android进阶系统学习视频

PDF和思维脑图,包含知识脉络 + 诸多细节

[外链图片转存中…(img-f0H8Ad1b-1611820757552)]

Android进阶系统学习视频

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。