懂Android架构的骑手,如何搭建一个拖垮公司的技术架构?

本文以幽默诙谐的口吻,讲述了如何通过一系列错误做法,如单点系统、过度依赖、无限循环、不设限流等,来构建一个可能导致公司系统崩溃的技术架构。作者强调了避免这些做法的重要性,同时也揭示了作为一名优秀架构师应具备的正向思维和技术素养。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

序章

Android架构师虽好,却不是人人都能当的,除了聪明绝顶,还要有扎实的技术功底,经过多年的努力,我做到了一点,我已经绝顶了。

一名Android架构师,必须身经百战,经历过无数重大宕机事故。因为神枪手都是子弹喂出来的,身上的每一块肥肉都是你亲口吃出来的,无他,唯手熟尔。

我作为技术 Leader 中最懂架构的骑手,不仅送得一手好外卖,还搞宕过不少大型系统。下面结合自己的经历谈一谈:如何搭建一个拖垮公司的技术架构?

路子

01 系统主链路尽可能单点
单点系统,就像苏伊士运河一样,一旦航道出故障,整个运输系统都瘫痪,非常酸爽。

单点就像单身,开始的时候滋味不好受,但是不用担心,因为后面你就习惯了。

02 程序中多用循环
无限死循环,是老 K 最爱用的编程技巧之一,当你看到 CPU 利用率百分百的时候,你就知道应该甩锅给运维了。

这年头,没点特长技能还真不行。比如我,玩得一手好乐器----退堂鼓,打得特好。

03 系统间增加依赖
在系统里增加内部依赖、外部依赖、第三方依赖。总之,能依赖的,决不自己动手写。

老 K 有今天的成就,主要是因为我的动手能力强,我这辈子只有两件事不会:这也不会,那也不会。

04 不做服务补偿
很多东西,错过就是错过,没法补偿,这就是人生。

作为架构师,要有哲学高度。

所以说小伙子,你只看到了第二层,而你把我只想成了第一层,实际上我是第五层,你知道我讲的是什么意思吗?

05 不做幂等设计
凭啥后端接口要做幂等性设计?前端提交的时候不做判断吗?全都丢给后端开发做?

大家都是打工人,人要脸,树要皮,电线杆子要水泥。

06 不设置超时
连接超时、读超时,有多大设置多大,不管内部调用还是外部调用,都设置成 60 分钟。

只要努力搞,没有时间搞不砸的事情。做不成时间的朋友,就做时间的炮友。

07 不控制流量
让流量来得猛烈一些吧,千万别限流,什么漏桶算法、令牌桶算法,那都不如啤酒桶算法----喝完就睡,爱谁谁。

还控制啥流量啊?你连体重都控制不了,趁早放弃吧。你看看八戒,走了十万八千里也没见瘦下来,而且,他还吃素。

08 不做监控预警
大家都是职场成年人,做好分内事,别多管闲事。

工作几年以后,我明白一个道理:熟练的运用“关我屁事”和“关你屁事”,可以省下人生 80% 的时间。

09 没有重试策略
服务调用失败,你还想重试?我可不是随便的接口。

人生不能重来,更不能乱来。

不信?你让医生,给你开点后悔药,再来杯忘情水,医生立马送你去精神病院。

10 不做系统隔离
千万别做系统隔离,要挂一起挂。

什么是真正的兄弟?就是当兄弟需要女人的时候,挺身而出做他的女人。

面对困男,要排除万男,迎男而上。

11 代码同步调用
做系统就要步调一致、讲究和谐,尽量同步调用,多写 Bug。

通常我写 Bug 的时候,喜欢中午写,知道为什么吗?因为早晚会有报应。

12 不做热数据缓存
RPC 的意义是什么?就是被调用啊。疯狂地调用,是对一个服务最起码的尊重。

你知道为什么大项目上线都要选个好日子吗?这么说吧,你认为上线以后还会有好日子吗?

13 不做系统分级
对系统要一视同仁,不要区分核心系统、非核心系统,你有考虑过系统的感受吗?

如果你被分门别类,你会开心吗?回想起来,小时候我们都很快乐,就是因为那个时候的我们,丑和穷得都还不是那么明显。

14 没有服务降级
服务降级就 low 了,就算宕机也要一起扛。

人生没有白走的路,如果有,那就是微信运动出 Bug 了。

15 无灰度和回滚方案
上线全凭运气,没有回滚方案!就是那么自信。

我这个人,长这么大没学到别的本事,就掌握了一项特殊技能,白天不用安眠药也能安眠,晚上不用兴奋剂也能兴奋。

论熬夜发布,我从来没服过谁。

16 程序多做远程调用
能远程调用的,绝不本地调用,都 5G 时代了,网络延迟那点事不算什么。

再说了,做人要有点耐心,女朋友约会迟到一小时,你敢发火吗?

不敢就对了,千万别惹女人,她们是流血一周都不会死的动物。

17 不做熔断机制
炒股炒昏头了吧,做啥熔断机制?

你问过韭零后吗?基金都绿成啥样了,他喊熔断了吗?

作为韭菜,学费还是要交的,趁年轻的时候多交点,这样到老了再交你就习惯了。

18 不做代码扫描
要有工匠精神,自己代码自己 review,机器哪里懂得欣赏你的代码艺术?

我那骚气的注释、奇妙的函数、神乎其技的 Copy/Paste。每次看代码,都被自己的才华吓到。

19 不做线上压测
上线就完事了,后面的事情交给菩萨吧。

一分耕耘,一分收获。天下没有免费的午餐,所以我一般都睡到下午才起床。

20 结语
架构设计的骚操作还有很多,以上任意一项玩到极致,都足以把公司搞垮。

架构师是最接近圣人的职业,优秀的架构师每天都三省吾身:早饭吃什么,午饭吃什么,晚饭吃什么。

Android进阶架构资料以及面试文档分享

Java基础

Android架构师,Java,Android基础那是必须要掌握的。相关的Android架构资料可以上GitHub自行领取

Java, 作为一门基础语言,考核的是Android开发者是否具备扎实的基本功。

那么常见的Java基础问题有哪些呢?下面我们简单列举一些供大家参考:

  • 1.Java集合类List,Map,Set相关的实现原理。
  • 2.Java线程池的实现原理和使用
  • 3.Java线程同步相关的知识点。
  • 4.Java锁机制,以及死锁产生的原因以及解决方案。
  • 5.Java反射、泛型、注解相关的知识点以及使用。
  • 6.Java类加载机制。
  • 7.Java虚拟机的资源回收机制以及算法。

设计模式

设计模式其本身其实也是属于Java基础范畴的,只不过部分大厂对设计模式的要求较高,也将其设置为一个模块

那么设计模式一般包含哪些重点内容呢?下面我们简单列举一些供大家参考:

  • 1.java设计模式的六大设计原则以及它们的关系。
  • 2.单例模式、适配器模式、装饰者模式、代理模式、外观模式、策略模式、观察者模式、责任链模式、命令模式、状态模式、中介者模式。这十一种常用的设计模式是考核的重点,你需要掌握它们的优缺点以及使用的场景。
  • 3.适配器模式,装饰者模式,外观模式它们之间的区别是什么。
  • 4.代理模式、策略模式、状态模式它们之间的区别是什么。
  • 5.外观模式、中介模式它们之间的区别是什么。
  • 6.静态代理和动态代理的区别,什么场景使用,实现动态代理的几种方式。
  • 7.简单列举几个Android源码中使用到设计模式的例子。

Android基础

Android基础,这个不用说,最基本的东西,务必深究!

Android基础有哪些呢?下面我们简单列举一些供大家参考:

  • 1.Handler机制以及相关知识。
  • 2.Activity和Fragment生命周期。
  • 3.Android四大组件相关的知识。
  • 4.Android进程间通信的方式。
  • 5.Context相关的知识。
  • 6.Activity的启动模式。
  • 7.Android动画相关知识。
  • 8.Android自定义组件相关知识。
  • 9.Android事件分发机制以及触摸事件冲突的处理。
  • 10.ANR产生的原因以及避免ANR的方式。
  • 11.内存泄漏产生的原因以及定位解决的方式。
  • 12.OOM产生的原因以及解决的方式。
  • 13.Android页面渲染机制以及优化方式。
  • 14.LinearLayout、FrameLayout、RelativeLayout和ConstraintLayout的理解和性能对比。
  • 15.Android各版本的特性。
  • 16.Android屏幕适配的技巧。
  • 17.MVC,MVP,MVVM的理解与实践。
  • 18.Android的主题、样式、属性相关的内容。
  • 19.JNI相关的知识。

Android源码分析

Android源码分析,算是架构师的基本要求了

那么常见的Android源码分析有哪些呢?下面我们简单列举一些供大家参考:

  • 1.Android系统的启动流程分析。
  • 2.APP启动的流程分析。
  • 3.Activity的启动流程分析。
  • 4.Zygote进程的创建和启动流程分析。
  • 5.Window窗口创建和加载的流程分析。
  • 6.Dalvik和ART的理解。
  • 7.RecyclerView的源码分析。

阅读源码是一件相对枯燥的事情,如果平时工作中涉及不到的话就很难坚持下去,因此需要非常强的毅力。不过话又说回来,如果你能够熟练地掌握Android源码的话,那么就非常有机会成为一名合格的架构师了

Android进阶技能

这部分主要涉及的点主要是一些性能优化,技术细节方面的问题。

要想成为一名高级开发工程师,性能优化以及架构设计永远都是绕不开的话题。做技术如果只是广而不深的话,是不可能成为一名高级开发工程师的。只有不断提升自己的不可替代性,才能提高自己的价值。

那么常见的Android进阶技能有哪些呢?下面我们简单列举一些供大家参考:

  • 1.App稳定性优化。(crash、性能以及体验等)
  • 2.App启动速度优化。
  • 3.App内存优化。
  • 4.App界面绘制优化。
  • 5.App瘦身优化。
  • 6.App安全优化。
  • 7.网络请求优化。
  • 8.WebView使用优化。
  • 9.RecyclerView的缓存刷新优化。
  • 10.AOP技术的原理和实践。
  • 11.gradle脚本持续集成技术。
  • 12.App进程保活。

image

以上只是Android进阶技能的一小部分通用性技术,除此之外还有很多细分领域相关的进阶技能。总之,如果这项技术是你掌握而其他人普遍不了解的,那么它就属于进阶技能。

新技术研究

Android这些年的技术发展基本上已经趋向成熟,所以对于新技术的研究也并不是那么看中,只需要简单了解即可。

那么有什么新的技术可以在业余时间进行研究呢?下面我们简单列举一些供大家参考:

  • 1.Android组件化。
  • 2.Android插件化。
  • 3.Android热更新技术。
  • 4.Android JetPack框架技术。
  • 5.Kotlin开发技术。
  • 6.Android Hook技术。
  • 7.AOP技术。
  • 8.依赖注入技术IoC。
  • 9.跨平台开发技术:ReactNative、Flutter等。

上面的内容,其实很多已经算不上新技术了,如果你现在还不了解的话,那么你最好花点时间了解一下,否则我只能说你是真的out了。

开源项目源码分析

开源项目源码分析和Android源码分析一样,也是考核应聘者对原理的理解。如果仅仅只是会使用而不对其原理加以了解的话,那么你也只能算是达到初级水平,这样是无法进入到大厂的。

那么开源项目的源码分析我们应该怎么做呢?首先我们需要带着问题一点点阅读源码,搞清楚其内部的实现逻辑,然后梳理出其大致的设计架构,画出UML图,最后总结出其中运用到的设计模式和思想。

那么有哪些优质的开源项目值得我们去研究其源码呢?下面我们简单列举一些供大家参考:

  • OkHttp
  • Retrofit
  • Glide
  • LeakCanary
  • RxJava
  • ARouter
  • EventBus
  • ButterKnife
  • GreenDao
  • Dagger2

以上我列举的基本上都是我们平时开发过程中经常使用到的开源项目,认真研究和分析他们的设计思想和精髓,并积极运用到我们平时的编码当中去,可以让我们的技术得到质的飞跃!

算法

大厂对Android开发工程师的算法也是有一定要求的,这部分没有什么好说的,打开LeetCode去多刷刷题就可以了。

虽说Android开发工程师也需要掌握一定的算法,不过和那些专业做算法的相比肯定是没那么高的要求的,我们并不需要把LeetCode的每道题都刷一遍,只要把一些简单和中等难度的题刷一遍就可以了。

那么常见的Android算法题有哪些呢?下面我们简单列举一些供大家参考:

  • 1.各类排序。(尤其二分法插入排序、归并排序需要着重掌握其思想)
  • 2.手写反转链表、链表复制、链表合并。
  • 3.手写队列或者链表等数据结构的实现。
  • 4.字符串匹配、去重问题。
  • 5.双指针算法问题。
  • 6.数组查重问题。
  • 7.二叉树的遍历和序列化。
  • 8.贪心算法相关问题。

一个好的算法可能极大地提升应用的性能,如果你平时有心的话就会发现在Android源码中也经常能看到算法的身影,感兴趣的可以阅读一下SparseArray的源码。

关于上面所说到的知识点,我都放在GitHub上了,如有需要,可自行查看。
同时我也推荐一下我的Android交流裙Android技术交流不仅可以免费获取资料,而且还能有一帮大佬为你摆平关于Android的技术问题~

今天的文章可谓是积蓄了我这几年来的应聘和面试经历总结出来的经验,干货满满呀!如果你能够一直坚持看到这儿,那么首先我还是十分佩服你的毅力的。不过光是看完而不去付出行动,或者直接进入你的收藏夹里吃灰,那么我写这篇文章就没多大意义了。所以看完之后,还是多多行动起来吧!

可以非常负责地说,如果你能够坚持把我上面列举的内容都一个不拉地看完并且全部消化为自己的知识的话,那么你就至少已经达到了Android中级开发工程师以上的水平,进入大厂技术这块是基本没有什么问题的了。

愿上帝保佑每一位吃饱饭的架构师,阿门。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值