可能出现的面试题
1、什么是orm框架
orm:对象关系映射
类 --- 表
对象 --- 一条记录
当有了对应关系之后,不需要再编写sql语句,直接操作,类,对象
2、sql vs ormsql
查询速度快,开发效率低
orm开发效率高,查询速度较低
3、概念理解
-db first 根据数据库的表生成类
-code first 根据类生成数据库的表
4、orm是怎么实现的
根据对象和类通过字符串格式化转化成sql语句
DDD中:unit of work
5.类私有化字段的访问
__leiming__.__field__派生类不能访问父类私有字段通过self,等无法调到,除非强制使用——__下划线+类名去调用。
6.DButils
DBUtils是Python的一个用于实现数据库连接池的模块。
模式:
- 每个线程创建一个连接,关闭(默认不关闭),线程终止时,才关闭连接。
- 创建共享连接池
7.同源策略
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
同源策略,它是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,即检查是否同源,只有和百度同源的脚本才会被执行。如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。
8.JSONP
jsonp是json用来跨域的一个东西。原理是通过script标签的跨域特性来绕过同源策略。将JSON数据填充进回调函数,这就是JSONP的JSON+Padding的含义。 一般情况下,我们希望这个script标签能够动态的调用,而不是像上面因为固定在html里面所以没等页面显示就执行了,很不灵活。我们可以通过javascript动态的创建script标签,这样我们就可以灵活调用远程服务了。
9.restframework-CBV的好处
CBV(class base views) 就是在视图里使用类处理请求。
Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承、封装、多态)。所以Django在后来加入了Class-Based-View。可以让我们用类写View。这样做的优点主要下面两种:
- 提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)
- 可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性
10.解释一下dispatch.as_view()里头那as_view()是咋回事
Django的url是将一个请求分配给可调用的函数的,而不是一个class。针对这个问题,class-based view提供了一个as_view()
静态方法(也就是类方法),调用这个方法,会创建一个类的实例,然后通过实例调用dispatch()
方法,dispatch()
方法会根据request的method的不同调用相应的(http_method_names)中的方法来处理request(如get(),
post()
等)。到这里,这些方法和function-based view差不多了,要接收request,得到一个response返回。如果方法没有定义,会抛出HttpResponseNotAllowed异常。
11.http协议支持的请求方式
get请求: 查看数据
post请求: 添加数据
delete请求: 删除数据
put请求: 更新指定数据
patch请求: 更新全部数据 等
12.请您谈谈http协议
http协议本质 是指从客户端到服务器端的请求消息。包括:消息首行中,对资源的请求方法、资源的标识符及使用的协议