前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python笔试题Web部分答案

Python笔试题Web部分答案

作者头像
用户7685359
发布2020-08-24 16:10:49
1K0
发布2020-08-24 16:10:49
举报
文章被收录于专栏:FluentStudyFluentStudy

有什么问题或资源分享欢迎大家后台留言或添加微信

今天分享下笔试题 Python Web 部分题目答案。

1. 什么是 wsgi?

我们都知道,Web 应用的本质,也就是浏览器请求到响应的整个过程就是:首先浏览器发送一个 HTTP 请求,服务器收到请求后会根据请求作出响应,最后就是浏览器收到响应后解析响应并展示给用户。这些过程中涉及到了 TCP 连接、HTTP原始请求与响应格式等规范,而我们在编写 Python 代码时,不想去接触这些底层的东西,所以需要一个统一的接口用于专心编写业务逻辑,而这个接口就是 WSGI(Web Server Gateway Interface,Web服务器网关接口)。

这个 WSGI 接口的定义很简单,它就是简单的实现一个函数,这个函数第一个参数是一个 dict 对象,它包含了所有的 HTTP 请求信息,第二参数是一个发送 HTTP 响应的函数。

详细可参考:

https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832689740b04430a98f614b6da89da2157ea3efe2000

2. 什么是 MVC ,它是设计模式吗?

M,即 Model,它是业务模型,用于处理应用程序数据逻辑的部分,即用于与数据库打交道;V,即 View,它是视图,用于数据展示,也就是我们熟悉的页面展示;C,即 Controller,它是控制器,用于与用户交互,用于处理用户请求和响应请求等,它从视图中读取数据,控制用户输入,并向模型发送数据。MVC 是一种软件设计典范,用于将业务逻辑、数据与界面显示分离的方式来组织代码。网上对于 MVC 是不是设计模式存在较大的争议,个人认为它应该不是一种设计模式(如果是,也不会这样出题目了......),百度百科中对这一部分有解释,详情见下图:

3. wsgi 的服务器有哪些?

Python 自带的 wsgi 服务器是 wsgiref。还有常用的一些,比如 uwsgi、waitress、gunicorn等。

4. Ngnix 和 Gunicorn 分别有什么作用?

Ngnix 是一个高性能的 HTTP 和 反向代理 的服务器,它具有稳定性、丰富的功能集、示例配置文件和低系统资源消耗的特点。作为反向代理服务器,用户发起请求,用于接收请求的是 Ngnix,由 Ngnix 决定把请求分发给具体哪个服务器来进行处理。

Gunicorn 是一个 Python WSGI Http Server,能够与各种 wsgi web 框架进行协作,简单说就是用于接受用户请求并给出响应。

通常我们会在 gunicorn 前套一层 nginx,原因在于如果我们直接让 gunicorn 来提供服务,http 请求因为一些网络等未知原因可以会比较缓慢,而 gunicorn 只能等待请求发起完成后才能开始处理,处理完成后,等客户端完成接受请求后再继续下一个。而如果加了 ngnix,ngnix 缓存客户端发起的请求,直到收完整个请求,再转发给 gunicorn 来处理,这样可以有效提高 gunicorn 的处理能力。简单来说就是利用各自所长。

5、项目上你们是怎么部署项目的?

这个主要从 wsgi 、uwsgi、nginx、gunicorn等来回答。主要依项目来回答。

6、通过什么工具管理代码和扩展库?

管理代码用的是 git,而管理扩展库用到的 pip 里带的,pip freeze > requirements.txt。如果需要安装则使用 pip install -r requirements.txt。

7、举例你最熟悉和最喜欢的 Python Web 框架,并说出理由

可以举例 Django 或者 Flask。Django 框架里定义了很多现成的东西,可以直接拿来用。而 Flask 相比 Django,更加轻量级,它没有像 Django 一样内置很多功能,想要扩展可以使用扩展库,这样就会更加灵活。同时 Flask 中使用到了 Python 一个很重要的特性,那就是装饰器,在路由匹配的时候就用到了装饰器。

8、你用过哪些 Python 爬虫的框架库,说说它有什么好处?

Scrapy 是用纯 Python 实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。它是一个框架库,框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。同时,Scrapy 使用了 Twisted ['twistid'] 异步网络框架来处理网络通讯,可以加快我们的下载速度,不用去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。

如果大家有什么面试题或者笔试题,欢迎发给我,如果有投稿,也可以发给我~

愿关注我们的人都能找到

属于自己的皮球

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FluentStudy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档