2018 python面试题
在开始看面试题时,我觉得我们很有必要去了解一下市场需要什么样的python开发人员:
1.python爬虫工程师(scrapy,xpath,正则,mongdb,redis,http 协议,html)
2.python web(django,flask,mysql,nuittest,http,html,css)
3.python 自动化运维(脚本)
4.python 数据分析(pandas,numpy,tf,算法,建模,分析)
确定自己的职业方向后,可以看看我幸幸苦苦采集来的面试题吧
1.mvc的思想:
MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:
Model(模型)表示应用程序核心(比如数据库记录列表)。
View(视图)显示数据(数据库记录)。
Controller(控制器)处理输入(写入数据库记录)。
MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。
通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
2.迭代器:
其实也就是一个带状态的对象,它可以把你调用next()方法时,返回容器的下一个值。
也就是next(容器)
容器可以是list,hase,touple。
3.list去重的方法:
使用set()
L=[1,2,2,2,4,5,6]
list(set(L))
4.有两个list,每个list内有4个数字,如何使它们的差最小?
先把俩个list合并成一个list,再对这个list进行排序,这时在拿相邻的相减,把差累加便可
5.python的map()和reduce()的使用(要会,应为大数据也有mapreduce)
map()函数接受两个参数,一个是函数,一个是序列,map将传入的函数作用到序列的
每个元素zhong,并把结果返回新的list。
reduce()函数接受两个参数,把结果继续和序列的下一个元素做累加计算。
6.状态码 200/403/404/504
200:成功
403:资源不可用
404:服务器不响应
504:网关超时
7.python单元测试:
使用python的nuittest模块:
unitTest模块是一个自带的单元测试框架,结构如下:
testCase 是一个测试用例
testSlite 多个测试用例结合在一起
testLoader用来加载testCase
testRuner 用来测试
testResult 用来存放结果
8.is,==,浅拷贝,深拷贝
is比较的是存储地址。
==对比的是值。
浅拷贝只拷贝对象本身
深拷贝还拷贝对象的父级
9.python进程,线程,协程
问到这些,你不管啥,就先说python不支持真正的多线程,应为GIL的存在并可不以真正的提高效率。建议使用
协程(yield)
10.python如何进行内存管理的
内存机制:python中有一个内存池机制,用于办理小块内存请求和释放。
计算机制:当对象被创建时为1,应用加1,超出引用作用域或被重新赋值减1,当为0时,会被回收。
代机制:记不清了,请自行查找
11.redis的了解,高并发案例
k-v存储结构,有string,map,list,set,sortset。
抢购:2W强100个商品,使用redis队列,把先进来的的人存到队列中,当队列大于100后就将这些用户的页面转到结束页面