-
https://www.csdn.net/gather_28/NtzaQgysOTE4LWJsb2cO0O0O.html
-
什么是响应式布局?
响应式布局就是做一个网站同时能兼容多个终端,由一个网站转变成多个网站,为我们大大节省了资源。
响应式界面有四个层次:
1、同一页面在不同大小和比例上看起来都应该是舒适的;
2、同一页面在不同分辨率上看起来都应该是合理的;
4、同一页面在不同操作方式(如鼠标和触屏)下,体验应该是统一的;
5、同一页面在不同类型的设备(手机、平板、电脑)上,交互方式应该是符合习惯的。
在知道了响应式布局是什么后,我们再来简单说一说响应式布局的用法 -
请通过jQuery发送ajax请求。
-
JavaScript与this相关的面试题(4分)
name = '老男孩';
info = {
name:'alex',
age:123,
func:function(){
console.log(this.name); alex
}
}
info.func()
在函数的执行环境中使用this时,如果函数显式地作为一个非window对象的属性,那么函数中的this就代表这个对象name = '老男孩';
info = {
name:'alex',
age:123,
func:function(){
console.log(this.name); alex
function f1(){
console.log(this.name); 老男孩
}
f1()
}
}
info.func()
在函数执行环境中使用this时,如果函数没有明显的作为非window对象的属性,而只是定义了函数,不管这个函数是不是定义在另一个函数中,这个函数中的this仍然表示你window对象name = '老男孩';
info = {
name:'alex',
age:123,
func:function(){
console.log(this.name); alex
(function(){
console.log(this.name); 老男孩
})()
}
}
info.func()name = '老男孩';
info = {
name:'alex',
age:123,
func:function(){
console.log(this.name);
var xxx = this;
(function(){
console.log(xxx.name);
})()
}
}
info.func()
-
什么是跨域?如何解决?
1.JSONP:
只支持GET请求,不支持POST请求。
2.代理:
例如www.123.com/index.html需要调用www.456.com/server.php,可以写一个接口www.123.com/server.php,由这个接口在后端去调用www.456.com/server.php并拿到返回值,然后再返回给index.html,这就是一个代理的模式。相当于绕过了浏览器端,自然就不存在跨域问题。
3、PHP端修改header(XHR2方式)
在php接口脚本中加入以下两句即可:
header('Access-Control-Allow-Origin:*'); //允许所有来源访问
header('Access-Control-Allow-Method:POST,GET'); //允许访问的方式 -
简述你对Http协议的理解?
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。基于TCP的应用层协议,它不关心数据传输的细节,HTTP(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,只有遵循统一的 HTTP 请求格式,服务器才能正确解析不同客户端发的请求,同样地,服务器遵循统一的响应格式,客户端才得以正确解析不同网站发过来的响应。
-
简述你对Https协议的理解?
安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
-
列举常见的http请求头及作用?
Cache-Control 控制缓存的行为
Connection 逐跳首部
Date 创建报文的日期时间
Pragma 报文指令
Trailer 报文末端的首部一览
Trasfer-Encoding 指定报文主题的传输编码方式
Upgrade 升级为其他协议
Via 代理服务器的相关信息
Warning 错误通知 -
列举常见的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 回显服务器收到的请求,主要用于测试或诊断。一般禁用,防止被恶意攻击或盗取信息。 -
列举常见的http响应状态码。
100:这个状态码是告诉客户端应该继续发送请求,这个临时响应是用来通知客户端的,部分的请求服务器已经接受,但是客户端应继续发送求请求的剩余部分,如果请求已经完成,就忽略这个响应,而且服务器会在请求完成后向客户发送一个最终的结果
200:这个是最常见的http状态码,表示服务器已经成功接受请求,并将返回客户端所请求的最终结果
202:表示服务器已经接受了请求,但是还没有处理,而且这个请求最终会不会处理还不确定
204:服务器成功处理了请求,但没有返回任何实体内容 ,可能会返回新的头部元信息
301:客户端请求的网页已经永久移动到新的位置,当链接发生变化时,返回301代码告诉客户端链接的变化,客户端保存新的链接,并向新的链接发出请求,已返回请求结果
404:请求失败,客户端请求的资源没有找到或者是不存在
500:服务器遇到未知的错误,导致无法完成客户端当前的请求。
503:服务器由于临时的服务器过载或者是维护,无法解决当前的请求,以上http状态码是服务器经常返回的状态代码,用户只能通过浏览器的状态了解服务器是否正常运行,一般除了错误的状态码,都不会看到服务器的状态码的. -
http中
connections:keep-alive
的请求头的作用?keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。
-
django请求生命周期?
Django的请求生命周期是指:当用户在浏览器上输入url到用户看到网页的这个时间段内,Django后台所发生的事情。
-
什么是wsgi?
wsgi:web服务网关接口
-
什么是MVC ?什么是MTV?
著名的MVC模式:方便解藕
所谓的MVC就是把web应用分为三层
1.模型层: model 负责业务对象和数据库的对象(ORM)的映射
2.视图层 views 负责与用户的交互(书写逻辑)
3.控制器 Controller 完成用户对模型层和视图层调用,来完成用户的请求
Django的MTV模式本质上和MVC没有什么大的差别,也是为了实现解藕性,只是定义上有些不同
1.模型层: model 负责业务对象与数据库的对象(ORM)的映射
2.模板层 Template 负责如何把页面展示给用户(html)
3.视图层: View 负责业务逻辑,并在适当的时候调用Model和Template
-
django中间件作用以及应用场景?
中间件是介于request与response处理之间的一道处理过程,用于在全局范围内改变Django的输入和输出。
简单的来说中间件是帮助我们在视图函数执行之前和执行之后都可以做一些额外的操作
例如:
1.Django项目中默认启用了csrf保护,每次请求时通过CSRF中间件检查请求中是否有正确token值
2.当用户在页面上发送请求时,通过自定义的认证中间件,判断用户是否已经登陆,未登陆就去登陆。
3.当有用户请求过来时,判断用户是否在白名单或者在黑名单里 -
django中FBV和CBV有什么区别?
FBV 基于函数的视图
CBV 基于类的视图 -
django orm中如何批量创建数据?
-
django 如何执行原生SQL?
1.使用extra:
models.Book.objects.filter(publisher__name='人民出版社').extra(where=['price>50'])
models.Book.objects.filter(publisher__name='人民出版社', price__gt=50)
models.Book.objects.extra(select={'count': 'select count(*) from hello_Book'})
2.使用raw:
Book.objects.raw('select * from hello_Book') # 返回模型实例
3.执行自定义sql语言:
from django.db import connection
cursor=connection.cursor()
# 插入操作
cursor.execute("insert into hello_author(name) values('钱钟书')")
# 更新操作
cursor.execute("update hello_author set name='abc' where name='bcd'")
# 删除操作
cursor.execute("delete from hello_author where name='abc'")
# 查询操作
cursor.execute("select * from hello_author")
raw=cursor.fetchone() # 返回结果行游标直读向前,读取一条
cursor.fetchall() # 读取所有 -
django的orm如何查询id不等于5的数据。
-
cookie和session的区别?
1.存储位置不同
cookie的数据信息存放在客户端浏览器上。
session的数据信息存放在服务器上。
2.储存容量不同
单个cookie保存的数据<=4KB,一个站点最多保存20个Cookie。
对于session来说并没有上限,但出于对服务器端的性能考虑,session内不要存放过多的东西,并且设置session删除机制。
3.存储方式不同
cookie中只能保管ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据。
cookie中只能保管ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据。
4.隐私策略不同
cookie对客户端是可见的,别有用心的人可以分析存放在本地的cookie并进行cookie欺骗,所以它是不安全的。
session存储在服务器上,对客户端是透明对,不存在敏感信息泄漏的风险。
5.有效期上不同
开发可以通过设置cookie的属性,达到使cookie长期有效的效果。
session依赖于名为JSESSIONID的cookie,而cookie JSESSIONID的过期时间默认为-1,只需关闭窗口该session就会失效,因而session不能达到长期有效的效果。
6.服务器压力不同
cookie保管在客户端,不占用服务器资源。对于并发用户十分多的网站,cookie是很好的选择。
session是保管在服务器端的,每个用户都会产生一个session。假如并发访问的用户十分多,会产生十分多的session,耗费大量的内存。
7.浏览器支持不同
假如客户端浏览器不支持cookie:
cookie是需要客户端浏览器支持的,假如客户端禁用了cookie,或者不支持cookie,则会话跟踪会失效。关于WAP上的应用,常规的cookie就派不上用场了。
运用session需要使用URL地址重写的方式。一切用到session程序的URL都要进行URL地址重写,否则session会话跟踪还会失效。
假如客户端支持cookie:
cookie既能够设为本浏览器窗口以及子窗口内有效,也能够设为一切窗口内有效。
session只能在本窗口以及子窗口内有效。
8.跨域支持上不同
cookie支持跨域名访问。
session不支持跨域名访问。 -