python面试题——框架和其他(132题)
Posted xiugeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python面试题——框架和其他(132题)相关的知识,希望对你有一定的参考价值。
1、django、flask、tornado框架的比较?
Django:简单的说Django是一个大而全的Web框架,内置了很多组件,ORM、admin、Form、 ModelForm、中间件、信号和缓存等。 基于wsgi协议部署的,使用wsgiref模块实现此协议; Flask:微型的小而精的Web框架,可扩展性强,内置的组件很少,需要引入第三方组件实现功能业务,如果开发简单的项目,使用Flask比较快速和方便。
如果开发大型项目,需要引入大量的第三方组件,这时Flask会越 来越像Django框架。
基于wsgi协议部署,使用werkzeug模块实现此协议,模板系统由 Jinja2提供。
Tornado:是一个轻量级的Web框架,可扩展性强,用于快速开发简单程序,用于强大的异步非阻塞和内置WebSocket功能。
2、什么是wsgi?
中文名:web服务器网关接口 实现该协议的模块: -wsgiref -werkzurg <br> -uwsgi PythonWeb服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是Python应用程序或框架和Web服务器之间的一种接口,是一种协议,
实现该协议的模块有uwsgi、wsgiref和werkzeug,这些模块本质上就是socket服务端,
用于接收用户请求并将请求进行初次封装,然后将请求交给web框架 (Flask、Django)
3、django请求的生命周期?
请求来了先到uwsgi,把请求做一部分分装给django框架,然后经过所有的中间件,路由,视图,视图处理再返回给中间件,中间件在返回给uwsgi,在返回给用户。
wsgi, 他就是socket服务端,用于接收用户请求并将请求进行初次封装,然后将请求交给web框架 (Flask、Django) 中间件,帮助我们对请求进行校验或在请求对象中添加其他相关数据,例如:csrf、request.session 路由匹配,根据浏览器发送的不同url去匹配不同的视图函数 视图函数,在视图函数中进行业务逻辑的处理,可能涉及到:orm、templates => 渲染 中间件,对响应的数据进行处理。 wsgi,将响应的内容发送给浏览器(用户)。
4、列举django的内置组件?
5、列举django中间件的5个方法?以及django中间件的应用场景?
6、简述什么是FBV和CBV?
FBV(function base views) 就是在视图里使用函数处理请求。 CBV(classbase views) 就是在视图里使用类处理请求。 Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承、封装、多态)。所以Django在后来加入了Class-Based-View。可以让我们用类写View。这样做的优点主要下面两种: (1)提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承) (2)可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性
7、django的request对象是在什么时候创建的?
8、如何给CBV的程序添加装饰器?
9、列举django orm 中所有的方法(QuerySet对象的所有方法)
10、only和defer的区别?
11、select_related和prefetch_related的区别?
12、filter和exclude的区别?
13、列举django orm中三种能写sql语句的方法。
14、django orm 中如何设置读写分离?
15、F和Q的作用?
16、values和values_list的区别?
17、如何使用django orm批量创建数据?
18、django的Form和ModeForm的作用?
19、django的Form组件中,如果字段中包含choices参数,请使用两种方式实现数据源实时更新。
20、django的Model中的ForeignKey字段中的on_delete参数有什么作用?
21、django中csrf的实现机制?
22、django如何实现websocket?
23、基于django使用ajax发送post请求时,都可以使用哪种方法携带csrf token?
24、django中如何实现orm表中添加数据时创建一条日志记录。
25、django缓存如何设置?
26、django的缓存能使用redis吗?如果可以的话,如何配置?
27、django路由系统中name的作用?
28、django的模板中filter和simple_tag的区别?
29、django-debug-toolbar的作用?
30、django中如何实现单元测试?
31、解释orm中 db first 和 code first的含义?
32、django中如何根据数据库表生成model中的类?
33、使用orm和原生sql的优缺点?
34、简述MVC和MTV
35、django的contenttype组件的作用?
36、谈谈你对restfull 规范的认识?
37、接口的幂等性是什么意思?
38、什么是RPC?
39、Http和Https的区别?
1、首先Https是Http的安全版,即HTTP下加入SSL层就是Https; 2、默认端口号不同,Http是80端口,Https是443端口; 3、Http是超文本传输协议,信息是明文传输,可以自定义证书,在服务端创建一对证书,在客户 端必须携带证书; 4、采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书. 该证书只有用于对应的server 的时候,客户才信任此主机.
40、为什么要使用django rest framework框架?
41、django rest framework框架中都有那些组件?
42、django rest framework框架中的视图都可以继承哪些类?
43、简述 django rest framework框架的认证流程。
44、django rest framework如何实现的用户访问频率控制?
45、Flask框架的优势?
46、Flask框架依赖组件?
47、Flask蓝图的作用?
48、列举使用过的Flask第三方组件?
49、简述Flask上下文管理流程?
50、Flask中的g的作用?
51、Flask中上下文管理主要涉及到了那些相关的类?并描述类主要作用?
52、为什么要Flask把Local对象中的的值stack 维护成一个列表?
53、Flask中多app应用是怎么完成?
54、在Flask中实现WebSocket需要什么组件?
55、wtforms组件的作用?
56、Flask框架默认session处理机制?
57、解释Flask框架中的Local对象和threading.local对象的区别?
58、Flask中 blinker 是什么?
59、SQLAlchemy中的 session和scoped_session 的区别?
60、SQLAlchemy如何执行原生SQL?
61、ORM的实现原理?
62、DBUtils模块的作用?
63、以下SQLAlchemy的字段是否正确?如果不正确请更正:
fromdatetime importdatetime ?fromsqlalchemy.ext.declarative importdeclarative_base ?fromsqlalchemy importColumn, Integer, String, DateTime ?? Base = declarative_base()?? classUserInfo(Base):? __tablename__ =‘userinfo‘? id=Column(Integer, primary_key=True, autoincrement=True)? name =Column(String(64), unique=True)? ctime =Column(DateTime, default=datetime.now())
64、SQLAchemy中如何为表设置引擎和字符编码?
65、SQLAchemy中如何设置联合唯一索引?
66、简述Tornado框架的特点。
67、简述Tornado框架中Future对象的作用?
68、Tornado框架中如何编写WebSocket程序?
69、Tornado中静态文件是如何处理的??如: <link href="{{static_url("commons.css")}}" rel="stylesheet" />
70、Tornado操作mysql使用的模块?
71、Tornado操作redis使用的模块?
72、简述Tornado框架的适用场景?
73、git常见命令作用:
74、简述以下git中stash命令作用以及相关其他命令。
75、git 中 merge 和 rebase命令 的区别。
76、公司如何基于git做的协同开发?
77、如何基于git实现代码review?
78、git如何实现v1.0 、v2.0 等版本的管理?
79、什么是gitlab?
80、github和gitlab的区别?
81、如何为github上牛逼的开源项目贡献代码?
82、git中 .gitignore文件的作用?
83、什么是敏捷开发?
84、简述 jenkins 工具的作用?
85、公司如何实现代码发布?
86、简述 RabbitMQ、Kafka、ZeroMQ的区别?
87、RabbitMQ如何在消费者获取任务后未处理完前就挂掉时,保证数据不丢失?
88、RabbitMQ如何对消息做持久化?
89、RabbitMQ如何控制消息被消费的顺序?
90、以下RabbitMQ的exchange type分别代表什么意思?如:fanout、direct、topic。
91、简述 celery 是什么以及应用场景?
92、简述celery运行机制。
93、celery如何实现定时任务?
94、简述 celery多任务结构目录?
95、celery中装饰器 @app.task 和 @shared_task的区别?
96、简述 requests模块的作用及基本使用?
97、简述 beautifulsoup模块的作用及基本使用?
98、简述 seleninu模块的作用及基本使用?
99、scrapy框架中各组件的工作流程?
100、在scrapy框架中如何设置代理(两种方法)?
101、scrapy框架中如何实现大文件的下载?
102、scrapy中如何实现限速?
103、scrapy中如何实现暂定爬虫?
104、scrapy中如何进行自定制命令?
105、scrapy中如何实现的记录爬虫的深度?
106、scrapy中的pipelines工作原理?
107、scrapy的pipelines如何丢弃一个item对象?
108、简述scrapy中爬虫中间件和下载中间件的作用?
109、scrapy-redis组件的作用?
110、scrapy-redis组件中如何实现的任务的去重?
111、scrapy-redis的调度器如何实现任务的深度优先和广度优先?
112、简述 vitualenv 及应用场景?
113、简述 pipreqs 及应用场景?
114、在Python中使用过什么代码检查工具?
115、简述 saltstack、ansible、fabric、puppet工具的作用?
116、B Tree和B+ Tree的区别?
117、请列举常见排序并通过代码实现任意三种。
118、请列举常见查找并通过代码实现任意三种。
119、请列举你熟悉的设计模式?
120、有没有刷过leetcode?
121、列举熟悉的的Linux命令。
122、公司线上服务器是什么系统?
123、解释 PV、UV 的含义?
124、解释 QPS的含义?
125、uwsgi和wsgi的区别?
126、supervisor的作用?
127、什么是反向代理?
128、简述SSH的整个过程。
129、有问题都去那些找解决方案?
130、是否有关注什么技术类的公众号?
131、最近在研究什么新技术?
132、是否了解过领域驱动模型?
以上是关于python面试题——框架和其他(132题)的主要内容,如果未能解决你的问题,请参考以下文章