• Python web 面试题(一)


    1、列举django的内置组件?

    url 、view、model、template、中间件

    2、列举django中间件的5个方法?以及django中间件的应用场景?

    • process_request(self,request)
    • process_view(self, request, callback, callback_args, callback_kwargs)
    • process_exception(self, request, exception)
    • process_response(self, request, response)

    3、django请求的生命周期?

    前端请求—>nginx—>uwsgi.—>中间件—>url路由—->view试图—>orm—->拿到数据返回给view—->试图将数据渲染到模版中拿到字符串—->中间件—>uwsgi—->nginx—->前端渲染

    4、django的request对象是在什么时候创建的?

    当请求一个页面时,Django会建立一个包含请求元数据的 HttpRequest 对象。 当Django 加载对应的视图时,HttpRequest 对象将作为视图函数的第一个参数。每个视图会返回一个HttpResponse 对象。

    5、only和defer的区别?

    • defer : 映射中排除某列数据
    • only : 仅取某个列中的数据

    6、select_related和prefetch_related的区别?

    • select_related  通过多表join关联查询,一次性获得所有数据,通过降低数据库查询次数来提升性能,但关联表不能太多,因为join操作本来就比较消耗性能
    • prefetch_related() 的解决方法是,分别查询每个表,然后用Python处理他们之间的关系!  都是为了减少SQL查询的数量

    7、values和values_list的区别?

    • values方法可以获取number字段的字典列表。
    • values_list可以获取number的元组列表。
    • values_list方法加个参数flat=True可以获取number的值列表。

    8、django中csrf的实现机制?

    Django预防CSRF攻击的方法是在用户提交的表单中加入一个csrftoken的隐含值,这个值和服务器中保存的csrftoken的值相同,这样做的原理如下:

    1、在用户访问django的可信站点时,django反馈给用户的表单中有一个隐含字段csrftoken,这个值是在服务器端随机生成的,每一次提交表单都会生成不同的值

    2、当用户提交django的表单时,服务器校验这个表单的csrftoken是否和自己保存的一致,来判断用户的合法性

    3、当用户被csrf攻击从其他站点发送精心编制的攻击请求时,由于其他站点不可能知道隐藏的csrftoken字段的信息这样在服务器端就会校验失败,攻击被成功防御

    具体配置如下:

    template中添加{%csrf_token%}标签

    9、django的模板中filter和simple_tag的区别?

    simple_tag 
      -参数任意,但是不能作为if条件判断的条件 
    filter 
      -参数最多只能有两个,但是可以作为if条件判断的条件。

    10、django路由系统中name的作用?

    name 可以用于在 templates, models, views ……中得到对应的网址,相当于“给网址取了个小名”,只要这个名字不变,网址变了也能通过名字获取到。

    11、简述MVC和MTV

    MVC: 模型 视图 控制器 
    MTV: 模型 模板 视图

    12、谈谈你对restfull 规范的认识?

    restful其实就是一套编写接口的协议,协议规定如何编写以及如何设置返回值、状态码等信息。 

    最显著的特点: 
    restful: 给用户一个url,根据method不同在后端做不同的处理,比如:post 创建数据、get获取数据、put和patch修改数据、delete删除数据。 
    no rest: 给调用者很多url,每个url代表一个功能,比如:add_user/delte_user/edit_user/

    当然,还有协议其他的,比如: 

    • 版本,来控制让程序有多个版本共存的情况,版本可以放在 url、请求头(accept/自定义)、GET参数
    • 状态码,200/300/400/500
    • url中尽量使用名词,restful也可以称为“面向资源编程”
    • api标示: 
      api.YueNet.com 
      www.YueNet.com/api/

    13、接口的幂等性是什么意思?

    一个接口通过首先进行1次访问,然后对该接口进行N次相同访问的时候,对访问对象不造成影响,那么就认为接口具有幂等性。 
    比如: 
    * GET, 第一次获取数据、第二次也是获取结果,幂等。 
    * POST, 第一次新增数据,第二次也会再次新增,非幂等。 
    * PUT, 第一次更新数据,第二次不会再次更新,幂等。 
    * PATCH,第一次更新数据,第二次可能再次更新,非幂等。 
    * DELTE,第一次删除数据,第二次不会再次删除,幂等。

    14、什么是RPC?

    RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

    15、Http和Https的区别?

    超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

    为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密

    16、为什么要使用django rest framework框架?

    1.客户端-服务端分离 
    优点:提高用户界面的便携性,通过简化服务器提高可伸缩性…. 
    2.无状态(Stateless):从客户端的每个请求要包含服务器所需要的所有信息 
    优点:提高可见性(可以单独考虑每个请求),提高了可靠性(更容易从局部故障中修复),提高可扩展性(降低了服务器资源使用) 
    3.缓存(Cachable):服务器返回信息必须被标记是否可以缓存,如果缓存,客户端可能会重用之前的信息发送请求 
    优点:减少交互次数,减少交互的平均延迟 
    4.统一接口 
    优点:提高交互的可见性,鼓励单独改善组件 
    5.支持按需代码(Code-On-Demand 可选) 
    优点:提高可扩展性

    17、简述 django rest framework框架的认证流程。

    如何编写?写类并实现authticate

    方法中可以定义三种返回值: (user,auth),认证成功 None , 匿名用户 异常 ,认证失败

    流程: dispatch   再去request中进行认证处理

    18、django rest framework如何实现的用户访问频率控制?

    a. 基于用户IP限制访问频率

    b. 基于用户IP显示访问频率(利于Django缓存) 

    c. view中限制请求频率

    d. 匿名时用IP限制+登录时用Token限制

    19、简述什么是FBV和CBV?

    django中请求处理方式有2种:FBV 和 CBV 
    FBV(function base views) 就是在视图里使用函数处理请求。 
    CBV(class base views)就是在视图里使用类处理请求 类需要继承view

    20、什么是wsgi?

    WSGI(Web Server Gateway Interface,Web 服务器网关接口)则是Python语言中1所定义的Web服务器和Web应用程序之间或框架之间的通用接口标准。

    WSGI就是一座桥梁,桥梁的一端称为服务端或网关端,另一端称为应用端或者框架端,WSGI的作用就是在协议之间进行转化。WSGI将Web组件分成了三类:Web 服务器(WSGI Server)、Web中间件(WSGI Middleware)与Web应用程序(WSGI Application)。

    Web Server接收HTTP请求,封装一系列环境变量,按照WSGI接口标准调用注册的WSGI Application,最后将响应返回给客户端。

    21、列举django orm 中所有的方法(QuerySet对象的所有方法)

    返回Query Set对象的方法有: 
    * all() 
    * filter() 
    * exclude() 
    * order_by() 
    * reverse() 
    * dictinct()

    特殊的QuerySet
    * values() 返回一个可迭代的字典序列 
    * values_list() 返回一个可迭代的元祖序列

    返回具体对象的: 
    * get() 
    * first() 
    * last()

    返回布尔值的方法有: 
    * existe()

    返回数学的方法有: 
    * count( )

    ----------------休止符---------------

    web基础太弱,需要尽快突击强化,视频加代码,fighting。

  • 相关阅读:
    线段树、最短路径、最小生成树、并查集、二分图匹配、最近公共祖先--C++模板
    数据结构中各种树
    你必须知道的基本位运算技巧(状压DP、搜索优化都会用到)
    memset为int型数组初始化问题
    Dev-C++添加代码格式化(format source code)工具Artistic Style
    让vs IIS Express支持本地静态Json文件
    什么是「供给侧改革」? 原标题:中央提的“供给侧改革”是啥意思?有谁能解说下吗?
    PowerDesigner用法和技巧
    php 调用 web Server(短信接口示例)
    sae相关配置
  • 原文地址:https://www.cnblogs.com/pythonbetter/p/11968040.html
Copyright © 2020-2023  润新知