2024年安卓最全聊聊 Android 开发的现状和思考(3),2024年最新android系统工程师面试题

总结

算法知识点繁多,企业考察的题目千变万化,面对越来越近的“金九银十”,我给大家准备好了一套比较完善的学习方法,希望能帮助大家在有限的时间里尽可能系统快速的恶补算法,通过高效的学习来提高大家面试中算法模块的通过率。

这一套学习资料既有文字档也有视频,里面不仅仅有关键知识点的整理,还有案例的算法相关部分的讲解,可以帮助大家更好更全面的进行学习,二者搭配起来学习效果会更好。

部分资料展示:




有了这套学习资料,坚持刷题一周,你就会发现自己的算法知识体系有明显的完善,离大厂Offer的距离更加近。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • HttpClientVolleyOkHttpRetrofit
  • ImageLoaderPicassoFrescoGlide
  • OrmLiteLitePalGreenDaoRealmRoom

除了熟悉的网络、图片和数据库“三大件”外,还有像 xUtilsEventBusDaggerRxJavaMultiType 等等,它们对于老 Android 来说,可以说是贯穿了整个“青春期”的回忆。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从一开始的 MVCMVP 再到 MVVM 乃至官方提供的 AAC 架构,Android 的技术栈一直在“刷新”,而随着 Kotlin 的扶正还有 Android Jetpack 的提出,新一代的完善开发体系也给老开发们带来了一些额外的“烦躁”。

“AS 2.3 又不是不能用?!”

”项目还要继续兼容 4.4 版本?!!”

“RxJava 都还没用上就开始吹协程?!!!”

因为旧项目的维护或者工作环境的影响,很多时候其实没有新框架落地的条件,甚至于 Flutter 的出现都会被贩卖一波焦虑。

那就让我们聊聊这种焦虑或者不安。放心,后面没有“防不胜防”!

“没用过”的焦虑

对于老 Android 来说,有一种“焦虑”情绪来自于“我还没用过”,因为新生的框架和技术在不断迭代,而“没有用过就跟不上时代”的情绪,会在每次技术更新迭代时被反复放大,这大概就是部分 Android 焦虑的来源。

例如现在的 Android Jetpack、协程、 Jetpack ComposeFlutter 等,每次看到这些字眼时就会莫名地出现“焦虑”,犹如当年一开始听到 DaggerRxJavaReact Native 一样。

那要怎么样缓(tao)解(bi)这种焦虑呢?这就要先理解下这些“新技术”名词不断出现地原因,我把这种“我还没用过”的焦虑理解为“扳手升级副作用”。

这里举一个有趣的例子,如下图所示是不同阶段扳手,可以看到:

  • 从 1 到 2 用户拧螺母需要准备的扳手数量减少了;
  • 从 2 到 3 扳手变得更加帅气有力,并且附带的“攻击力”也有所上升;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

那问题来了:

一、既然有 2 这样便捷的扳手,那 1 这种扳手还有必要存在吗?

  • 答案是有的,因为 1 中的扳手性价比更高,在特点的场景下会更轻便。

二、那扳手 2 既然都满足大部分场景了,扳手 3 有必要存在吗?

  • 答案也是有的,因为 3 中的扳手更加帅气,同时从健壮的角度更可靠。

这里扯了这两个问题其实是想表达:正在情况下随着技术的发展,新生框架和技术是为了让开发变成更便捷,同时降低开发门槛方便后来者入坑。

所以作为老 Android 开发,在经历了开发项目需要准备“一堆扳手”的手动挡时代,如今在这个只要一个“扳手”就能干活的半自动挡时代,怎么可能会拧不动螺母?

过去的日子我们拧了无数的螺母,现在只不过要需要换个“扳手”,而这个扳手是可能是 3 ,第一次拿起来也许会“太重”,扭动的开关也不熟练,但是曾经的螺母需要“拧多深”和“卡什么体位”,这些对我们来说其实和之前没太大区别。

所以只要还是“拧螺母”,我们不应该因为担心“扳手”的品类太多而焦虑,或者还应该“庆幸”这个领域仍在健康发展。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

技术的健康演进只会让它越来越容易被理解和使用,让开发的门槛变得越来越低:

  • RxJava1RxJava2 的变化;
  • Dagger 到现在官方的 Koin
  • 从 Java 的 AsyncTask 到 Kotlin 的协程;
  • ButterKnifeKTX

所以用新的"扳手"肯定比用旧的一堆"扳手"方便,实际上开发者需要维护的代码和逻辑会越来越少,这是一个社区越来越成熟的表现,进而开发的门槛也就越来越低了。

而对于新技术的无法落地到项目的焦虑,我们可以换个思路:没有条件落地,但是可以去尝试理解这个新框架或技术的本质是什么,从而缓解对未知的恐惧。

比如 Dagger 说白了就是基于注解和模板生成代码,所以如果看不懂各种"生涩"的注解,那可以直接看生成的代码,理解 Dagger 是如何用“臃肿”的代码来为我们解耦。

另外在接下来的 Android Studio 4.1 下,已经开始支持了 Dagger 类的直接跳转,我们可以轻松地在 Dagger 的关联代码间进行导航。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

所以换一个“扳手”的学习成本并不高,只要你扭螺母的功底还在。“现在还没用过”也不用慌,也许等等技术还能更成熟更方便学习,何况再等等还能白嫖大佬的文章不是么?

当然这里还有一个有趣的误解:

扳手 2 升级后比扳手 1 牛逼了,所以作为使用扳手 2 的我比使用扳手 1 的牛逼?

然而真相是:牛逼的是扳手的制造者,而作为使用者,直接使用 OkHttp 的可能还不如使用 HttpClient 的开发对网络请求的理解"深刻"。

框架降低了开发的门槛,提高了代码的可维护性,但是作为使用者的我们在享受便捷的同时,要变牛逼的根本不在于用,而在于需要理解框架为什么好用!

比如 OkHttp 好用在于它优秀的拦截器设计,而 Retrofit 通过注解生成模板代码提高了开发效率,但是 Retrofit 本身网络请求部分还是需要 OkHttp等去支持。

把框架优秀的部分吃下去,那么你才会变牛逼,OkHttp 的设计就在 Flutter 中就被 Dio 框架完美复现,而 Dio 框架也成为了 Flutter 下热门的网络请求封装之一。

竞争力的焦虑

还有一种就是竞争力的焦虑,我们时不时会把自己和年轻一代的开发们做比较,明显年轻人更便宜更耐C也更有体力,这让即将成为后浪的我们产生了职业生涯的焦虑。

因为开发体系的成熟带来了的门槛的降低,开发 Android 应用的要求确实没以前高,但是“能用”和“好用”那是两个故事!

如果你进阶的路上缺乏方向,可以加入我们的圈子和安卓开发者们一起学习交流!

  • Android进阶学习全套手册

    img

  • Android对标阿里P7学习视频

    img

  • BATJ大厂Android高频面试题

    img

最后,借用我最喜欢的乔布斯语录,作为本文的结尾:

人这一辈子没法做太多的事情,所以每一件都要做得精彩绝伦。
你的时间有限,所以不要为别人而活。不要被教条所限,不要活在别人的观念里。不要让别人的意见左右自己内心的声音。
最重要的是,勇敢的去追随自己的心灵和直觉,只有自己的心灵和直觉才知道你自己的真实想法,其他一切都是次要。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值