1808B 第二周笔试题
- 选择题(8题 1~7单选, 8~10多选)(40分)
1. Django框架的设计模式是( B )
A. MVC B. MVT
C. MVVM D. MVP
2.Django在项目中用来配置项目信息文件是( A )
A. setting.py B. urls.py
C. init.py D. wsgi.py
3.选择id为myId的网页元素正确的是(C )
A. ('myId')
C. ('.myId')
- 下列关于json模块的方法,描述正确的是( A )
A、json.dumps 是将python数据类型,转换为json字符串
B、json.dumps 是将json字符串转换为Python数据类型
C、json.load是直接将json字符串转换为Python数据类型
D、json.loads是直接将python数据类型,转换为json字符串
5.Django创建项目使用的命令是( C )
A、python3 manage.py makemigrations
B、python3 manage.py migrate
C、django-admin startproject
D、python3 manage.py startproject
6.下列关于csrf说法不正确的是( C)
A. csrf存在的目的是为了防止跨域攻击
B. 在settings.py的MIDDLEWARE中激活 'django.middleware.csrf.CsrfViewMiddleware'中间件, 表示在全局使用csrf认证
C. @csrf_protect 装饰器,表示取消csrf验证
D. @csrf_exempt装饰器,表示取消csrf验证
- mysql中为表中的字段添加索引的目的是( A )
A、提高查询的检索效率
B、归类
C、创建唯一索引
D、创建主键
8.Django rest framework 用户认证,说法正确的是( ABCD )(多选)
A、Django rest framework 可以通过自定义认证类实现认证功能,并且需要设置authentication_classes
B、无论是自定义的认证类还是 rest framework 自带的认证类都继承自BaseAuthentication实现
C、BaseAuthentication 中有两个方法 authenticate 和authenticate_header, 其中 authenticate 方法必须实现
D、如果用户需要自定义认证方法则继承 BaseAuthentication 重写 authenticate 方法实现认证逻辑即可
9. 关于RESTful请求方式描述正确的是( ABCD )(多选)
A、GET(SELECT):GET从服务器取出资源(一项或多项)
B、POST(CREATE):POST在服务器新建一个资源
C、PUT(UPDATE):PUT在服务器更新资源(客户端提供改变后的完整资源)
D、DELETE(DELETE):DELETE从服务器删除资源
10. 关于属于mysql的约束类型的是( ACD )(多选)
A、PRIMARY B、TRUNCATE
C、DEFAULT D、UNIQUE
二、判断题 (10分)
DRF实现接口的方式有CBV和FBV两种,其中FBV是基于反射实现的 ( × )
HTTP/HTTPS属于应用层协议,HTTPS比HTTP多了SSL安全套接字层, HTTPS会对数据进行加密,保证数据传输的安全性 ( √)
HTTP是一个无状态的请求 ( √ )
Python中类不支持多继承。 (× )
DRF中APIView类通过dispatch方法,将不同的请求映射到不同的方法中 (√ )
三、简答题 (50分)
1. 简述Http中的状态保持?
http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态;客户端与服务器端的一次通信,就是一次会话;实现状态保持的方式:在客户端或服务器端存储与会话有关的数据;存储方式包括cookie、session,会话一般指session对象;使用cookie,所有数据存储在客户端,注意不要存储敏感信息;推荐使用sesison方式,所有数据存储在服务器端,在客户端cookie中存储session_id;状态保持的目的是在一段时间内跟踪请求者的状态,可以实现跨页面访问当前请求者的数据;注意:不同的请求者之间不会共享这个数据,与请求者一一对应
2、请列举一些常见的请求状态码?
余请求才能完成整个处理过程。
200开头:表示服务器成功接收请求并已完成整个处理过程。
200(OK 请求成功)。
300开头:为完成请求,客户需进一步细化请求。例如:请求的资源已经移动一个新地址、 常用
301: 永久重定向
302: 临时重定向(所请求的页面已经临时转移至新的url)
400开头:客户端的请求有错误.
400:错误请求,服务器无法解析请求
401:未授权,没有进行身份验证
403:服务器拒绝访问
404:服务器无法找到被请求的网页
405:请求方式不被允许
408:请求超时
500开头:服务器端出现错误
500:服务器内部错误
501:服务器不具备完成请求的功能
503:服务器不可用
3. 列举django中间件的5个方法?
1.process_request : 请求进来时,权限认证
2.process_view : 路由匹配之后,能够得到视图函数
3.process_exception : 异常时执行
4.process_template_responseprocess : 模板渲染时执行
5.process_response : 请求有响应时执行
- restful 常见的请求方式有哪些?分别在什么情况下使用?
GET :从服务器取出资源(一项或多项)
POST :在服务器新建一个资源
PUT :在服务器更新资源(客户端提供改变后的完整资源)
PATCH :在服务器更新资源(客户端提供改变的属性)
DELETE :从服务器删除资源
5、根据以下场景,使用合适的Vue指令?
(1)遍历列表:v-for
(2)input数据的双向绑定:v-model
(3)通过控制 display 样式来控制显示/隐藏:v-show
(4)绑定事件:v-bind
(5)输出富文本:
6、谈谈你对面向对象的理解?
在我理解,面向对象是向现实世界模型的自然延伸,这是一种“万物皆对象”的编程思想。在现实生活中的任何物体都可以归为一类事物,而每一个个体都是一类事物的实例。面向对象的编程是以对象为中心,以消息为驱动,所以程序=对象+消息。
面向对象有三大特性,封装、继承和多态。
封装就是将一类事物的属性和行为抽象成一个类,使其属性私有化,行为公开化,提高了数据的隐秘性的同时,使代码模块化。这样做使得代码的复用性更高。
继承则是进一步将一类事物共有的属性和行为抽象成一个父类,而每一个子类是一个特殊的父类--有父类的行为和属性,也有自己特有的行为和属性。这样做扩展了已存在的代码块,进一步提高了代码的复用性。
如果说封装和继承是为了使代码重用,那么多态则是为了实现接口重用。多态的一大作用就是为了解耦--为了解除父子类继承的耦合度。如果说继承中父子类的关系式IS-A的关系,那么接口和实现类之之间的关系式HAS-A。简单来说,多态就是允许父类引用(或接口)指向子类(或实现类)对象。很多的设计模式都是基于面向对象的多态性设计的。