zoukankan      html  css  js  c++  java
  • 面试题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是表在前和在后请求不一样?

  • 相关阅读:
    linux 解压tgz 文件指令
    shell 脚本没有执行权限 报错 bash: ./myshell.sh: Permission denied
    linux 启动solr 报错 Your Max Processes Limit is currently 31202. It should be set to 65000 to avoid operational disruption.
    远程查询批量导入数据
    修改 MZTreeView 赋权节点父节点选中子节点自动选中的问题
    关于乱码的问题解决记录
    我的网站优化之路
    对设计及重构的一点反思
    我的五年岁月
    奔三的路上
  • 原文地址:https://www.cnblogs.com/qunxiadexiaoxiangjiao/p/9444248.html
Copyright © 2011-2022 走看看