### 第一部分
1.写出常用的bootstrap的样式。
'''
栅格系统
表单
表格
图片
按钮
'''
2.什么是响应式布局?
'''
一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本。这个概念是为解决移动
互联网浏览而诞生的。
'''
3. 请通过jQuery发送ajax请求。
'''
$.ajax({
url: "/login",
data: {name: 'ccc'},
type: "POST",
dataType: "json",
success: function(data) {
// data = jQuery.parseJSON(data); //dataType指明了返回数据为json类型,故不需要再反序列化
...
}
});
'''
4.JavaScript与this相关
'''
name = '老男孩'; info = { name: 'alex', age: 123, func: function(){ console.log(this.name); } } info.func()
name = '老男孩'; info = { name: 'alex', age: 123, func: function(){ console.log(this.name); function f1() { console.log(this.name); } f1() } } info.func()
name = '老男孩'; info = { name: 'alex', age: 123, func: function(){ console.log(this.name); (function(){ console.log(this.name); })() } } info.func()
```javascript
name = '老男孩';
info = {
name: 'alex',
age: 123,
func: function(){
console.log(this.name);
var
xxx = this;
(function(){
console.log(xxx.name);
})()
}
}
info.func()
'''
5.什么是跨域?如何解决?
'''
跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览
器对javascript施加的安全限制。
用nginx作为代理服务器和用户交互,这样用户就只需要在80端口上进行交互就可以了,
这样就避免了跨域问题,因为我们都是在80端口上进行交互的;
'''
6.简述你对Http协议的理解?
'''
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、
协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。
'''
7.简述你对Https协议的理解?
'''
HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),
是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程
的安全性。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的
详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在
HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安
全敏感的通讯,例如交易支付等方面。
'''
8.列举常见的http请求头及作用?
'''
1、Accept,浏览器端能够处理的内容类型。
Accept: text/html 代表浏览器可以接受服务器回发的类型为 text/html 也就是我们常说的html文档。
如果服务器无法返回text/html类型的数据,服务器应该返回一个406错误(non acceptable)。
通配符 * 代表任意类型,例如 Accept: / 代表浏览器可以处理所有类型,(一般浏览器发给服务器都是发这个)。
2、Accept-Encoding, 浏览器能够处理的的压缩编码。通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate),(注意:这不是指字符编码)。
例如: Accept-Encoding: zh-CN,zh;q=0.8
3、Accept-Language, 浏览器当前设置的语言。
语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等等;例如: Accept-Language: en-us
4、Accept_Charset::浏览器能够显示的字符集
5、Connection:浏览器与服务器的连接类型
例如:Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,
如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。
例如: Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭。
当客户端再次发送Request,需要重新建立TCP连接。
6、Host,发送请求的页面的域名。(发送请求时,该报头域是必需的),请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。
例如: 我们在浏览器中输入:http://www.hzau.edu.cn,浏览器发送的请求消息中,就会包含Host请求报头域,如下:
Host:www.hzau.edu.cn,此处使用缺省端口号80,若指定了端口号,则变成:Host:指定端口号。
7、Referer,发送请求的页面的URI。当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器借此可以获得一些信息用于处理。
比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。
8、User-Agent,浏览器的用户代理字符串。告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本。
我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名称和版本,你所使用的浏览器的名称和版本,这往往让很多人
感到很神奇,实际上,服务器应用程序就是从User-Agent这个请求报头域中获取到这些信息User-Agent请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。
例如: User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; CIBA;
.NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; InfoPath.2; .NET4.0E)
9、Cookie,用来存储一些用户信息以便让服务器辨别用户身份的(大多数需要登录的网站上面会比较常见)。
比如cookie会存储一些用户的用户名和密码,当用户登录后就会在客户端产生一个cookie来存储相关信息,这样浏览器通过读取cookie的信息
去服务器上验证并通过后会判定你是合法用户,从而允许查看相应网页。当然cookie里面的数据不仅仅是上述范围,还有很多信息可以存储是cookie里面,比如sessionid等。
8、Cache-Control,指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据,还是重新发请求到服务器获取数据。
我们网页的缓存控制是由HTTP头中的“Cache-control”来实现的,常见值有private、no-cache、max-age、must-revalidate等,默认为private。
这几种值的作用是根据重新查看某一页面时不同的方式来区分的:
(1)、打开新窗口值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。而如果指定了max-age值(单位为秒),
那么在此值内的时间里就不会重新访问服务器,例如:Cache-control: max-age=5(表示当访问此网页后的5秒内再次访问不会去服务器)
(2)、在地址栏回车值为private或must-revalidate则只有第一次访问时会访问服务器,以后就不再访问。值为no-cache,那么每次都会访问。
值为max-age,则在过期之前不会重复访问。
(3)、按后退按扭值为private、must-revalidate、max-age,则不会重访问,值为no-cache,则每次都重复访问
(4)、按刷新按扭无论为何值,都会重复访问
10、If-Modified-Since, 把浏览器端缓存页面的最后修改时间发送到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行对比。
如果时间一致,那么返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容。客户端接到之后,会丢弃旧文件,
把新文件缓存起来,并显示在浏览器中。例如:Mon, 17 Aug 2015 12:03:33 GMT
11、If-None-Match, If-None-Match和ETag一起工作,工作原理是在HTTP Response中添加ETag信息。 当用户再次请求该资源时,将在HTTP Request
中加入If-None-Match信息(ETag的值)。如果服务器验证资源的ETag没有改变(该资源没有更新),将返回一个304状态告诉客户端使用本地缓存文件。
否则将返回200状态和新的资源和Etag. 使用这样的机制将提高网站的性能。
'''
9.列举常见的http请求方法及作用?
'''
GET :发送请求来获得服务器上的资源,请求体中不会包含请求数据,请求数据放在协议头中。另外get支持快取、缓存、可保留书签等。幂等
POST:和get一样很常见,向服务器提交资源让服务器处理,比如提交表单、上传文件等,可能导致建立新的资源或者对原有资源的修改。提交的
资源放在请求体中。不支持快取。非幂等
HEAD:本质和get一样,但是响应中没有呈现数据,而是http的头信息,主要用来检查资源或超链接的有效性或是否可以可达、检查网页是否被串
改或更新,获取头信息等,特别适用在有限的速度和带宽下。
PUT:和post类似,html表单不支持,发送资源与服务器,并存储在服务器指定位置,要求客户端事先知道该位置;比如post是在一个集合上
(/province),而put是具体某一个资源上(/province/123)。所以put是安全的,无论请求多少次,都是在123上更改,而post可能
请求几次创建了几次资源。幂等
DELETE:请求服务器删除某资源。和put都具有破坏性,可能被防火墙拦截。如果是https协议,则无需担心。幂等
CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。就是把服务器作为跳板,去访问其他网页然后把数据返回回来,连接成
功后,就可以正常的get、post了。
OPTIONS:获取http服务器支持的http请求方法,允许客户端查看服务器的性能,比如ajax跨域时的预检等。
TRACE:回显服务器收到的请求,主要用于测试或诊断。一般禁用,防止被恶意攻击或盗取信息。
'''
10.列举常见的http响应状态码。
'''
100:这个状态码是告诉客户端应该继续发送请求,这个临时响应是用来通知客户端的,部分的请求服务器已经接受,但是客户端应继续发送求请求
的剩余部分,如果请求已经完成,就忽略这个响应,而且服务器会在请求完成后向客户发送一个最终的结果
200:这个是最常见的http状态码,表示服务器已经成功接受请求,并将返回客户端所请求的最终结果
202:表示服务器已经接受了请求,但是还没有处理,而且这个请求最终会不会处理还不确定
204:服务器成功处理了请求,但没有返回任何实体内容 ,可能会返回新的头部元信息
301:客户端请求的网页已经永久移动到新的位置,当链接发生变化时,返回301代码告诉客户端链接的变化,客户端保存新的链接,并向新的链接
发出请求,已返回请求结果
404:请求失败,客户端请求的资源没有找到或者是不存在
500:服务器遇到未知的错误,导致无法完成客户端当前的请求。
503:服务器由于临时的服务器过载或者是维护,无法解决当前的请求,
'''
11.http中connections:keep - alive
的请求头的作用?
'''
当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,
如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。
'''
12.django请求生命周期?
'''
第一步:浏览器发起请求
第二步:WSGI创建socket服务端,接收请求(Httprequest)
第三步:中间件处理请求
第四步:url路由,根据当前请求的URL找到视图函数
第五步:view视图,进行业务处理(ORM处理数据,从数据库取到数据返回给view视图;view视图将数据渲染到template模板;将数据返回)
第六步:中间件处理响应
第七步:WSGI返回响应(HttpResponse)
第八步:浏览器渲染
'''
13.什么是wsgi?
'''
Web服务器网关接口(WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。
'''
14.什么是MVC ?什么是MTV?
'''
MVC就是把web应用分为模型(M),控制器(C),视图(V)三层
Django的MTV模式本质上与MVC模式没有什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同,Django的MTV分别代表:
Model(模型):负责业务对象与数据库的对象(ORM)
Template(模版):负责如何把页面展示给用户
View(视图):负责业务逻辑,并在适当的时候调用Model和Template
此外,Django还有一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template
'''
15.django中间件作用以及应用场景?
16.django中FBV和CBV有什么区别?
'''
(1)FBV
FBV(function base views) 就是在视图里使用函数处理请求。
FBV方式请求的过程:
用户发送url请求,Django会依次遍历路由映射表中的所有记录,一旦路由映射表其中的一条匹配成功了,就执行视图函数中对应的函数名
(2)CBV
CBV(class base views) 就是在视图里使用类处理请求。
CBV方式请求的过程:
当服务端使用cbv模式的时候,用户发给服务端的请求包含url和method,这两个信息都是字符串类型;
服务端通过路由映射表匹配成功后会自动去找dispatch方法,然后Django会通过dispatch反射的方式找到类中对应的方法并执行;
类中的方法执行完毕之后,会把客户端想要的数据返回给dispatch方法,由dispatch方法把数据返回经客户端。
'''
17.django orm中如何批量创建数据?
18.django如何执行原生SQL?
19.django的orm如何查询id不等于5的数据。
20.cookie和session的区别?
21.django的orm中on_delete的作用?
22.描述crm有哪些功能?
23.crm中什么是公户?什么是私户?为什么要做这个区分?
24.请列举出CRM系统中的表。
25.对数据库的数据做展示时,不同字段类型有不同的展示方法,分别是什么?
26.请详细说说你们公司销售是如何使用CRM的。
27.CRM中有哪些技术点?
28.为什么不用现成的crm而是自己去开发?
29.请简述实现权限控制的流程。
30.列举权限有多少张表?表中都有那些字段?
31.为什么要把权限信息放到session中?权限信息放到session有什么优缺点?
32.权限控制到按钮级别是如何实现的?
33.如何实现把权限粒度控制到数据行?
### 第二部分
1.详细描述是jsonp实现机制?
2.django的orm如何通过数据自动化生成models类?
3.django中如何设置缓存?
4.django中信号的作用?
5.django中如何设置读写分离
来源:https://www.cnblogs.com/caiyongliang/p/12394732.html