先说思路,再说操作。

不管你用什么语言,PHP、Python 还是 Java,后端都会涉及到这些东西

1、计算机基础:操作系统、网络系统(协议)、数据库系统、数据结构与算法

2、中间件:Nginx、MQ 等

3、开发工具:Git、Docker 等

4、架构方面:CAP、SOA、微服务等

而其中的每一项,又包含了很多东西。比如数据库,又分关系型和非关系型

1、关系型:MySQL、PostgreSQL 等

2、非关系型:Redis、Memcache、MongoDB 等

用 MySQL 的话,基本的 SQL 操作你要会吧。

写简单的查询、更新 SQL 的时候,为了理解这里面执行的过程,你了解了 MySQL 架构里的连接器、分析器等组件。

后面碰到优化,你可能会慢慢了解到索引的概念。为了更好的理解索引,你又去了解它的实现,比如 B+ 树。

当碰到一些数据异常问题后,你会听到不可重复读、幻读的名词,然后你去了解了隔离级别。为了理解它怎么实现的,你又知道了 MVCC 相关的东西。这个过程中,你又会碰到表级锁、行级锁的概念,在了解 MySQL 怎么解决幻读的时候,你又了解了 Record lock 和 Gap lock 的概念。

针对 Python 语言,也有一些特定的东西

1、Python 基础

2、Web 框架:Flask、Django 等

3、常用类库:Request、SQLAlchemy、Celery 等

4、WSGI 服务器:Gunicorn 等

5、包管理工具:Pipenv 等

之所以列举这么多,是想说,不管你用的什么语言,后端都有很多相通的地方,并且这里面,每个方面,都可以作为你深入的方向。不管是在工作中,还是面试中,你能在某几个方面特别深入,能解决别人不能解决的问题,这就是你的价值。

所以,具体往哪个方向去深入,要根据你的实际情况,看哪些方面用得多,才有机会去深挖。这里,我从一个初学者的角度如何找到一个 Python 后端开发职位,说下我的一些想法。

有一个二八定律,不知道是描述什么的。在找工作的过程中,我觉得有类似的一个道理,可以用 20% 的知识去应对 80% 的问题。特别是在精力有限的时候,我们更应该抓住核心的东西。

首先是 Python 基础,题主有一些基础,就看常用的装饰器、迭代器、各种推导式等,在网上扒下相关的文章,理解下就 OK 了。对于一些常用的数据结构,比如 collections、queue,时间充裕的话,你也可以过下源码看看具体是怎么实现的。

其次是 Web 框架,如果之前没接触其它的,就选 Flask。一方面,这个框架教程多;另一方面,源码相对较少,深入相对容易些。先自己动手写一个博客,了解下 Flask 到底有些什么功能,这里我推荐国内大佬李辉刚出不久的书《Flask Web开发实战》,里面有特别多的实战项目,选一个简单的和一个相对复杂的,跟着做。了解了 Flask 的基本用法后,可以深入去源码理解下,书中也有相关的说明,理解透几个点就行,不要过于追求全。

在实践的过程中,你会接触到 HTTP 协议的一些东西,不知道的谷歌/必应一下就行,如果想了解稍微系统点,可以看下《图解HTTP》。

至于数据库,关系型的和非关系型的都分别选一个用得多的。关系型的选 MySQL,基础的看《SQL必知必会》或者《MySQL必知必会》,进阶的可以看极客时间专栏《MySQL实战45讲》,如果你能把后面的专栏吃透,初级的后端数据库的面试问题应该难不倒你了。非关系型的重点学习 Redis,主要是它支持的数据类型和使用场景,能大概的知道某个类型在底层对应的数据结构,比如有序集合对应跳表和哈希表。这个看你的时间情况选择是否看《Redis设计与实现》,如果能看完这个,相关的问题应该都能回答了。

对于任务队列队列方面,对 Celery 的架构有个大致的认识,常用的 Borker 比如 Redis、RabbitMQ 等,会基本的使用,应该就没什么问题了。

对于工具方面,Git 和 Docker 等也是,会使用就行。

上面的都是 Python 后端开发基本都要掌握的东西。掌握了这些,只能说你能干事情了,但是对于面试,你还需要准备其它的。

最前面提到的的计算机基础东西,实操过程中,就只有数据库说得详细一些,其它的都是没说或者简单带过,但都是大块头。数据结构与算法、网络系统和操作系统,短时间内,看那些经典书籍费时间,效果也不一定好,推荐在 CyC2018/CS-Notes 里面去看下对应的栏目。算法看其中的栏目「算法」和「LeetCode 题解」,前者介绍了一些基础的数据结构,后者对 LeetCode 的题进行了分类,每类练几个就行。至于刷题语言,选择你顺手的就行,我用的 C++,主要是要理解解题思路;「网络」那块可以花个几天时间看完;「操作系统」里可以先看下 Linux 的常用命令,如果有时间,可以看完其它的内容。像「系统设计」那块,也可以简单过过,对于初级的后端,如果能在面试的时候,说一些系统设计方面的认识,肯定有加分。

小结一下,核心就是 Python 基础、Flask、MySQL、Redis、数据结构和算法、网络(HTTP、TCP/IP)。

上面的操作,主要是针对想短期内找到后端开发工作的伙伴。如果你已经工作,应该结合自己的一些实际情况,选一两个方面进行深入。看文档、看源码或者看经典书籍,根据自己的喜好选择。你了解得越深入,就会学到更多的知识。就像数据库的索引那块,如果你深入下去,就把数据结构的 B+ 树给了解了。就是说,深度和广度,其实并不冲突。

完。

------------

2020.6.2 更新

为了方便,我贴下文中涉及的图书链接,有需要的可以看看

PS:上面两本书,如果你用的是 MySQL,我更推荐《MySQL 必知必会》

python适合做后端开发吗-想从事Python 后端开发?相关推荐

  1. python适合做后端开发吗-转行IT做后端开发,学python还是java?

    你还在纠结Java还是Python的这件事,毫无疑问,这个时候,你仍然还是一个菜鸟,甚至连门都没入. 我为什么这么说呢,先别怼我,压制你心里的怒火,继续往下 我先问大家一个问题,为什么中国人用刀又是很 ...

  2. python可以做什么开发-python适合做什么开发_python未来发展怎么样

    python概述 Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年.Python是纯粹的自由软件, 源代 ...

  3. python最适合做什么-python适合做什么开发_python未来发展怎么样

    python概述 Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年.Python是纯粹的自由软件, 源代 ...

  4. python最适合做什么-python适合做什么开发?

    Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. pytho ...

  5. python最适合做什么-总算明了python适合做什么

    在学习完Python的基础知识之后,有很多朋友为自己接下来要干什么感到迷茫.不知道应该通过什么样的项目来锻炼自己编程水平和思维能力.接下来我就给大家说几个适合Python的新手项目和练手项目,Pyth ...

  6. 腾讯技术官发布Python零基础就业宝典,想学习Python的朋友有福了

    近几年来,互联网行业变化非常大,除了龙头企业的更替,"裁员潮""失业潮"也不断掀起,尤其是对于年纪太大的程序员真的是不太友好.但是,根据数据统计表明,自2018 ...

  7. Python可以做什么?你所不知道的Python——生活中的奇妙用途

    大家都知道Python可以用来做数据分析.爬虫,甚至是人工智能,但却觉得那些东西比较遥远,会担心孩子学Python为时过早. Python 其实Python并不只是能做一些很专业.高端的应用,它在生活 ...

  8. python适合做后端开发吗-python适合后端开发么

    python适合后端开发,因为Python是一种计算机程序设计语言,既可用于前端也可用于后端开发,在Python中编写后端可以简化为编写各个模块,其间的连接随后由前端部分中的用户操作确定和控制. Py ...

  9. python适合做后端开发吗-pythonWeb后端开发好呢?还是从事网络爬虫比较好呢?

    从目前的就业形势看,是从事pythonWeb后端开发好呢?还是从事网络爬虫比较好呢? 目前互联网+的趋势依旧火热,越来越多的行业已经开始向互联网的方向靠拢了.在互联网+的影响下,各行各业都会有无限的可 ...

  10. python适合做后端开发吗-用Python开发app后端有优势吗

    app后端开发学Python. Python的优点: 1.简单易学 Python 编程语言最大的优点之一,是其具有伪代码的特质,它可以让我们在开发 Python 程序时,专注于解决问题,而不是搞明白语 ...

最新文章

  1. on-my-zsh git 仓库下运行卡顿
  2. java怎么播放不了声音,怎么在java application中播放声音
  3. sqli-labs(十三)(hpp)
  4. 常见荧光定量 PCR 检测方法比较
  5. python中numpy模块的around方法_Python numpy.around()用法及代码示例
  6. 【LeetCode-SQL每日一练】—— 620. 有趣的电影
  7. ipython和pylab模式_为什么要使用IPython?
  8. 卓越领导者的智慧(精华版)
  9. Spark之SparkSQL理论篇
  10. html 写字版插件,JS+HTML5 Canvas实现简单的写字板功能示例
  11. Linux xmpp网络不通,Pidgin XMPP协议拒绝访问漏洞
  12. 实习成长:logback收集项目日志,实现日志告警机器人
  13. Windows定时自动执行python脚本2(自动运行问题已解决)
  14. 批量提取网页中的超链接
  15. 基于ASP.NET的读书网站设计与实现
  16. Excel如何对单元格内的分隔数据进行求和操作?
  17. 计算机硬盘格式化了如何恢复出厂设置,电脑恢复出厂设置和格式化有什么区别...
  18. python编程价格_Python基础练习实例46(查询价格)
  19. 主板怎么安装在计算机主机箱,计算机主板、主机、机箱和计算机的制作方法
  20. 狂神说java之002.预科

热门文章

  1. Go-ethereum源码解析-Part I
  2. Dynamics 365-关于Solution的那些事(一)
  3. spring mvc拦截器和mvc:annotation-driven /的详解
  4. android:configChanges=keyboard|keyboardHidden|orientation|screenSize
  5. 1.CentOS安装Redis
  6. [转]阿里巴巴集团去IOE运动的思考与总结
  7. 最适合python程序员用的笔记本-作为一个Python程序员,电脑上应该具备哪些软件?...
  8. python使用界面-(八)Python 图形化界面设计
  9. python怎么安装matplotlib-[Python]一步步安装numpy,matplotlib
  10. python从入门到精通书-100G Python从入门到精通全套资料!