• 面试题1


    1. 为什么做前后端分离?
    前后职责分离

    前端倾向于呈现,着重处理用户体验相关的问题;后端则倾向于业务逻辑、数据处理和持久化等。

    在设计清晰的情况下,后端只需要以数据为中心对业务处理算法负责,并按约定为前端提供 API 接口;而前端使用这些接口对用户体验负责。

    前后技术分离

    前端可以不用了解后端技术,也不关心后端具体用什么技术来实现,只需要会 HTML/CSS/Java 就能入手。

    而后端只需要关心后端开发技术,除了省去学习前端技术的麻烦,连 Web 框架的学习研究都只需要关注 Web API 就好。

    而不用去关注基于页面视图的 MVC 技术(并不是说不需要 MVC,Web API 的接口部分的数据结构呈现也是 View),不用考虑特别复杂的数据组织和呈现。

    用户体验和业务处理解耦

    前端可以根据用户不同时期的体验需求迅速改版,后端对此毫无压力。同理,后端进行的业务逻辑升级,数据持久方案变更,只要不影响到接口,前端可以毫不知情。

    当然如果需求变更引起接口变化的时候,前后端又需要坐在一起同步信息了。

    可以分别归约两端的设计

    后端只提供 API 服务,不考虑页面呈现的问题。实现 SOA 架构的 API 可以服务于各种前端,而不仅仅是 Web 前端,可以做到一套服务,各端使用。

    同时对于前端来说,不依赖后端技术的前端部分可以独立部署,也可以应用于 Hybrid 架构,嵌入各种“壳”(比如 Electron、Codorva 等),迅速实现多终端。
    2. rest framework作用?

    3. 简述Http协议?

    4. 列举rest framework组件?

    5. restful 规范?

    6. content-type请起头的作用?
    用于告知服务端,客户端发送的请求体数据格式。
    Content-Typeapplication/x-www-form-urlencoded:
    请求体格式:phone=8615131255555&password=asdfasdfasdf&oneMonth=1
    Content-Type: application/json;charset=UTF-8
    请求体格式:{"BaseRequest":{"Uin":981579400,"Sid":"h9kV51dfCuwJy9SX","Skey":"@crypt_2ccf8ab9_edc3756c6a6adef29051ab1ae52c6cb6","DeviceID":"e037891563571357"},"Msg":{"Type":1,"Content":"test","FromUserName":"@3fd34d9c325790b34948028adc36a31f","ToUserName":"@6ba3ce1e58cfb403c9adaf8053e82e79","LocalID":"15336944955110060","ClientMsgId":"15336944955110060"},"Scene":0}

    扩展:user-agent请求头?

    7. django content-type组件的作用?
    解决一张表和多张表做FK关联的问题。

    8. 哪里使用过面向对象的封装?
    class BaseRequest(object):
    def __init__(self):
    self.code = ..
    self.data =
    self.error = ...
    ...
    def dict()

    obj = BaseRequest()
    obj.__dict__

    9. 视图要写
    - try
    - 注释
    - 建明之一

    10. ORM

    a. FK正向和反向操作
    class A:
    name = ..;.

    clas B:
    a = FK(A,related_name='xxxx')
    title = ...
    class C:
    a = FK(A)
    age = ...

    b. O2O的正向和反向操作
    class A:
    name = ..;.
    class B:
    a = O2O(A)
    age = ...

    c. 补充:models.User.objects.filter(xx__isnull=True)

    class 部门用户表:
    title = ..;.

    clas 用户表:
    p = FK(A,related_name='xxxx')
    name = ...


    modes.用户表.objects.filter('name','p__title')
    modes.部门用户表.objects.filter('title','用户表__name',表__isnull=False)

    注意:
    1. left join和inner join的区别?
    2. left join是表在前和在后请求不一样?

  • 相关阅读:
    iOS图片压缩上传
    Spring MVC获得HttpServletRequest
    BZOJ 1002 FJOI2007 轮状病毒 递推+高精度
    破解2559
    Redis源代码分析(十七)--- multi事务操作
    Android setTag()与getTag(),与set多个setTag()
    【NOI2015】【程序自己主动分析】【并查集+离散化】
    BZOJ1433 [ZJOI2009]假期的宿舍
    将參数从PHP传递到JavaScript中
    NUTCH2.3 hadoop2.7.1 hbase1.0.1.1 solr5.2.1部署(二)
  • 原文地址:https://www.cnblogs.com/qunxiadexiaoxiangjiao/p/9444248.html
Copyright © 2020-2023  润新知