Python程序员面试应如何准备,面试技巧分享!

今天 , 想跟大家分享Python程序员面试技巧 , 我们的简历上通常会有一个叫做“专业技能”的部分 , 这个部分通常会罗列6到12项左右的内容来展示你对编程语言、开发框架、服务器产品、开发工具等的理解和掌握情况 。 这里的每句话在面试时都可能都会产生一个或多个对应的问题 , 如果不事先做好准备 , 只是凭感觉罗列出若干项内容 , 那么在面试的时候必然是一个填不起的大坑 。 接下来 , 我为大家举例说明这些坑都在什么地方 。
Python程序员面试应如何准备,面试技巧分享!
文章图片
【Python程序员面试应如何准备,面试技巧分享!】下面的内容是不是在你的简历上也有类似的描述呀 , 那么看看我提出的问题 , 你是否能够给出漂亮的答案 。
技能点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框架各自的优缺点 。
Python程序员面试应如何准备,面试技巧分享!
文章图片
技能点3:熟悉关系型数据库产品MySQL和Oracle , 熟练的使用SQL , 对MySQL的优化有一定程度的了解 , 熟悉非关系型数据库产品MongoDB和Redis , 有使用高速缓存服务和消息队列服务优化项目的经验 。
问题1:你知道哪些和MySQL优化相关知识?这个问题可能还是比较能够鉴别开发者的能力和水平 , 因为MySQL的优化涉及到硬件、软件、架构各个方面的问题 , 当然还有程序本身的优化 。 问题2:在使用Redis实现高速缓存时 , 有没有遇到过缓存雪崩、缓存穿透等问题?问题3:比较一下你用过的数据库产品 , 说一下它们都适合什么样的应用场景 。
技能点4:熟悉常用的机器学习算法和模型 , 包括:KNN、DecisionTree、LR、NaiveBayes、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实施项目的版本控制 , 熟悉项目的开发流程 。
Python程序员面试应如何准备,面试技巧分享!
文章图片
问题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.对于已经做好了简历 , 给它做一版标注稿 , 把可能遇到的问题提前标注好 , 并借此思考这些问题应该如何解决 , 这也算是对之前学习工作的经历做一个总结和沉淀 。
当然 , 刚才只说了“专业技能”的部分 , 至于”工作经历“和”项目经验“的部分也会有类似的问题 。 行成于思毁于随 , 凡事预则立不预则废 , 制作一份有竞争力的优质简历的关键就在于此 。 面试当然不仅仅是简历 , 简历只是一个开始 , 找工作需要的是全面展示自己的综合实力 。 但是 , 我们相信好的开始是成功的一半 , 首先做好自己的简历 , 才能迎来美好的”金三银四“ 。


    推荐阅读