Python面试重点(web篇) Posted 2020-11-27 xbxxz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python面试重点(web篇)相关的知识,希望对你有一定的参考价值。
1.写出常用的bootstrap的样式。
row:行 col-- :列(第一个可以为xs[超小]/sm[小型]/md[中型]/lg[大型];第二个 必须为12以内的【列数】) col--offset- :列偏移(第一个同上,第二个 范围为1~11,表示把该列的左外边距(margin-left)增加列) col- -- :列排序(第一个同上,第二个 可以为push[向右]/pull[向左],第三个范围是1~11【列数】) 排版 small:内联子标题 lead:引导主体副本 text- :文本样式(可以为left[左对齐]/center[居中对齐]/right[右对齐]/muted[减弱文本] /primary/success/info/warning/danger /justify[自动换行]/nowrap[不换行] /lowercase[小写]/uppercase[大写]/capitalize[首字母大写] ) list-inline:列表置于同一行 表格 table:基本样式,只有横向分割线 table- :表格样式(*可以为triped[添加条纹]/bordered[添加边框]/hover[启用悬停]/condensed[更加紧凑]) tr/th/td:由active/success/info/warning/danger来改变背景颜色 table-responsive:将任意table放在table-responsive内,实现响应式表格
表单 创建基本表单(垂直表单)的步骤 向父
2.什么是响应式布局?
伊桑·马科特(Ethan Marcotte)在2010年首先提出了响应式网页设计(RWD,Responsive Web Design)这个术语。在他的一篇文章《Responsive Web Design · An A List Apart Article》中他将已有的三种发开技巧(弹性图片,弹性网格布局,媒体与媒体查询) 进行了整合,命名为响应式网页设计。 那什么才是真正的响应式设计?马科特说,真正的响应式设计方法不仅仅是根据可视区域大小而改变网页布局,而是要从整体上颠覆当前网页的设计方法,是针对任意设备的网页内容进行完美布局的一种显示机制。
什么是响应式界面
根据维基百科及其参考文献,理论上,响应式界面能够适应不同的设备。描述响应式界面最著名的一句话就是“Content is like water”,翻译成中文便是“如果将屏幕看作容器,那么内容就像水一样”。
3.请通过jQuery发送ajax请求。
$.ajax({
‘ url ‘ :‘ /calc/ ‘ ,
‘ type ‘ :‘ post ‘ ,
‘ data ‘ :{
‘ k1 ‘ :$(‘ [name="i1"] ‘ ).val(),
‘ k2 ‘ :$(‘ [name="i2"] ‘ ).val(),
},
success:function (ret) {
$( ‘ [name="i3"] ‘ ).val(ret)
}
})
4.JavaScript与this相关的面试题(4分)
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()
name = ‘ 老男孩 ‘ ;
info = {
name: ‘ alex ‘ ,
age: 123,
func:function(){
console.log(this.name);
var xxx = this;
(function(){
console.log(xxx.name);
})()
}
}
info.func()
5.什么是跨域?如何解决?
当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域
6.简述你对Http协议的理解?
http是一种超文本传输协议,传输的数据都是未加密的,也就是显示在明面上的,是现在互联网上应用最为广泛的一种网络协议,相对来说不太安全,但是所需成本很小。http一般的端口号为80.
http花费少,安全性不高
1.支持B/S和C/S模式;
2.限制每次连接只能处理一个请求。服务器处理完客户端的请求,并收到客户端的应答后,就断开连接;
3.HTTP允许传输任意类型的数据对象。传输的类型由content-type标记;
4.客户端向服务器请求服务时,只用发送请求方法和请求路径。也就是常说的输入一个url,并且告诉他我需要用get或者post方法传输。
5.HTTP是无记忆能力的协议,如果后面的处理需要前面的信息,则它必须重传。
7.简述你对Https协议的理解?
https则是具有安全性的ssl加密传输协议。简单来说,https是一种安全版的http,传输的数据是通过SSL加密的,比起http来说很安全,https协议的主要作用就是:建立一个信息安全通道,来确保数组的传输,确保网站的真实性。但是相对来说,成本所需较高,尤其是所需ca证书等级越高,费用越高(ca证书功能越强大,所需费用越高)。https一般的端口号为443。
https花费稍高,但是你“买”来了安全;
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方法 最常用的方法,它是发送一个请求来获取服务器上的资源,资源通过http响应头和数据(如html文档,图片,样式,视频等)返回给客户端(如浏览器)。 GET 请求可以在 URL 中附带查询参数,如test.php?id=1.
GET 请求可被缓存 GET 请求保留在浏览器历史记录中 GET 请求可被收藏为书签 GET 请求不应在处理敏感数据时使用 GET 请求有长度限制,不同浏览器的长度限制不同 GET 请求只应当用于取回数据 二、POST方法 常用方法,用于向服务器提交数据,请求的参数要在http请求的消息主体中发送,可用于表单的提交和异步提交(如ajax),理论上,POST传递的数据量没有限制。
POST 请求不会被缓存 POST 请求不会保留在浏览器历史记录中 POST 不能被收藏为书签 POST 请求对数据长度没有要求 三、PUT方法 与POST方法类似,在RESTful设计规范中,一般POST方法代表新增,PUT方法代表整体更新,选择什么方法主要看接口的要求,put请求请求的参数一样要在http请求的消息主体中发送,默认情况下put请求是无法提交表单数据的。
四、PATCH方法 与PUT方法类似,但PATCH方法通常应用于局部更新。
五、DELETE方法 删除某一个资源,默认情况下DELETE方法在 URL 中附带查询参数,也无法提交表单数据的。
10.列举常见的http响应状态码。
100 Continue 继续。客户端应继续其请求 101 Switching Protocols 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议 200 OK 请求成功。一般用于GET与POST请求 201 Created 已创建。成功请求并创建了新的资源 202 Accepted 已接受。已经接受请求,但未处理完成 203 Non-Authoritative Information 非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本 204 No Content 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档 205 Reset Content 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域 206 Partial Content 部分内容。服务器成功处理了部分GET请求 300 Multiple Choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择 301 Moved Permanently 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替 302 Found 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI 303 See Other 查看其它地址。与301类似。使用GET和POST请求查看 304 Not Modified 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源 305 Use Proxy 使用代理。所请求的资源必须通过代理访问 306 Unused 已经被废弃的HTTP状态码 307 Temporary Redirect 临时重定向。与302类似。使用GET请求重定向 400 Bad Request 客户端请求的语法错误,服务器无法理解 401 Unauthorized 请求要求用户的身份认证 402 Payment Required 保留,将来使用 403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求 404 Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面 405 Method Not Allowed 客户端请求中的方法被禁止 406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求 407 Proxy Authentication Required 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权 408 Request Time-out 服务器等待客户端发送的请求时间过长,超时 409 Conflict 服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突 410 Gone 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置 411 Length Required 服务器无法处理客户端发送的不带Content-Length的请求信息 412 Precondition Failed 客户端请求信息的先决条件错误 413 Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息 414 Request-URI Too Large 请求的URI过长(URI通常为网址),服务器无法处理 415 Unsupported Media Type 服务器无法处理请求附带的媒体格式 416 Requested range not satisfiable 客户端请求的范围无效 417 Expectation Failed 服务器无法满足Expect的请求头信息 500 Internal Server Error 服务器内部错误,无法完成请求 501 Not Implemented 服务器不支持请求的功能,无法完成请求 502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应 503 Service Unavailable 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中 504 Gateway Time-out 充当网关或代理的服务器,未及时从远端服务器获取请求 505 HTTP Version not supported
11.http中connections:keep-alive
的请求头的作用?
我们知道HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP协议为无连接的协议);当使用Keep-Alive模式(又称持久连接、连接重用)时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
12.django请求生命周期?
1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post,体现在url之中.
2. url经过Django中的wsgi,再经过Django的中间件,最后url到过路由映射表,在路由中一条一条进行匹配, 一旦其中一条匹配成功就执行对应的视图函数,后面的路由就不再继续匹配了.
3. 视图函数根据客户端的请求查询相应的数据.返回给Django,然后Django把客户端想要的数据做为一个字符串返回给客户端.
4. 客户端浏览器接收到返回的数据,经过渲染后显示给用户.
13.什么是wsgi?
WSGI的全称是Web Server Gateway Interface ,翻译过来就是Web服务器网关接口 。具体的来说,WSGI是一个规范,定义了Web服务器如何与Python应用程序进行交互,使得使用Python写的Web应用程序可以和Web服务器对接起来 。
14.什么是MVC ?什么是MTV?
MVC
M: model 模型 数据库交互
V:view 视图 展示给用户看的 HTML
C :controller 控制器 业务逻辑 传递指令
MTV:
M: model 模型 ORM
T: template 模板
V: view 视图 业务逻辑
15.django中间件作用以及应用场景?
中间件 :中间件就是一个类,在全局范围内处理django的请求和响应。
# ## process_request(self,request)
执行时间:
? 在视图函数之前
执行顺序:
? 按照注册的顺序 顺序执行
参数 :
? request: 请求的对象,和视图函数是同一个
返回值:
? None : 正常流程
? HttpResponse:之后中间件的process_request、路由、process_view、视图都不执行,执行执行当前中间件对应process_response方法,接着倒序执行之前的中间件中的process_response方法。
# ## process_response(self, request, response)
执行时间:
? 在视图函数之后
执行顺序:
? 按照注册的顺序 倒序执行
参数 :
? request: 请求的对象,和视图函数是同一个
? response: 响应对象
返回值:
? HttpResponse: 必须返回
# ## process_view(self, request, view_func, view_args, view_kwargs)
执行时间:
? 在路由匹配之后,在视图函数之前
执行顺序:
? 按照注册的顺序 顺序执行
参数 :
? request: 请求的对象,和视图函数是同一个
? view_func:视图函数
? view_args: 给视图传递的位置参数
? view_kwargs: 给视图传递的关键字参数
返回值:
? None: 正常流程
? HttpResponse: 之后中间件的process_view、视图都不执行,直接执行最后一个中间件process_response,倒序执行之前中间件的process_response方法
# ## process_exception(self, request, exception)
执行时间:
? 在视图函数出错之后执行
执行顺序:
? 按照注册的顺序 倒序执行
参数 :
? request: 请求的对象,和视图函数是同一个
? exception:报错的对象
返回值:
? None: 自己没有处理,交给下一个中间件处理,所有的中间件都没有处理,django处理错误。
? HttpResponse: 之后中间件的process_exception,直接执行最后一个中间件process_response,倒序执行之前中间件的process_response方法
# ## process_template_response(self,request,response)
执行时间:
? 当视图函数返回一个TemplateResponse对象
执行顺序:
? 按照注册的顺序 倒序执行
参数 :
? request: 请求的对象,和视图函数是同一个
? response:响应的对象
返回值:
? HttpResponse: 必须返回
16.django中FBV和CBV有什么区别?
FBV function based view 就是在视图里使用函数处理请求。
CBV class based view 就是在视图里使用类处理请求。
17.django orm中如何批量创建数据?
批量插入数据的时候,首先要创建一个对象的列表,然后调用bulk_create方法,一次将列表中的数据插入到数据库中。
18.django 如何执行原生SQL?
Django 提供两种方法使用原生SQL进行查询:一种是使用raw()方法,进行原生SQL查询并返回模型实例;另一种是完全避开模型层,直接执行自定义的SQL语句。
19.django的orm如何查询id不等于5的数据。
filter选取符合条件 models.UserInfo.objects.filter(id!=5)
exclude表示不选取。
models.UserInfo.objects.exclude(id=5)
20.cookie和session的区别?
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。 2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。 3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
21.django的orm中on_delete的作用?
on_delete指的是通过ForeignKey连接起来的对象被删除后,当前字段怎么变化。
常见的选项有:
models.CASCADE,对就对象删除后,包含ForeignKey的字段也会被删除
models.PROTECT,删除时会引起ProtectedError
models.SET_NULL,注意只有当当前字段设置null设置为True才有效,此情况会将ForeignKey字段设置为null
models.SET_DEFAULT ,同样,当前字段设置了default才有效,此情况会将ForeignKey 字段设置为default 值
moels.SET,此时需要指定set的值
models.DO_NOTHING ,什么也不做
22.描述crm有哪些功能?
CRM软件的基本功能包括客户管理、联系人管理、时问管理、潜在客户管理、销售管理、电话销售、营销管理、电话营销、客户服务等
23.crm中什么是公户?什么是私户?为什么要做这个区分?
在CRM系统中, 将没有绑定销售的客户称为公户, 绑定销售的客户称为私户.
销售人员各自维护自己的客户(私户), 不可以查看或者跟进其他人的客户, 避免产生纠纷.
24.请列举出CRM系统中的表。
25.对数据库的数据做展示时,不同字段类型有不同的展示方法,分别是什么?
普通字段 -- 对象.字段名
choice字段 -- 对象.get_字段名_display
外键 -- 对象.外键字段.属性
多对多 -- 对象.自定义方法
26.请详细说说你们公司销售是如何使用CRM的。
销售可以通过个人渠道获取客户信息, 自己录入到系统中, 或者销售主管或网络咨询师将已经录入系统的客户分配给销售.
销售需要在规定时间间隔内对客户进行跟进或回访, 将跟进信息记录到系统中, 根据不同的情况标记客户的报名意向.
当客户确定报名时需要让客户本人或者销售帮忙添加报名表.
当销售收到客户缴纳的费用时, 需要填写缴费记录, 并将费用转交财务进行审批.
27.CRM中有哪些技术点?
auth模块 认证功能 modelfrom 对表进行增删改查 分页 数据分页展示 事务 + 行级锁 私户公户管理 QueryDict 保留搜索条件
28.为什么不用现成的crm而是自己去开发?
crm系统开源化,利用现成的crm容易造成数据危险
29.请简述实现权限控制的流程。
30.列举权限有多少张表?表中都有那些字段?
31.为什么要把权限信息放到session中?权限信息放到session有什么优缺点?
以上是关于Python面试重点(web篇)的主要内容,如果未能解决你的问题,请参考以下文章
Python面试重点(web篇)
Python面试重点(web篇)
Python面试重点(web篇)
Python面试重点(web篇)
Python面试重点(web篇)
Python面试重点(基础篇)