2024年Android最全如何教女友学编程?你先去洗澡,我构思一下~,阿里ios面试题

如何成为Android高级架构师!

架构师必须具备抽象思维和分析的能力,这是你进行系统分析和系统分解的基本素质。只有具备这样的能力,架构师才能看清系统的整体,掌控全局,这也是架构师大局观的形成基础。 你如何具备这种能力呢?一是来自于经验,二是来自于学习。

架构师不仅要具备在问题领域上的经验,也需要具备在软件工程领域内的经验。也就是说,架构师必须能够准确得理解需求,然后用软件工程的思想,把需求转化和分解成可用计算机语言实现的程度。经验的积累是需要一个时间过程的,这个过程谁也帮不了你,是需要你去经历的。

但是,如果你有意识地去培养,不断吸取前人的经验的话,还是可以缩短这个周期的。这也是我整理架构师进阶此系列的始动力之一。


成为Android架构师必备知识技能

对应导图的学习笔记(由阿里P8大牛手写,我负责整理成PDF笔记)

部分内容展示

《设计思想解读开源框架》

  • 目录
  • 热修复设计
  • 插件化框架设计

    《360°全方面性能优化》
  • 设计思想与代码质量优化
  • 程序性能优化

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

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

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

水果店不打折你就吃不到西瓜,你不开心。那么,我们让计算机更智能一些。假如西瓜打折,就买西瓜;不打折的话让计算机跟老板讲价,老板同意打折,就买西瓜;不同意,不吃了;

if 水果店打折:

买西瓜

else:

与老板讲价

if 讲价成功:

买西瓜

else:

不吃了。

虽然和老板讲价一般都能讲成功,但是有的老板给力给打五折,有的老板只给打九折。你就想了,若老板打五折,我就买两个,今天吃一个,明天吃一个。若老板不给力,打折不到五折,就买一个,今天先吃,明天再说。

if 水果店打折:

买西瓜

else:

与老板讲价

if 打折成功 and 打折力度<=5:

买两个西瓜

elseif 打折成功 and 打折力度 > 5:

买一个西瓜

else:

不吃了。

此外,有没有发现,打着成功这段代码其实也可以写成:

if 打折成功:

if 打折力度<=5:

买两个西瓜

else:

买一个西瓜

else:

不吃了。

由此可见,计算机也不是完全的一成不变,只要你给他的命令他能理解并且不会模棱两可,他都可以完成工作。

and的意思代表且,or的意思代表或。and和or的顺序不同,结果也不同,可以通过括号来说明判断条件的优先级。

a==b是比较a和b是否相等的意思,而=代表赋值。赋值的含义,我在下面的变量章节介绍。

2 循环


python中涉及到循环的关键字包括:for…in… ,while,break,continue

上面的例子我们已经让电脑成功的可以根据不同的情况去水果店买西瓜了,但是若老板不打折,你就吃不到西瓜了。这时,你就想了,咱们小区门口有三家水果店,分别是鲜丰水果、四季水果和路边摊,一家不打折不代表三家都不打折啊,所以你希望电脑可以去三家都去看看,挑一家打折的店买西瓜。

for 水果店 in (鲜丰水果、四季水果和路边摊):

if 水果店 打折:

买西瓜

break(循环结束)

else:

啥都不做

带西瓜回家

循环的意义在于,可以用电脑对不同的对象执行相同的命令。

介绍下break,break的意思就是结束循环。比如,这段代码中的break表示,我们一旦买了西瓜,那么就带西瓜回家。

3 变量


现在到了介绍’变量’这个重要的东西的时候了。

我们还是去把电脑理解为帮我们工作的一个人,那么作为一个人来说,他需要有记忆力,而我们就可以通过变量去控制、利用计算机的记忆力。

变量可以理解为计算机的一个记忆单元,计算机拥有极好的记忆力,所以,可以随心所欲的使用,用完了就扔,需要了就要。(当然,说随心所欲是不严谨的,但是你可以理解为随心所欲)

那为什么叫变量呢,就是因为可以改变。为什么要改变呢?比如我们都有自己的年龄,我今年18,明年就19了。所以,’年龄’在我的记忆里是每年改变的。

变量对应的一个东西叫常量,在我的记忆力,我的老婆是江江同学。而这个’老婆’这个记忆单元在我的脑子里是不会变的,她永远都是江江同学。常量你现在可以不用理解,我写主要是为了秀恩爱。

现在,计算机又要去买西瓜了。不过这次,你希望计算机可以在三个水果店中,找到一个打折力度最大的水果店去买水果。

之前所有水果店的最大折扣 = None

之前给最大折扣的水果店 = None

for 水果店 in (鲜丰水果、四季水果和路边摊):

当前水果店折扣 = 老板给的折扣

if 当前水果店折扣 < 之前所有水果店的最大折扣:#4折比5折力度大

之前所有水果店的最大折扣 = 当前水果店折扣

之前给最大折扣的水果店 = 水果店

去之前给最大折扣的水果店 买一个西瓜

以上有以下几个记忆单元:

  • 之前所有水果店的最大折扣

  • 之前给最大折扣的水果店

  • 当前水果店折扣

  • 水果店 注意,for a in b,a也是一个变量,他在每次执行的时候都是b中的当前执行的一个元素。

这里需要介绍一些概念:

  • None 在python中表示空,表示这个记忆单元现在啥都没有。比如在我情窦初开时,脑海中就已经有了情人这个记忆单元,我一直在寻找,但遇到你之前一直没有找到,所以那段时间这个记忆单元里面一直是空。

  • 赋值符号:=。注意,在计算机语言里面,一个’=’号表示赋值,两个等号’==’表示比较前后元素。赋值的意思是,把后面的元素,放到前面的变量里面。

变量的作用域


作用域这个东西非常重要,但是真心不想讲,因为没办法结合现实的例子,不过还是大体说明下。

还是刚才的例子,我加了行号,并且我使用-代表空格,表示代码的缩进。

1 之前所有水果店的最大折扣 = None

2 之前给最大折扣的水果店 = None

3 for 水果店 in (鲜丰水果、四季水果和路边摊):

4 —当前水果店折扣 = 老板给的折扣

5 —if 当前水果店折扣 < 之前所有水果店的最大折扣:#4折比5折力度大

6 ------之前所有水果店的最大折扣 = 当前水果店折扣

7 —之前给最大折扣的水果店 = 水果店

8 去 之前给最大折扣的水果店 买一个西瓜

你看这个例子可能纳闷,为什么要先给’之前所有水果店的最大折扣’、’之前给最大折扣的水果店’这两个变量赋值为None呢。就是因为作用域问题。

你看这个程序,每行代码的缩进都是不一样的。变量作用域可以理解为:一个变量,只有在其第一次出现的地方的缩进,以及缩进更多的代码里面,才有效。我们第1、2行的变量,就可以用于3-8行,因为这些代码的缩进都在1、2行的后面。而第四行的变量’当前水果店折扣’,只在5、6、7行有效

1 A = None

2 ————B = None

3 ————…

4 ————————C = None

5 ————————…

6 ————D = None

7 ————…

8 ————————…

9 ————————…

10 …

11 …

再举个例子,ABCD是变量,…代表某些代码。A的作用域就是1-11行,即1-11行都可以使用A。B的作用域是2-9行,C的作用域只有4-5行,注意,8-9行就不能再使用C了,虽然他的缩进和4、5行一样,作用域遇到第一个不能用缩进行代码即结束。D的作用域就是6-9行。

4 函数


看懂以上几节,大概应该明白计算机如何执行代码的了。

而函数和模块,和之前的介绍不太一样。之前是介绍如何让计算机工作,是面向计算机的。而这一节,是面向人的,是如何让我们写给计算机的代码看起来更加简洁、明了。函数和模块都是对代码结构的优化,否则一个稍微大点的项目,一大坨代码,计算机看得懂人看不懂,不利于管理和交流。

首先说函数。函数是一系列代码的集合,用函数一般是有几个原因:

1.给一段代码起个名字。

2.这段代码和使用它的代码关系不大,所以可以抽出来,抽出来后代码更简洁。关系不大的意思就是:使用函数的代码通过传给函数几个参数,函数就可以执行。

3.代码集合起来就可以在代码的不同地方使用。

依然我们去买西瓜,不过我们希望电脑可以今天买完西瓜明天再买一个。按照之前的方式,这个逻辑应该写成这样:

for 水果店 in (鲜丰水果、四季水果和路边摊):

if 水果店打折:

买西瓜

else:

与老板讲价

if 打折成功 and 打折力度<=5:

买两个西瓜

elseif 打折成功 and 打折力度 > 5:

买一个西瓜

else:

不吃了。

休息一天。

for 水果店 in (鲜丰水果、四季水果和路边摊):

if 水果店打折:

买西瓜

else:

与老板讲价

if 打折成功 and 打折力度<=5:

买两个西瓜

elseif 打折成功 and 打折力度 > 5:

买一个西瓜

else:

不吃了。

上面的代码可以实现我们的要求,但是买西瓜的代码其实是重复的,对于重复代码,管理起来比较麻烦,比如你想改一点,那么就要去各个地方都改一次。

那么,我们把买西瓜的代码弄成一个函数,代码就可以整理为:

def 买西瓜_函数():

for 水果店 in (鲜丰水果、四季水果和路边摊):

if 水果店打折:

买西瓜

else:

与老板讲价

if 打折成功 and 打折力度<=5:

买两个西瓜

elseif 打折成功 and 打折力度 > 5:

买一个西瓜

else:

不吃了。

买西瓜_函数()

休息一天。

买西瓜_函数()

这一次,代码整洁多了,而且,我们每次想修改买西瓜的代码,都只需要改这个函数一处代码都可以。

在python中,使用def function_name():定义函数,函数下面所有的缩进都属于这个函数,叫函数体。

使用`function_name()调用函数。

函数参数


现在你又不满足于电脑只会买西瓜了,你又想吃柚子。怎么办呢,那么是不是我们又要写一个买柚子的函数呢。

当然可以再写一个买柚子函数,但是买柚子函数的逻辑和买西瓜函数的逻辑都是一样的,命令也一样,唯一的区别就是之前是卖西瓜,现在是买柚子。如果再写一个类似的买柚子函数,那么又出现刚才说的问题,每次修改买水果的逻辑,都需要同时去修改买西瓜、买柚子函数,如果柚子吃腻了,又要买香蕉、苹果、梨,岂不是要写非常多的函数?

为了解决这个问题,其实有一个更好的方法,就是使用函数参数。

由于我们买水果(无论是西瓜、还是柚子)的功能都是一样的,所以我们可以写一个买水果函数,买水果函数定义了买一个水果的流程,当我们使用这个函数的时候,我们只要告诉这个函数我们要买什么水果,函数就可以根据你告诉他的水果名,去买对应的水果。

买水果函数的代码如下:

def 买水果函数(水果名):

for 水果店 in (鲜丰水果、四季水果和路边摊):

最后是今天给大家分享的一些独家干货:

【Android开发核心知识点笔记】

【Android思维脑图(技能树)】

【Android核心高级技术PDF文档,BAT大厂面试真题解析】

【Android高级架构视频学习资源】

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

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

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

最后是今天给大家分享的一些独家干货:

【Android开发核心知识点笔记】

[外链图片转存中…(img-L2rWFVdi-1715631149293)]

【Android思维脑图(技能树)】

[外链图片转存中…(img-noQchizT-1715631149294)]

【Android核心高级技术PDF文档,BAT大厂面试真题解析】

[外链图片转存中…(img-DfOQINpf-1715631149294)]

【Android高级架构视频学习资源】

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

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

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

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值