python常见面试题集

1、MySQL 数据库总结
MySQL 可以建多少个数据库,理论上是没有限制的,每一个数据库可以有上亿的对象,但是一般基于硬件要求、效率问题一般不超过64个,
超过64个会对数据处理速度造成影响,每一张表建议不超过过1亿条数据。
2、Python 话题
1.最受欢迎的Python开源框架   1:Django  2:Twisted 3:Tornado    除了以上三种常用的开源框架外 还有 :
Diesel、Flask、Cubes、Kartograph、Pulsar、Web2py、Falcon、DPark、Buildbot、Zerorpc、Bottle、webpy、Scrapy
3、python常用的web框架   1:Django  2:Tornado  3:Bottle  4:web.py 5:web2py 6:Quixote(豆瓣网就是基于该框架开发的)
4、python几种流行框架的比较
https://zhidao.baidu.com/question/1047367767941211939.html
国内著名网基于Python开发的  豆瓣、知乎、美团、咕咚网、快玩游戏。

5、Python常用的内置模块
multiprocessing (多进程模块) Queue(多线程编程)  os (用于获取环境变量、路径,判断文件等)  functools(包含一些常用的函数)
collection(集合、常用数据结构算法)  re(正则匹配,字符的查询替换等操作)

6、python中re模块的match()和search()函数的区别
re模块中match(pattern,string,[flags]),检查string的开头是否与patter匹配
re模块中search(pattern,string,[flags]),在string搜索pattern的第一个配置值

7、python2和python3的区别
Python2中使用 ASCII 码作为默认编码方式导致string有两种类型str和unicode,Python3只支持unicode的string
Python2中采用相对路径的import  Python3采用的是绝对路径的方式进行import
python3的缩进更加的严格  python3采用的是print函数 exec函数 python2采用的是 print语句和exec语句
python2不相等操作符"<>"被Python3废弃,统一使用"!="   long整数类型被Python3废弃,统一使用int
Python3中这些方法再不再返回list对象:dictionary关联的keys()、values()、items(),zip(),map(),filter(),但是可以通过list强行转换

8.、么是HTTP协议
http:超文本传输协议,使用的是可靠的数据传输协议,在传输过程中不会被损坏或产生混乱,http可以将服务器各种信息快速可靠的传输到桌面上的浏览器上去
9、什么是web客户端
用于接收web服务器传输信息的终端叫web客户端,比如 IE浏览器 火狐Firefox  谷歌chrome
10、什么是URL
URL:统一资源定位符,URL描述了一台特定服务器上某资源的特定位置
URL第一部分 说明了访问资源所使用的协议类型,第二部分表示服务器的inter网址第三部分指定了web服务器上的某个资源

11、web服务请求中常见状态码含义
200 :请求成功,请求的所有数据都在响应主题中
304 客户端发起一个get请求,而资源最近未被修改,则用304说明资源未被修改,带有这个状态码的响应不应该包含实体的主体部分。
305 说明必须通过一个代理来访问资源;代理的位置由location首部给出
403 该请求被服务器拒绝了
404 无法找到所请求的URL
500 服务器遇到了一个阻碍它为请求提供服务的错误
503 服务器此时无法为请求提供服务/

12、HTTP 协议栈
HTTP 应用层协议,它把网关的细节都交给了通用的可靠的因特网传输协议TCP/IP协议
TCP 传输控制协议 无差错的数据传输 按序传输

13、什么是DNS
域名解析服务。将主机名转换为IP地址

在浏览器地址栏输入一个HTTP的URL地址,浏览器怎么通过HTTP显示位于服务器上的一个HTML资源
(1)浏览器首先从URL中解析出服务器的主机名并转换成服务器的IP地址
(2)浏览器将端口号从URL中解析出来,建立一条与web服务器的TCP链接
(3)浏览器向服务器发送一条HTTP请求报文,服务器向浏览器回送一条HTTP响应报文
(4)关闭连接,浏览器显示文档


14、常用的加密算法有对称加密和非对称加密
对称加密:发送方使用密钥将明文加密成密文,接收方则使用相同的密钥将密文还原成明文。常用的对称加密算法有:RSA RC4 DES
非对称加密:发送方使用公钥对数据加密,接收方使用私钥进行解密。常用非对称算法:MD5  HASH


15、Python常用的数据结构和算法模块有:collection  heapq  operator  itertools
collection 用法介绍
https://www.cnblogs.com/George1994/p/7204880.html
示例网址 https://blog.csdn.net/guzhenping/article/details/54987308

16、Python之pandas简单介绍及使用(一)
Pandas 简单介绍  https://www.cnblogs.com/misswangxing/p/7903595.html
pandas该工具是为了解决数据分析任务而创建的,pandas纳入了大量库和一些标准的数据模型,提供了高效的操作大型数据库所需的工具,pandas提供了大量使我们便捷地处理
数据的函数和方法,它使Python成为强大而高效的数据分析环境的重要因素之一,属于python的一个数据分析包。

17、Python如何进行内存管理机制
1.对象的引用计数机制  2.垃圾回收机制  3.内存池机制

18、如何在一个function里面设置一个全局的变量
在function的开始插入一个global声明:

19、python 函数中  *args 和 **kwargs  参数的应用
1.当你不确定函数里要传递多少个参数时可以使用 *args (可以传递任意数量的参数)
2.**kwargs 允许你使用事先没有定义的参数名
20、Python中的作用域
python中当遇到一个变量的话它会按照这样的顺序进行搜索
本地作用域(Local)→当前作用域被嵌入的本地作用域(Enclosing locals)→全局/模块作用域(Global)→内置作用域(Built-in)

21、Python中read,readline,readlines 的作用。
read  读取整个文件  readline 读取下一行,使用生成器的方法  readlines 读取整个文件到一个迭代器以供我们遍历  

22、Django中的请求生命周期
django的请求生命周期是指当用户在浏览器输入url到用户看到网页的这个时间段内。大致发生的过程如下:
1.当用户在浏览器中输入url时,浏览器生成请求头和请求体发给服务端(请求头和请求体中会包含浏览器的动作,这个动作通常为get或者post,体现在url中)
2.url进过django中的wsgi,再经过django的中间件,最后url到路由映射表,在路由中一条一条进行匹配,一旦其中一条匹配成功就执行相对应的视图函数。
3.视图函数根据客户端的请求查询相应的数据,返回给django,然后django把客户端想要的数据作为一个字符串返回给客户端。
4.客户端浏览器收到返回的数据,进过渲染后显示给用户。

23、FBV模式和CBV模式
一个url对应一个视图函数,这个模式叫做FBV(Function Base Views)
FBV请求过程:
用户发送url请求,django会依次遍历路由映射表中的所有记录,一旦路由映射表其中一条匹配成功,就执行视图函数中对应的函数名。
一个url对应一个类,这个模式叫CBV(Class Base Views)
CBV请求过程:
当服务端使用cbv模式的时候,用户发给服务端的请求包含url和method,这两个信息都是字符串类型,服务端通过路由映射表匹配成功后
会自动去找dispatch方法,然后django会通过dispatch反射的方式找到类中对应的方法并执行类中的方法执行完毕之后,会把客户端想要的
数据返回给dispatch方法,由dispatch方法把数据返回给客户端。

24、mongodb Redis mysql
mongodb是一个内存数据库,数据都放在内存里面的,对于数据的操作大部分都在内存中,但mongodb并不是单纯的内存数据库
持久化方式:
mongodb的所有数据实际上是存放在硬盘的,所有要操作的数据通过mmap的方式映射到某个区域内,然后mongodb就在这块区域里进行数据修改。

Redis
Redis是一个内存数据库
Redis中所有数据都放在内存中,持久化使用RDB方式或者aof方式

mysql
无论数据还是索引都存放在硬盘中,到要是用的时候才交换到内存中,能够处理远超内存总量的数据。

当物理内存够用的时候, Redis性能优于mongodb,mongodb优于mysql
当物理内存不够用的时候,Redis和mongodb都会使用虚拟内存
mysql不需要考虑数据量跟内存的关系,不过内存的量和热数据的关系极大地影响性能的表现。(如果当物理内存和虚拟内存都不够用的时候,mysql是最好的选择)

25、mysql常用语句语法
创建表格命令:create table tablename(字段)
增: inser into tablename values(value,values)
删: delete from tablename where <条件>
改: update tablename set 字段=值 (where)
查: select * from tablename where语句

26、MySQL锁机制详解及死锁处理方式
MySQL有三种锁的级别:页级、表级、行级

所谓死锁<DeadLock>: 是指两个或两个以上的进程在执行过程中,
因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.
此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等竺的进程称为死锁进程.
表级锁不会产生死锁.所以解决死锁主要还是真对于最常用的InnoDB.
遇到死锁的处理方式


27、Django中查询queryset时什么情况下使用Q ?
在进行相对复杂的查询时,使用 django.db.models.Q
Django中想验证表单提交是否格式正确要用到Form中哪个函数?
is_valid()

28、Python里面如何拷贝一个对象
1.浅拷贝:
使用copy.copy,它可以进行对象的浅拷贝,它复制了对象,但对于对象中的元素,依然使用引用(换句话修改拷贝对象的元素,则被拷贝对象的元素也会被修改)
2.深拷贝:
使用copy.deepcopy,它可以进行深拷贝,不仅拷贝了对象,同时也拷贝了对象中的元素,获得了全新的对象,与被拷贝对象完全独立,
但这需要牺牲一定的时间和空间。
 
29、Session和Cookie的区别与联系  https://www.cnblogs.com/endlessdream/p/4699273.html
Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。
Cookie分为会话cookie和持久cookie
若不设置过期时间,则表示这个cookie的生命周期为浏览器的会话周期,关闭浏览器窗口,cookie就消失,这种生命周期为浏览器会话期的cookie
被称为会话cookie,会话cookie一般不存在硬盘上而是保存在内存里。
若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效指导超过设定的时间,存储到硬盘的cookie被称为持久cookie
Cookie具有不可跨域性,两个不同浏览器的cookie不通用。
Session是另一种记录客户状态的机制,不同的是cookie保存在客户端浏览武器中,而session保存在服务器上,当客户端浏览器访问服务器的时候,服务器把客户端
的信息以某种形式保存在服务器上,这就是session,当客户端浏览器再次访问浏览器的时候只需要从该session中查找该客户的状态就可以了。

30、Numpy提供N维数组,一种快速高效的内存多维数组,它提供矢量化数学运算。
Scipy库依赖于NumPy,提供便捷和快速的N维向量数组操作。scipy库的建立就是和NumPy数组一起工作,并提供许多用户友好和有效的数值例程。
Pandas包含高级数据结构,以及和让数据分析变得快速、简单,它是建立在Numpy之上的
Matplotlib 是python的一个可视化模块。可以方便的制作线条图,饼图,柱状图以及其它专业图形

猜你喜欢

转载自blog.csdn.net/yangczcsdn/article/details/81326612