近几年 Python 非常热门,在学术界和产业界的使用率显著提高。目前学习Python的人数日益增多,Python在近3年的编程语言受欢迎度中一直处于榜首。今天我们就来讲讲在产业界,需要具备哪些能力才能获得一个满意的 Python 相关岗位 Offer。
首先,要熟练掌握循环,条件等结构,各种数据类型,运算符的优先级,函数和类的调用和文件读写等等,这些最基础的知识就不多赘述了。
稍微复杂一点的,要理解常见容器,如列表,集合,元组和字典。常见考点:为什么判断容器是否包含某元素,用集合比列表的效率高很多?什么情况该用列表,什么情况该用元组?
再进阶一步,因为程序运行过程中可能出现意料之外的情况,要掌握异常处理的 try-except 机制。除了常见的容器,还会使用 collection 模块下的容器,例我常用的 defaultdict 和 Counter,这会使得代码更为简洁高效。深度拷贝和浅拷贝的用途。
下面提出几个易错点来供大家评估自己的水平,如果大家觉得自己不会出现这样的错误,那说明 Python 的基本功是比较扎实的。
掌握常见技能,包括正则表达式,数据结构,数据库,API 服务。
1. 数据结构
会分析算法的时间和空间复杂度,还包括但不限于链表,队列,哈希表,各种树的结构和使用,和排序,贪心,递归,分治以及动态规划等算法。
2. MySql 数据库的常见操作
例如连接,创建表,增删改等等。至少对数据库基础部分系统学习一下,虽然面试中一般不要求现场实现代码,但可能会问到数据库的设计规范和原则。
3. API 服务
由于微服务方案的广泛使用,很多功能子模块都是一个独立的 API 服务,不同 API 服务之间互相通信从而配合完成整个功能。所以,要求能搭建和调用一个 API 服务,常用 Post,Get 的请求方式,如果掌握 gRPC 和 REST 请求方式更好。
大家不要觉得这个难度很大,其实借助有一些成熟的模块,例如 Django 或 Flask 框架,可以很方便地搭建一个 API 服务,并不比动态规划题目更复杂。
4. 正则表达式
许多数据处理和网页相关的工作都离不开通过正则表达式来高效地匹配和处理数据。
“秩序白银”阶段可以让你接到面试通知,要想拿到满意的 Offer 是避不开“刷题”的。
建议大家刷一下题(评论区有网址),按照题目难度分为简单,中等和困难,主要是评测对数据结构的掌握程度和分析能力。
如果你的目标不是 BAT,京东和今日头条等大厂,对于简单和中等难度的题目都没有问题,困难题目(如动态规划)至少能读懂示例代码就足够了。
线上考试当然是机考,这是大家比较习惯的方式。但现场面试时大多数会采用手写代码的方式。手写代码,就不能通过编译和运行来检验自己的代码,而且反复修改也不美观,所以一定要先确定思路再下笔。
建议大家多和面试官沟通,先明确题目的要求(比如是否区分大小写,函数的输入和输出形式,这其实也是考察工程师在明确需求方面的能力),然后可以说出自己的思路,或许遇上心地善良的会直接帮你指出潜在的问题,避免走弯路。
最后,即使是手写代码也要自测,关注易出错的边界条件。不要觉得自测显得没自信,会自测的码农才能让领导放心。
Tip1:LeetCode 上面的题目太多了,做不完怎么办?
和你人生中的无数次考试一样,以历史原题为主,以你不熟练,易错的题目为主。
Tip2:是不是把这些题目都记下来就万事大吉?
很多公司都是会准备新题的,只是题型接近。所以仅仅记下来是不行的,还需要理解消化,才能举一反三。
Tip3:面试时发现题目肯定可以用动态规划实现,但写不出来,心态崩了啊!
有些题目你没有把握能用最低的复杂度实现,也以放宽一些,但最好不要用穷举法。
如果想在茫茫求职者脱颖而出,获得更优质的工作机会,建议针对某一个方向深造。下表列举了几个岗位对不同基础技能的要求程度,数值越大则要求越高,1 代表基本清楚,5 代表全面掌握。
上表中只列出了部分岗位对于基本技能的掌握情况,还有各岗位对应的专业技能没有列出,例如测试工程师要掌握软件测试理论,爬虫工程师要掌握爬虫与反爬虫技术,运维要补充网络和 DevOps 方面的技能,数据分析要使用 pandas,numpy 和 sklearn 等模块,就不详细展开了。
如果你想成为算法工程师,又有几个细分的算法方向,那可以报名一个培训班(比如智圭谷)进行系统地学习。
在待遇问题上取得更多谈资的前提是具备足够的竞争力。新人的最大弱点是缺乏经验,那么如何快速涨经验呢?
1. 参加比赛
现在有很多的比赛,如果能完整地参加下来对自己的能力和信息都是一个不小的提高。但是想要在大型比赛中名列前茅也并非易事,如果比赛名次不佳又不好写在简历上。
2. 实习或参加项目
如果能够完整地参加一个项目周期(提出需求,需求评审和排期,进度追踪,测试和优化迭代和发布上线),会使得大家受益匪浅。一般面试官会围绕你的论文或项目深入地去讨论一些细节,所以尽量围绕项目做好充分的准备
工作中常用的数据库和 API 服务在面试中出现的比例并不高,而面试常客的算法编程题却在工作中不常见,即使遇到也可以先问问度娘再照搬。因为面试官要通过这种灵活性大的算法编程题来综合考察知识体系,思维和沟通能力。
一方面,工作多年的老手和成绩优异的应届生在这方面的优势并不明显,仍然需要用心准备;另一方面,也给了想转行计算机的门外汉更多的机会,只要付出一定有回报。
关于Python面试,欢迎在评论区留言交流!