面试前赶忙看了5道Python Web面试题,Python面试题No17

本面试题题库,由公号:非本科程序员 整理发布

第1题: Flask中的请求上下文和应用上下文是什么?

  • 在Flask中处理请求时,就会产生一个 “请求上下文” 对象,整个请求的处理过程,都会在这个上下文对象中进行。 这保证了请求的处理过程不被干扰。 包含了和请求处理相关的信息,同时Flask还根据werkzeug.local模块中实现的一种数据结构LocalStack用来存储“请求上下文”对象。
  • “应用上下文” 也是一个上下文对象,可使用with语句构造一个上下文环境,它也实现了push、pop等方法。 “应用上下文” 的构造函数也和 “请求上下文” 相似,都有app、url_adapter等属性。“应用上下文” 存在的一个主要功能就是肯定请求所在的应用。

第2题:django中间件的使用?

django在中间件中预设了6个方法,这6个方法区别在于不一样的阶段执行,对输入或输出进行干预,方法以下:html

#1 初始化: 无需任何参数,服务器响应第一个请求的时候调用一次,用于肯定是否启用当前中间件

def __init__():
    pass

#2.处理请求前:在每一个请求上调用,返回None或者HttpResponse 对象

def process_response(request):
    pass

#3 处理视图前,在每一个请求上调用,返回None 或HttpResopnse对象
def process_view(request.view_func, view_args, view_kwargs):
    pass

#4 处理模板响应前: 在每一个请求上调用,返回实现render 方法的响应对象
def peocess_template_response(request, response):
    pass
#5 处理响应后,多有响应返回浏览器以前被调用,每一个请求上调用,返回HttpResponse对象

def process_response(request, response):
    pass

#6 异常处理:当时图抛出异常时调用,在每一个请求上调用,返回一个HttpResponse对象
def process_exception(request, execption):
    pass
复制代码

第3题: django开发中数据作过什么优化?

  1. 设计表时,尽可能少使用外键,由于外键约束会影响插入和删除性能
  2. 使用缓存,减小对数据库的访问
  3. orm框架下设置表时,能使用varchar肯定字段长度时,就别用text
  4. 能够给搜索频率搞得字段属性,在定义时建立索引
  5. django orm 框架下的Querysets 原本就有缓存的
  6. 若是一个页面须要屡次连接数据库,最好一次性去除全部须要的数据,减小数据库的查询次数
  7. 若页面只须要数据库里面的某一两个字段时,能够用QuerySet.values()
  8. 在模板标签里使用with标签能够缓存Qset查询结果

第4题: 解释一下 Django 和 Tornado 的关系、差异?

Django

Django源自一个在线新闻 Web站点,于 2005 年以开源的形式被释放出来。python

Django 框架的核心组件有:c++

用于建立模型的对象关系映射为最终用户设计的完美管理界面一流的 URL 设计设计者友好的模板语言缓存系统等等程序员

它鼓励快速开发,并遵循MVC设计。web

Django遵照 BSD版权,最新发行版本是Django1.4,于2012年03月23日发布.Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件能够很方便的以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至能够很方便的开发出本身的工具包。这使得Django具备很强的可扩展性。它还强调快速开发和DRY(Do Not RepeatYourself)原则。面试

Tornado

Tornado是 FriendFeed使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本。这个 Web 框架看起来有些像 web.py 或者 Google 的 webapp,不过为了能有效利用非阻塞式服务器环境,这个 Web 框架还包含了一些相关的有用工具和优化。数据库

Tornado 和如今的主流 Web 服务器框架(包括大多数Python 的框架)有着明显的区别:它是非阻塞式服务器,并且速度至关快。得利于其 非阻塞的方式和对epoll的运用,Tornado 每秒能够处理数以千计的链接,这意味着对于实时 Web服务来讲,Tornado 是一个理想的 Web 框架。咱们开发这个 Web 服务器的主要目的就是为了处理 FriendFeed 的实时功能 ——在 FriendFeed 的应用里每个活动用户都会保持着一个服务器链接。(关于如何扩容 服务器,以处理数以千计的客户端的链接的问题。django

第5题:什么是restful API ,谈谈你的理解?

  • REST:Representational State Transfer 的缩写,翻译:“具象状态传输”。通常解释为“表现层状态转换”。
  • REST 是设计风格而不是标准。是指客户端和服务器的交互形式。咱们须要关注的重点是如何设计
  • REST 风格的网络接口。

REST 的特色

  1. 具象的。通常指表现层,要表现的对象就是资源。好比,客户端访问服务器,获取的数据就是资源。好比文字、图片、音视频等。
  2. 表现:资源的表现形式。txt 格式、html 格式、json 格式、jpg 格式等。浏览器经过URL 肯定资源的位置,可是须要在HTTP 请求头中,用Accept 和Content-Type 字段指定,这两个字段是对资源表现的描述。
  3. 状态转换:客户端和服务器交互的过程。在这个过程当中,必定会有数据和状态的转化,这种转化叫作状态转换。其中,GET 表示获取资源,POST 表示新建资源,PUT 表示更新资源,DELETE 表示删除资源。HTTP 协议中最经常使用的就是这四种操做方式。

RESTful 架构

  1. 每一个URL 表明一种资源;
  2. 客户端和服务器之间,传递这种资源的某种表现层;
  3. 客户端经过四个http 动词,对服务器资源进行操做,实现表现层状态转换。

第6题:关注题,最近在公号更新一个神奇的系列入门文章

她专科学历 27岁从零开始学习c,c++,python编程语言 29岁编写百例教程 30岁掌握10种编程语言, 用自学的经历告诉你,学编程就找梦想橡皮擦编程

欢迎关注她的公众号,搜索— 非本科程序员json

相关文章
相关标签/搜索