Python程序员面试技巧

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

  好程序员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. 对于已经做好了简历,给它做一版标注稿,把可能遇到的问题提前标注好,并借此思考这些问题应该如何解决,这也算是对之前学习工作的经历做一个总结和沉淀。

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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
存储 缓存 程序员
Python程序员Debug利器,和Print说再见
Python程序员Debug利器,和Print说再见
25 2
|
3月前
|
存储 算法 程序员
【Leetcode 程序员面试金典 01.01】判定字符是否唯一 —— 位运算|哈希表
可以使用哈希表或位运算来解决此问题:由题可知s[i]仅包含小写字母,int[26]即能表示字符的出现次数;
|
3月前
|
算法 程序员 索引
【Leetcode 程序员面试金典 02.08】 —— 环路检测 |双指针
我们可以使用双指针解决本题,由数学推导可知:a 的距离为(环长度的倍数 - b),即 tmp 指针从头节点走到环开头节点等于 slow 指针走到环开头节点的距离
|
3月前
|
Java 程序员
【Leetcode 程序员面试金典 05.01】插入 —— 位运算
位运算问题,只需要把 N 的 i 到 j 位都置 0 后再和 M 左移 i 位的结果进行按位或即可
|
1天前
|
数据安全/隐私保护 Python
Python文件与目录操作:面试中的高频考点
【4月更文挑战第15天】本文介绍了Python文件和目录操作的面试重点,包括文件的读写、目录遍历及权限管理。强调了文件关闭、异常处理、特殊文件判断以及权限位和权限字符串的理解。提供了代码示例,如读写文件、遍历目录和更改文件权限,帮助读者在面试中表现出色。掌握这些技能将对编程求职之路大有裨益。
16 0
|
1天前
|
JSON 网络协议 API
Python网络编程面试题精讲
【4月更文挑战第15天】本文介绍了Python网络编程的面试重点,包括基础Socket编程、HTTP协议与requests库、异步编程与asyncio库。通过实例解析常见面试题,强调了非阻塞套接字、异常处理、HTTP状态码检查以及异步任务管理等关键点。提供代码示例帮助读者巩固概念,助力面试准备。
10 0
|
2天前
|
调度 Python
Python多线程、多进程与协程面试题解析
【4月更文挑战第14天】Python并发编程涉及多线程、多进程和协程。面试中,对这些概念的理解和应用是评估候选人的重要标准。本文介绍了它们的基础知识、常见问题和应对策略。多线程在同一进程中并发执行,多进程通过进程间通信实现并发,协程则使用`asyncio`进行轻量级线程控制。面试常遇到的问题包括并发并行混淆、GIL影响多线程性能、进程间通信不当和协程异步IO理解不清。要掌握并发模型,需明确其适用场景,理解GIL、进程间通信和协程调度机制。
18 0
|
2天前
|
API Python
Python模块化编程:面试题深度解析
【4月更文挑战第14天】了解Python模块化编程对于构建大型项目至关重要,它涉及代码组织、复用和维护。本文深入探讨了模块、包、导入机制、命名空间和作用域等基础概念,并列举了面试中常见的模块导入混乱、不适当星号导入等问题,强调了避免循环依赖、合理使用`__init__.py`以及理解模块作用域的重要性。掌握这些知识将有助于在面试中自信应对模块化编程的相关挑战。
17 0
|
2天前
|
UED Python
掌握Python异常处理:面试中的关键考点
【4月更文挑战第14天】本文探讨了Python异常处理在面试中的重要性,涵盖核心概念、常见问题和易错点。异常处理涉及异常、捕获、异常链、自定义异常、finally子句和raise语句。面试中应注意避免过于宽泛的异常捕获、忽视异常链、在finally中误用return、自定义异常设计不实用以及异常处理与业务逻辑混杂等问题。通过理解并解决这些问题,可提升代码健壮性和面试表现。
17 0
|
7天前
|
数据采集 机器学习/深度学习 数据可视化
数据科学面试准备:解决Python数据分析常见问答和挑战
【4月更文挑战第12天】本文介绍了Python数据分析面试中常见的问题和挑战,涉及Pandas、NumPy、Matplotlib等库的基础知识,以及数据预处理、探索性分析、可视化、回归分析和分类分析的方法。例如,使用Pandas处理缺失值和异常值,利用Matplotlib和Seaborn进行数据可视化,通过Scikit-learn进行回归和分类模型的构建。

热门文章

最新文章