Python程序员面试技巧

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

  好程序员Python培训分享Python程序员面试技巧,往年的这个时候,“金三银四”的招聘热潮已经扑面而至。今年,因为疫情的影响,各大公司的社招可能跟“2002的第一场雪”一样,比以往时候来得更晚一些。当然,对于计划在年后找工作或者跳槽的人来说,相当于多了一段可以用来准备面试的时间,相信有这个计划的人已经开始各项准备工作了。
  今天,想跟大家聊一聊面试中的一些技巧,因为我自己是一个程序员,目前以Python作为主要的开发语言,我跟大家聊的也是程序员面试的相关技巧。可能我会以Python程序员面试为例,但是这些技巧应该对程序员都有用的。
  我们的简历上通常会有一个叫做“专业技能”的部分,这个部分通常会罗列6到12项左右的内容来展示你对编程语言、开发框架、服务器产品、开发工具等的理解和掌握情况。这里的每句话在面试时都可能都会产生一个或多个对应的问题,如果不事先做好准备,只是凭感觉罗列出若干项内容,那么在面试的时候必然是一个填不起的大坑。接下来,我为大家举例说明这些坑都在什么地方。
  下面的内容是不是在你的简历上也有类似的描述呀,那么看看我提出的问题,你是否能够给出漂亮的答案。

  技能点1:熟练的使用Python语言进行应用程序开发,有良好的编程习惯,对面向对象的设计原则以及常用设计模式有较为深入的理解,熟悉Python开发中常用的标准库和第三方库。
  如果我是面试官,针对上面的描述会问你如下几个问题:

问题1:你所指的良好的编程习惯是什么。
问这个问题其实是想考察你对编程规范(如:PEP8)的理解,除此之外还想知道你有没有使用Lint工具检查代码的习惯。
问题2:说一说你知道的面向对象的设计原则有哪些;你在项目中用到过哪些设计模式。
很多面试者都喜欢说自己懂设计原则和设计模式,但是基本上稍微一问就原形毕露了。最简单的“哪些地方会用到单例模式”,很多面试者都答不上来,而且面试官并不想听你说出23种设计模式的名字,而是想知道你的项目中哪个场景用到了哪种设计模式。
问题3:说几个你在平时工作中用得最多的标准库和三方库。
  技能点2:熟练的使用Django和Flask框架进行Web应用后端开发,熟悉MVC(MTV)架构模式,有在项目中使用django-redis、django-celery、django-rest-framework、flask-sqlalchemy、flask-restful等第三方库的经验,了解过Web.py、Tornado、Twisted等框架。
  如果我是面试官,针对上面的描述会向你提出如下几个问题。
问题1:说一下你对MVC的理解。
这个问题其实还是很友好的,但是如果你就背书式的把网上找到的所谓的参考答案念出来,面试官肯定是不满意的。这种问题一定要说自己的理解和看法,最好结合着项目来讲。我在面试中还有一个神奇的发现就是很多面试者认为MVC就是三层架构,我只能说这个行业里面蹩脚的开发者还真多。
问题2:说一说Django框架中一个请求的生命周期是怎样的。
问题3:说一说Django、Flask、Tornado框架各自的优缺点。
  技能点3:熟悉关系型数据库产品MySQL和Oracle,熟练的使用SQL,对MySQL的优化有一定程度的了解,熟悉非关系型数据库产品MongoDB和Redis,有使用高速缓存服务和消息队列服务优化项目的经验。
问题1:你知道哪些和MySQL优化相关知识?
这个问题可能还是比较能够鉴别开发者的能力和水平,因为MySQL的优化涉及到硬件、软件、架构各个方面的问题,当然还有程序本身的优化。
问题2:在使用Redis实现高速缓存时,有没有遇到过缓存雪崩、缓存穿透等问题?
问题3:比较一下你用过的数据库产品,说一下它们都适合什么样的应用场景。
  技能点4:熟悉常用的机器学习算法和模型,包括:KNN、DecisionTree、LR、Naive Bayes、SVM、PCA、AdaBoost、K-Means等。
问题1:K均值算法的优缺点是什么?如何对算法进行调优?
问题2:欧氏距离和余弦距离的特点和应用场景分别是什么?
问题3:决策树有哪些常用的启发函数?
  技能点5:熟练使用Linux操作系统,熟悉Linux常用服务的安装和配置,熟悉Shell编程。
问题1:说一些你常用的Linux命令。
这个问题貌似非常友好,但是如果你张嘴就说出pwd、ls、cd这些命令,面试基本就结束了,为什么自己想想就明白了,想不明白就给我留言吧。
问题2:如何使用find命令根据文件大小、文件最后修改时间搜索文件,如何删除搜索到的文件。
一个命令加上的常用参数深挖一下,也可以甄别出很多对Linux系统并不熟悉的小白。
问题3:Shell脚本中如何定义函数?函数中如何获取传入的参数?如何调用函数并传入参数?
  技能点6:熟练的使用Git实施项目的版本控制,熟悉项目的开发流程。
问题1:说一下之前的公司项目开发使用的过程模型(开发流程)。
问题2:说一下之前的项目中是如何实施缺陷管理(错误管理)的。
这个问题还可以继续深挖到如何提一个缺陷报告、缺陷分为多少个级别等。
问题3:之前公司在使用git进行版本控制时,用的是哪一种分支管理策略?
我经常惊奇的发现,很多面试者说自己能熟练的使用Git,但是居然不知道Git的分支管理策略。
  技能点7:熟悉Nginx、uWSGI、Gunicorn等服务器的配置和使用,熟Docker、K8S等工具在项目部署中的应用。
  问题1:之前的项目部署一共用了多少台服务器?有没有跳板机?有没有配置VPC?
问题2:说一下WSGI是什么?比较一下uWSGI和Gunicorn。
很多面试者对CGI、WSGI这些完全没有概念,这就是典型的知其然不知其所以然。
问题3:微服务架构有什么优点?项目中是否使用过微服务架构?
  技能点8:熟悉Web前端开发的语言和框架,对HTML、CSS和JavaScript有较好的理解和掌握,熟悉jQuery、Lodash、Bootstrap、AngularJS、Vue.js等前端库和框架。
前端的东西我也不太懂,也没有什么发言权,但是一般面试的时候我也喜欢问下面几个问题。
  问题1:你们公司的前端用过哪些库和框架?
就算你只负责后端开发,但是前端用的技术肯定也应该是清楚的,没吃过猪肉也见过猪跑。
问题2:你们移动端是原生开发还是跨平台开发?
这个问题可以继续追问关于跨平台开发工具的相关问题,道理跟第一个问题一样。
问题3:你们公司前端跟后端如何对接工作?例如遇到数据格式化之类的问题时,到底是前端来处理还是后端来处理。
  看到这里,相信你已经比较深刻的体会到了写简历是个技术活,一不小心就给自己挖一个在面试的过程中无法填补的大坑。那么如何提前把这个坑填好了,两个办法:

  1. 认真负责的制作简历,不要把无法把控的内容强加到自己的简历上。
  2. 对于已经做好了简历,给它做一版标注稿,把可能遇到的问题提前标注好,并借此思考这些问题应该如何解决,这也算是对之前学习工作的经历做一个总结和沉淀。

  当然,刚才只说了“专业技能”的部分,至于”工作经历“和”项目经验“的部分也会有类似的问题。行成于思毁于随,凡事预则立不预则废,制作一份有竞争力的优质简历的关键就在于此。面试当然不仅仅是简历,简历只是一个开始,找工作需要的是全面展示自己的综合实力。但是,我们相信好的开始是成功的一半,首先做好自己的简历,才能迎来美好的”金三银四“。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
15天前
|
设计模式 JSON 程序员
豆瓣评分9.4!Python程序员必读的《流畅的Python》,放这里了!
Python 官方教程的开头是这样写的:“Python 是一门既容易上手又强大的编程语言。””这句话本身并无大碍,但需要注意的是,正因为它既好学又好用,所以很多Python程序员只用到了其强大功能的一小部分,只需要几个小时,经验丰富的程序员就能学会用 Python 写出实用的程序。 然而随着这最初高产的几个小时变成数周甚至数月,在那些先入为主的编程语言的影响下,开发者们会慢慢地写出带着“口音”的 Python 代码。即便 Python 是你的初恋,也难逃此命运。因为在学校里,亦或是那些入门书上,教授者往往会有意避免只跟语言本身相关的特性。
|
16天前
|
设计模式 JSON 程序员
豆瓣评分9.4!Python程序员必读的《流畅的Python》,放这里了!
Python 官方教程的开头是这样写的:“Python 是一门既容易上手又强大的编程语言。””这句话本身并无大碍,但需要注意的是,正因为它既好学又好用,所以很多Python程序员只用到了其强大功能的一小部分,只需要几个小时,经验丰富的程序员就能学会用 Python 写出实用的程序。 然而随着这最初高产的几个小时变成数周甚至数月,在那些先入为主的编程语言的影响下,开发者们会慢慢地写出带着“口音”的 Python 代码。即便 Python 是你的初恋,也难逃此命运。因为在学校里,亦或是那些入门书上,教授者往往会有意避免只跟语言本身相关的特性。
|
19天前
|
JavaScript 前端开发 小程序
CoderGuide 程序员前后端面试题库,打造全网最高质量题库
CoderGuide涵盖范围包括且不限于:前端面试题(Vue,React,JS,HTTP,HTML,CSS面试题等),后端面试题(Java,Python,Golang,PHP,Linux,Mysql面试题等),以及算法面试题,大厂面试题,高频面试题,校招面试题等,你想要的,这里都有!
20 2
|
26天前
|
程序员 Python
[oeasy]python0028_女性程序员_Eniac_girls_bug_Grace
回顾上次内容,我们了解到 `.py` 文件中的代码是按顺序一行行被解释执行的,可以使用 `pdb3 hello.py` 来调试程序。此外,我们探讨了“bug”这一术语的由来,它最早是在 1947 年由 Grace Murray Hopper 发现的一只真正的飞蛾所引起的计算机故障,从此“debugging”成了查找并修复程序错误的过程。早期的程序员大多为女性,因为她们通常更加细心且有耐心,这些特质对于检查错综复杂的线路和编程工作至关重要。编程与编织有着相似之处,都需要细致和有条理的操作。最后,我们认识到 bug 的存在是程序员工作的基础,没有 bug 就不需要程序员去修正它们。
32 3
|
25天前
|
存储 JSON 程序员
Python文件操作与数据持久化:强大功能简化存储管理,助力程序员高效实现业务逻辑
【8月更文挑战第6天】数据是现代计算机程序的核心,但其存储与管理常常构成开发挑战。Python凭借其强大的文件操作与数据持久化机制,显著提升了编程效率。Python的文件处理简单直观,通过内置`open`函数即可轻松实现文本或二进制文件的读写。例如,仅需几行代码就能完成文本写入。此外,Python支持多种数据持久化方案,如文本文件、CSV、JSON及数据库操作。利用内置`json`模块,可以便捷地进行JSON数据的序列化与反序列化,实现数据的有效存储与检索。这些特性使得Python成为数据管理和存储的理想选择,让开发者能够更加专注于业务逻辑的实现。
27 0
|
2月前
|
存储 大数据 程序员
逆袭吧,程序员!Python堆与优先队列的使用秘籍,助你轻松解决复杂问题!
【7月更文挑战第9天】Python的堆和优先队列是高效工具,对比列表在删除最小元素时的O(n)复杂度,堆提供O(log n)操作。优先队列利用堆数据结构,按优先级处理元素,而非FIFO。示例中,heapq模odule创建最小堆实现任务优先级执行,显示了其在解决复杂问题时的威力,助力程序员提升效率,实现编程挑战的逆袭。
32 2
|
2月前
|
程序员 Python
程序员必看!Python闭包与装饰器的高级应用,让你的代码更优雅、更强大
【7月更文挑战第7天】Python中的闭包和装饰器是高级特性,用于增强代码功能。闭包是内部函数记住外部作用域的变量,常用于动态函数和函数工厂。示例展示了`make_multiplier_of`返回记住n值的`multiplier`闭包。装饰器则是接收函数并返回新函数的函数,用于不修改原函数代码就添加功能。`my_decorator`装饰器通过`@`语法应用到`say_hello`函数上,展示了在调用前后添加额外行为的能力。这两种技术能提升代码的优雅性和效率。
30 3
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。
【7月更文挑战第5天】了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。数据预处理涉及缺失值(dropna(), fillna())和异常值处理。使用describe()进行统计分析,通过Matplotlib和Seaborn绘图。回归和分类分析用到Scikit-learn,如LinearRegression和RandomForestClassifier。
56 3
|
2月前
|
监控 程序员 持续交付
`pylint`是一个高度可配置的Python代码分析工具,它可以帮助程序员查找代码中的错误、样式问题、可能的bug以及不符合编码标准的部分。
`pylint`是一个高度可配置的Python代码分析工具,它可以帮助程序员查找代码中的错误、样式问题、可能的bug以及不符合编码标准的部分。
下一篇
云函数