找工作就像找女朋友一样,是一个匹配的过程。
找女朋友:确定目标-互相了解-展现自己-在一起/追不上。
求职:确定求职目标 -了解雇主期望 - 优化求职物料 - 面试谈判。
因此,了解企业需求是基础。
企业对Python工程师的需求主要分为后端开发、算法&大数据&爬虫类、Python前端开发/全栈开发。越早决定职业发展方向越好,这样你可以更有针对性地准备面试。
以Python后端开发工程师为例,你需要掌握Python语言、数据结构、算法、Python框架、数据库等。其中,一些大厂的面试70%的题目与数据结构和算法有关。
Python语言
1. Python基础入门
- 变量及其运算
- Reverse 3-digit Integer
- Swap Two Variables
2. 程序控制流
- 如何写好if语句
- for 循环和 while 循环
3. 函数
- 函数的定义及使用
- 函数的参数传递
4. 面向对象入门
- 什么是面向对象
- 类和对象的概念
这部分推荐几个学习资源:
- Python官方文档
- PEP-8::编写python代码的指南
- Python Package Index:官方python包repo
- / r / learnpython wiki
数据结构
你可以先从简单的队列、栈开始再到平衡数,把数据结构画出来,直观地去了解这些数据结构。一定要自己动手打一下代码练练手,帮助理解概念。
可以在LintCode上刷题,按照类别进行刷题,刷完一类、理解之后再刷下一类,帮助理解和巩固。每一类题目都可以先从简单的做起,不会的可以参考Lintcode答案解析。
数据结构部分需要掌握:
1. 列表(List)和元组(Tuple)
- 列表的概念及常用操作
- 元组的概念及常用操作
2. 字符串(String)
- 字符串的概念及常用操作
- 字符和 Unicode
3. 什么是引用(Reference)?
- 计算机内存模型
4. 链表(Linked list)
- 链表的构建
- 链表的常用操作
5. 算法的时间复杂度分析
6. 栈(Stack)
- 栈的实现及常用操作
- 栈在操作系统中的应用
7. 队列(Queue)
- 队列的实现及常用操作
- Python 中的 queue 模块
8. 什么是树(Tree)?
- 二叉树的定义
- 二叉树的构建
9. 二叉树的深度优先遍历
- 前序遍历
- 中序遍历
- 后序遍历
10. 二叉树的宽度优先遍历
- 宽度优先遍历的实现
- 按层次遍历
11. 二分搜索树(BST)
- 什么是 BST ?
- BST 的常用操作
- BST 在实际系统中的应用
12. 集合(Set)和字典(Dictionary)
- 集合的定义及常用操作
- 字典的定义及常用操作
- 集合和字典的实现
算法
对算法题来说有两大法宝,“拿到题选什么算法”和“如何实现这个算法”,后者会更容易一些,所以可以先从实现算法开始练起(LintCode的分类阶梯训练)。
很多同学存在刷题误区:刷题百遍,效果没见。
刷题应该精刷,看到一道题,先尝试做,做出来后和答案对比,自己的解答和答案的时间复杂度、空间复杂度分别是多少,使用的算法是否一样,和答案相比差在哪里。在这个思考的过程中,对题目的理解程度就很深了。这样一天可能只能刷3、4题,但不要着急,因为粗刷没有用。
算法部分需要掌握:
1. 分治算法
2. 递归(Recursive)
- 什么是递归 ?
- 递归的三要素
- 递归算法的时间和空间复杂度分析
3. 普通排序算法
- 选择排序
- 插入排序
- 冒泡排序
4. 归并排序
- 归并排序的算法思想
- 归并排序的 Python 实现
5. 快速排序
- 快速排序的算法思想
- 快速排序的 Python 实现
6. 使用 Python 的 Sort 和 cmp 函数实现各种情况下的排序
Python框架
根据岗位会有不同要求,一般需要2-3个能够写在简历上的重要项目。
web开发,主要框架有Django,Flask,Tornado;
数据科学,主要框架是Numpy,Pandas,Matplotlib;
深度学习,主要框架是TensorFlow;
网络爬虫,主要框架是Scrapy。
下面介绍一下各个Pyhton框架的学习资源。
web开发
Python里运用的最为广泛的一个框架就是Django了,Instagram,Pinterest,Washington Post等知名网站就是用Python和Django框架联合开发的。所以如果要快速熟悉Python在web开发方面的应用,那么可以从Django开始。下面是一些Django的练手小项目,可以参考这些内容进行进一步的练习。
如果自学困难,可以随时免费试听《Django开发入门》这门课程,FLAG一线大厂老师带队,一个周末就能搭建出Instagram后台。
数据科学
深度学习
Neural Style-照片的风格迁移
Mozilla Deep Speech-语音转文本
Deepdream-Google的开源图像识别工具
Neural Doodle-把涂鸦风图片转换为艺术品风格的画作
网络爬虫
数据库
sql语言的基本知识要掌握,要能够使用数据库实现项目功能。推荐学习资源:
服务器配置
掌握Linux等平台开发使用功能,能独立将项目部署发布即可。
在实际找工作中,你会发现,即使是同是Python后端开发岗位,不同行业、不同公司的要求也不一样。以上内容已经能够cover大部分公司的要求,但建议你选定心仪公司后,根据JD要求去充实自己的技能和项目经历。
转载:https://blog.csdn.net/JiuZhang_ninechapter/article/details/105631820