1
Python面试重点(web篇)
注意:只有必答题部分计算分值,补充题不计算分值。
第一部分 必答题
注意:除第四题4分以外,其他题均每题3分。
-
写出常用的bootstrap的样式。
container,row,col-md-1,table table-striped,active,success,form-inline,form-group
-
什么是响应式布局?
利用媒体查询,让同一个网站兼容不同的终端(PC端、移动端)呈现不同的页面布局。
-
请通过jQuery发送ajax请求。
<script> $("#sub").click(function(){ var uname = $("#username").val(); var pwd = $("#password").val(); var csrf = $("[name=csrfmiddlewaretoken]").val(); #第二步 $.ajax({ url:"{% url 'login' %}", type:"post", 第三步添加键值对 data:{username:uname,password:pwd,csrfmiddlewaretoken:csrf}, {#headers:{"X-CSRFToken":$.cookie('csrftoken')},#} success:function (res) { console.log(res); if (res === "1"){ location.href = "/home/"; }else{ $(".error").text("用户名或密码错误") } } }) }) </script>
-
JavaScript与this相关的面试题(4分)
name = '老男孩'; info = { name:'alex', age:123, func:function(){ console.log(this.name); } } info.func() // alex info对象调用function
name = '老男孩'; info = { name:'alex', age:123, func:function(){ console.log(this.name); // alex function f1(){ console.log(this.name); } f1() // 自调用函数,window.f1()==>window.name } } info.func() // alex 老男孩
name = '老男孩'; info = { name:'alex', age:123, func:function(){ console.log(this.name); // alex (function(){ console.log(this.name); // 自执行函数 老男孩 })() } } info.func() // alex 老男孩
name = '老男孩'; info = { name:'alex', age:123, func:function(){ console.log(this.name); var xxx = this; // 指向func (function(){ console.log(xxx.name); })() } } info.func() // alex alex
-
什么是跨域?如何解决?
同源是指,域名,协议,端口相同 例如 http:/127.0.0.1:8000 跨域就是两个项目中前面这三项内容有一个不同,就是非同源,那么他们之间互相访问就是跨域 简单请求:一次请求 非简单请求:两次请求,在发送数据之前会先发一次请求用于做“预检”,只有“预检”通过后才再发送一次请求用于数据传输。 * 关于“预检” - 请求方式:OPTIONS - “预检”其实做检查,检查如果通过则允许传输数据,检查不通过则不再发送真正想要发送的消息 - 如何“预检” => 如果复杂请求是PUT等请求,则服务端需要设置允许某请求,否则“预检”不通过 Access-Control-Request-Method => 如果复杂请求设置了请求头,则服务端需要设置允许某请求头,否则“预检”不通过 Access-Control-Request-Headers
-
简述你对Http协议的理解?
HTTP(超文本传输协议)被用于在Web浏览器和网站服务器之间,以明文方式传递信息,不提供任何方式的数据加密,因此使用HTTP协议传输隐私信息(如:银行卡号、密码等支付信息)非常不安全。 为了解决这一安全缺陷,网景公司设计了SSL(Secure Sockets Layer)协议,在HTTP的基础上加入了SSL(Secure Sockets Layer)协议,SSL依靠SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。从而诞生了HTTPS(安全套接字层超文本传输协议)。 简单来说,HTTPS协议="SSL+HTTP协议"构建的可进行加密传输、身份认证的网络协议,是HTTP的安全版。
-
简述你对Https协议的理解?
-
列举常见的http请求头及作用?
**Accept**:浏览器可接受的MIME类型; **Accept-Charset**:浏览器可接受的字符集; **Accept-Encoding**:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间; **Accept-Language**:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到; **Authorization**:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中; **Connection**:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小; **Content-Length**:表示请求消息正文的长度; **Cookie**:这是最重要的请求头信息之一; **From**:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它; **Host**:初始URL中的主机和端口; **If-Modified-Since**:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答; **Pragma**:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝; **Referer**:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。 **User-Agent**:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用; **UA-Pixels**,UA-Color,UA-OS,UA-CPU**:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。
-
列举常见的http请求方法及作用?
- GET
GET提交的数据会放在URL之后,也就是请求行里面,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456 GET提交的数据大小有限制(因为浏览器对URL的长度有限制)
- HEAD
与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)
- POST
POST方法是把提交的数据放在HTTP包的请求体中.而POST方法提交的数据没有限制.
- PUT
向指定资源位置上传其最新内容。
- DELETE
请求服务器删除Request-URI所标识的资源。
- TRACE
回显服务器收到的请求,主要用于测试或诊断。
- OPTIONS
这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。
- CONNET
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。
-
列举常见的http响应状态码。
1xx消息 请求已被服务器接收,继续处理 2xx成功 请求已成功被服务器接收、理解、并接受 200 OK 3xx重定向 需要后续操作才能完成这一请求 4xx请求错误 请求含有词法错误或者无法被执行 403,404 5xx服务器错误 服务器在处理某个正确请求时发生错误
-
http中
connections:keep-alive
的请求头的作用?表示需要持久连接
-
django请求生命周期?
具体解释 1. 浏览器请求,wsgi.py,它封装这socket,request对象,request对象给中间键,中间件根据middleware封装的中间件一层一层向下执行,自动执行每个中间件中的请求函数 2. 执行顺序从上到下,例如,我们把自定义的中间件放在session中间件的上边,那么session就不起作用了,所以自定义的中间件是放在最下边位置 3. 中间件加工完之后,给了url控制器,然后执行视图函数views,视图函数再通过orm与数据库进行交互,并且渲染页面 **注意如果此处没有return值,默认返回的是None,表示正常,向下执行,如果return值是别的值,那么就不会向下执行了,直接执行响应中间件的response方法给浏览器了** 4. 执行完成后,页面需要间数据返还给浏览器,不需要经过url,但是还会经过中间件 5. 中间件中执行process_response方法
-
什么是wsgi?
-
什么是MVC ?什么是MTV?
MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等优点。 M: model 模型 操作数据库 V: view 视图 展示页面 HTML C: controller 控制器 调度 业务逻辑 MTV Model(模型):负责业务对象与数据库的对象(ORM) Template(模版):负责如何把页面展示给用户 View(视图):负责业务逻辑,并在适当的时候调用Model和Template 此外,Django还有一个urls分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template
-
django中间件作用以及应用场景?
-
django中FBV和CBV有什么区别?
-
django orm中如何批量创建数据?
-
django 如何执行原生SQL?
-
django的orm如何查询id不等于5的数据。
-
cookie和session的区别?
-
django的orm中on_delete的作用?
-
描述crm有哪些功能?
-
crm中什么是公户?什么是私户?为什么要做这个区分?
-
请列举出CRM系统中的表。
-
对数据库的数据做展示时,不同字段类型有不同的展示方法,分别是什么?
-
请详细说说你们公司销售是如何使用CRM的。
-
CRM中有哪些技术点?
-
为什么不用现成的crm而是自己去开发?
-
请简述实现权限控制的流程。
-
列举权限有多少张表?表中都有那些字段?
-
为什么要把权限信息放到session中?权限信息放到session有什么优缺点?
-
权限控制到按钮级别是如何实现的?
-
如何实现把权限粒度控制到数据行?
第二部分 补充题
-
详细描述是jsonp实现机制?
-
django的orm如何通过数据自动化生成models类?
-
django中如何设置缓存?
-
django中信号的作用?
-
django中如何设置读写分离