第三部分 Django&Flask

  1. 请简要概述 MVC 和 MTV
    MVC 是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组
    织代码;M 模型,数据存取;V 视图,数据展示; C 控制器,业务逻辑处理。
    MTV 本质上 MTV 与 MVC 模式没有什么区别,也是各组件之间为了保持松
    耦合关系,只是定义上有些不同;M 模型,数据存取; T 模板,数据展示; V
    视图,业务逻辑处理。
  2. Django 请求的生命周期
    客户端发起请求 > nginx > uwsgi > 中间件 > url 路由 > view 视图 >
    ORM 获取数据 > 模板渲染 > 服务器返回响应 > 中间件 > uwsgi > nginx >
    客户端显示
  3. 简述 FBV,CBV
    FBV: 用户发送 url 请求,Django 会依次遍历路由映射表中的所有记录,一
    旦路由映射表其中的一条匹配成功,就执行视图函数中对应的函数名;
    CBV: 用户发起 url 请求,Django 会通过路由映射表匹配成功后会自动去找
    dispatch 方法,接着 Django 会通过 dispatch 反射的方式找到类中对应的方法并
    执行类中的方法,执行完毕之后,会把客户端想要的数据返回给 dispatch 方法,
    由 dispatch 方法把数据返回给客户端。
  4. Django 中间件的作用和应用场景
    作用: 中间件是介于 request 与 response 处理之间的一道处理过程,能在全
    局上改变 django 的输入与输出。 应用场景: 用户认证系统、CSRF 保护、IP 限
    制、URL 访问限制、缓存…
  5. Django 重定向是如何实现的?301 和 302 有什么区别
    重定向: HttpResponseRedirect、redirect、reverse; 301 是永久重定
    向,搜索引擎在抓取新的内容的同时也将旧的网址替换为了重定向之后的网址;
    而 302 是临时重定向,搜索引擎会抓取新的内容而保留旧的地址;
  6. Django 中 csrf 实现机制
    在客户端页面上添加 csrf_token,服务器端进行验证,服务器端验证的工作通
    过'django.middleware.csrf.CsrfViewMiddleware'这个中间层来完成,若验证失
    败则 403 错误。在 django 当中防御 csrf 攻击的方式有两种:在表单当中附加
    csrf_token、通过 request 请求中添加 X-CSRFToken 请求头。
  7. 什么是 wsgi,uwsgi,uWSGI
    wsgi: 用在 python web 框架编写的应用程序与后端服务器之间的规范;
    uwsgi: uWSGI 服务器实现的独有的协议; uWSGI: 一个 Web 服务器,它实现
    了 WSGI 协议、uwsgi、http 等协议,用于接收前端服务器转发的动态请求并处
    理后发给 web 应用程序;
  8. Django 本身提供了 runserver,为什么不能用来部署?
    Django 本身提供的 runserver 是属于开发服务器,这个开发服务器是没有经
    过安全测试的,另外 runserver 起来的其实是 HTTPServer 就是 Python 自带的
    simple_server,而标准 Python 只能是是单线程,无法并发。对于一个成熟的站
    点提供服务,需要 Web 服务器 [静态数据] 和 App 服务器[动态数据],还需要
    多线程并发处理能力。
  9. 什么是会话技术,cookie,session 的区别, token 呢
    会话技术,其实也就是为了状态的保持,延长请求的生命周期,因为 http 协
    议是无状态的,每次请求都是一次新的请求,不会保持之前的请求状态。Cookie
    所有数据存储在客户端,支持数据过期,但是不能跨浏览器,不能跨域名,数据不
    安全,session 所有数据存储在服务端,相对数据安全,支持过期设置,但是要依
    赖于 cookie。
    10.debug-toolbar 的作用
    是一组可配置的面板集合,用来显示 Django Web 应用当前请求/响应的各种
    调试信息,进行性能调优,与系统调试
    11.orm 中 db first 和 code first 的含义
    db first 是基于已存在的数据库,之后再创建实体类,数据库对象与实体类的
    匹配关系等,也就是从一个数据库开始,然后生成实体框架和相应代码。
    code first,根据需要,为你一个领域的对象创建类集合,而不是首先来设计
    数据库,然后来根据数据库设计你的类,Code-First APis 将会基于你的类和配
    置,为你创建数据库。
    12.简述 ORM,ORM 的优缺点
    ORM 是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动
    持久化到关系数据库中
    优点:
    1 不需要再动手写 SQL 语句
    2 对不同数据库管理系统的连接以及操作进行了抽象,程序员完全可以不
    考虑使用的是什么数据库以及数据库的版本
    缺点:
    1 ORM 的缺点是会牺牲程序的执行效率和会固定思维模式
    2 对于复杂的 SQL 有心无力
    3 无法完全屏蔽数据库底层细节
    4 关系-对象映射的实现是以性能为代价,方便了开发,牺牲了效率。
    13.谈谈你对前后端的理解.
    14.谈谈你对 RESTful 规范的认识
    REST 是所有 Web 应用都应该遵守的架构设计指导原则。面向资源是 REST 最
    明显的特征。将对资源的操作与 HTTP 方法在对应
    15.Django REST Framework 框架中有哪些组件
    视图、序列化、解析器、认证与权限、分页、throttle(访问频率)组件
    16.Django 和 Flask 的区别
    Flask
    1 Flask 自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结
    合自己最喜欢用的轮子,也能结合最流行最强大的 Python 库
    2 入门简单,即便没有多少 web 开发经验,也能很快做出网站
    3 非常适用于小型网站
    4 非常适用于开发 web 服务的 API, 开发大型网站无压力,但代码架构需
    要自己设计,开发成本取决于开发者的能力和经验
    5 各方面性能均等于或优于 Django
    Django:
    1 Django 的自带 ORM 非常优秀,综合评价略高于 SQLAlchemy
    2 自带的模板引擎简单好用
    3 ORM 也使 Django 与关系型数据库耦合度过高
    4 非常适合企业级网站的开发:快速、靠谱、稳定
    5 Django 成熟、稳定、完善,但相比于 Flask
    6 Django 的整体生态相对封闭
    7 Python web 框架的先驱,用户多,第三方库最丰富 Flask 自由、灵
    活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮
    子,也能结合最流行最强大的 Python 库
    17.列举 Http 请求中常见的请求方式以及应用场景
    GET: 向特定资源发出请求(获取数据)
    POST: 创建资资源(提交数据)
    DELETE: 删除资源
    PUT: 向指定资源位置上上传其最新内容
    18.列举一下 Http 中常见状态码
    200: 请求已成功。
    302:临时重定向,HTTP1.0 的状态码
    400: Bad Request, 语法错误,服务器无法理解
    403: Forbidden 权限不够
    404:网络资源不存
    405, Method Not Allowed 请求方式不被允许
    500, Internal Server Error 服务器出错
    502, Bad Gateway, 作为网关或代理工作的服务器尝试执行请求时,从上
    游服务器接受到无效的响应
    19.列举 Http 请求中常见的请求头
    refer,location,user-agent,accept,accept-encoding,cookie,
    cache-control
    20.Flask 框架的核心依赖组件
    jinja2,Werkzeug 两个核心组件,Jinja2 是一个现代的,设计师友好的
    Python 模板语言,模仿 Django 的模板。使用可选的沙盒模板执行环境,它
    具有快速,广泛使用和安全性,Werkzeug 不是一个框架,它是一个带有实
    用程序的库,可以创建自己的框架或应用程序,因此非常灵活。
    21.Flask 的默认 session 处理机制
    Flask 的默认 session 利用了 Werkzeug 的 SecureCookie,把信息做序
    列化(pickle)后编码(base64),放到 cookie 里了。过期时间是通过 cookie 的
    过期时间实现的。为了防止 cookie 内容被篡改,session 会自动打上一个叫
    session 的 hash 串,这个串是经过 session 内容、SECRET_KEY 计算出来
    的,看得出,这种设计虽然不能保证 session 里的内容不泄露,但至少防止了
    不被篡改。
    22.flask 中的钩子函数有哪些?可以做什么
    app.before_request:共享 session 的鉴权函数、请求黑白名单过滤、根
    据 endpoint 进行请求 j 等。蓝图场景包含 api 的请求必填字段校验,是否
    json 请求校验,请求的 token 校验等。
    app.errorhandler:可以用 redis 进行错误请求计数,超过一定量则进行告
    警。可以重定向到一个定制的错误代码页面等
    app.context_processor:将一些常量按字典的格式返回,则可以在 jinja2
    的模版中引用 场景:在 html 中,如果{'yao','jidan'}直接用{{jidan}}就会在页
    面显示 yao
    app.after_request 场景:一般用于格式化响应结果,包括响应请求头,响
    应的格式等。
    23.flask 中的四大内置对象,各有什么作用
    request 请求对象,封装了客户端发送的 HTTP 请求的内容
    session 用户会话,用来记住请求
    g 变量 :充当者中间媒介的作用,我们可以通过它传递一些数据
    current_app 代表当前的 flask 程序实例,使用时需要 flask 的程序上下文激活
    24.什么是负载均衡?常见负载均衡算法
    1、轮询法:将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的
    每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
    2、随机法:通过系统的随机算法,根据后端服务器的列表大小值来随机选取
    其中的一台服务器进行访问。由概率统计理论可以得知,随着客户端调用服务
    端的次数增多
    3、源地址散列:根据获取客户端的 IP 地址,通过哈希函数计算得到的一个
    数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要
    访问服务器的序号
    4、加权轮询法:给配置高、负载低的机器配置更高的权重,让其处理更多的
    请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载
    5 加权随机法:与加权轮询法一样,加权随机法也根据后端机器的配置,系统
    的负载分配不同的权重
    6、最小连接数法:根据后端服务器当前的连接情况,动态地选取其中当前积
    压连接数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用
    效率,将负责合理地分流到每一台服务器
    25.Celery 是什么?常用应用场景
    Celery 是一个 基于 python 开发的分布式异步消息任务队列,通过它可以轻
    松的实现任务的异步处理 使用场景:异步调用:那些用户不关心的但是又存在在
    我们 API 里面的操作 我们就可以用异步调用的方式来优化(发送邮件 或者上传
    头像)定时任务:定期去统计日志,数据备份,或者其他的统计任务
    26.什么是 RPC,常用场景有哪些?
    RPC:远程过程调用 让构建分布式计算(应用)更容易,在提供强大的远程
    调用能力时不损失本地调用的语义简洁性 场景:不允许较大的延迟的应用 ERP 系
    统回仓 2 在垂直应用中将核心和公共业务抽取出来,作为独立的服务,实现前后
    台逻辑分离
    思考下面问题:
  10. Django, Flask 和 Tornado 的区别
  11. 你的后端工作职责有哪些, 如何编写项目 API 接口
  12. 在公司如何与前端工程师联调
  13. 后端如何反爬
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,825评论 4 377
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,887评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,425评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,801评论 0 224
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,252评论 3 299
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,089评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,216评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 31,005评论 0 215
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,747评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,883评论 2 255
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,354评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,694评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,406评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,222评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,242评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,017评论 2 281

推荐阅读更多精彩内容