Python面试重点(web篇)

Python面试重点(web篇)

第一部分 必答题

写出常用的bootstrap的样式。

Bootstrap表格样式、栅格系统、带边框的表格、状态类表格(带背景色的表格)、内联表单、禁用状态和只读状态

什么是响应式布局?

请通过jQuery发送ajax请求。

$.ajax({
url:'/test/', # 提交的地址
type:"post", # 请求方式
data:{ # 提交的数据
name:"alex",
age:73,
hobby:JSON.stringify(['装逼,画饼,上北大'])
},
success:function(ret){ # 响应成功的回调函数

},
error:function (ret) {  # 相应失败的回调函数
    console.log(ret)
}

})

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()

什么是跨域?如何解决?

跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。

简述你对Http协议的理解?

http是一种超文本传输协议,传输的数据都是未加密的,也就是显示在明面上的,是现在互联网上应用最为广泛的一种网络协议,相对来说不太安全,但是所需成本很小。http一般的端口号为80.

1.http是一种网络数据传输协议 hype text transfer protocol-超文本传输协议

2.传输什么:超文本(html文档)

3.协议遵守方,浏览器和服务器

4.一般的传输流程是什么样的,resquest 和 response

简述你对Https协议的理解?

https则是具有安全性的ssl加密传输协议。简单来说,https是一种安全版的http,传输的数据是通过SSL加密的,比起http来说很安全,https协议的主要作用就是:建立一个信息安全通道,来确保数组的传输,确保网站的真实性。但是相对来说,成本所需较高,尤其是所需ca证书等级越高,费用越高(ca证书功能越强大,所需费用越高)。https一般的端口号为443。

列举常见的http请求头及作用?

1、Accept,浏览器端能够处理的内容类型。

2、Accept-Encoding, 浏览器能够处理的的压缩编码。通常指定压缩方法,

3、Accept-Language, 浏览器当前设置的语言。

4、Accept_Charset::浏览器能够显示的字符集

5、Connection:浏览器与服务器的连接类型

6、Host,发送请求的页面的域名。(发送请求时,该报头域是必需的),请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。

7、Referer,发送请求的页面的URI。当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器借此可以获得一些信息用于处理。

8、User-Agent,浏览器的用户代理字符串。告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本。

9、Cookie,用来存储一些用户信息以便让服务器辨别用户身份的

8、Cache-Control,指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据,还是重新发请求到服务器获取数据。

列举常见的http请求方法及作用?

方法 描述
GET 请求指定的页面信息,并返回实体主体。
HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
PUT 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE 请求服务器删除指定的页面。
CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器的性能。
PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 。
TRACE 回显服务器收到的请求,主要用于测试或诊断。

列举常见的http响应状态码。

1xx:指示信息--表示请求已接收,继续处理 2xx:成功--表示请求已被成功接收、理解、接受 3xx:重定向--要完成请求必须进行更进一步的操作 4xx:客户端错误--请求有语法错误或请求无法实现 5xx:服务器端错误--服务器未能实现合法的请求 常见状态代码、状态描述、说明: 200 OK //客户端请求成功 400 Bad Request //客户端请求有语法错误,不能被服务器所理解 401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403 Forbidden //服务器收到请求,但是拒绝提供服务 404 Not Found //请求资源不存在,eg:输入了错误的URL 500 Internal Server Error //服务器发生不可预期的错误 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

http中connections:keep-alive的请求头的作用?

HTTP中keep-alive头部的作用是为保持TCP连接,这样可以复用TCP连接不需要为每个HTTP请求都建立一个单独的TCP连接。

django请求生命周期?

第一步:浏览器发起请求 第二步:WSGI创建socket服务端,接收请求(Httprequest) 第三步:中间件处理请求 第四步:url路由,根据当前请求的URL找到视图函数 第五步:view视图,进行业务处理(ORM处理数据,从数据库取到数据返回给view视图;view视图将数据渲染到template模板;将数据返回) 第六步:中间件处理响应 第七步:WSGI返回响应(HttpResponse) 第八步:浏览器渲染

什么是wsgi?

Web 服务器网关接口是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。

什么是MVC ?什么是MTV?

所谓的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(function base views) 就是在视图里使用函数处理请求。

CBV(class base views) 就是在视图里使用类处理请求。

django orm中如何批量创建数据?

django 如何执行原生SQL?

import pymsql

django的orm如何查询id不等于5的数据。

models.表名.object.exclude(id = 5)

cookie和session的区别?

cookie  session

存储位置不同 cookie的数据信息存放在客户端浏览器上。 session的数据信息存放在服务器上。
有效期上不同 开发可以通过设置cookie的属性,达到使cookie长期有效的效果。 session依赖于名为JSESSIONID的cookie,而cookie JSESSIONID的过期时间默认为-1,只需关闭窗口该session就会失效,因而session不能达到长期有效的效果。
服务器压力不同 cookie保管在客户端,不占用服务器资源。对于并发用户十分多的网站,cookie是很好的选择。 session是保管在服务器端的,每个用户都会产生一个session。假如并发访问的用户十分多,会产生十分多的session,耗费大量的内存。

django的orm中on_delete的作用?

CASCADE:这就是默认的选项,级联删除,你无需显性指定它。 PROTECT: 保护模式,如果采用该选项,删除的时候,会抛出ProtectedError错误。 SET_NULL: 置空模式,删除的时候,外键字段被设置为空,前提就是blank=True, null=True,定义该字段的时候,允许为空。 SET_DEFAULT: 置默认值,删除的时候,外键字段设置为默认值,所以定义外键的时候注意加上一个默认值。 SET(): 自定义一个值,该值当然只能是对应的实体了

描述crm有哪些功能?

crm中什么是公户?什么是私户?为什么要做这个区分?

公共用户

个人私有用户

防止打架

请列举出CRM系统中的表。

对数据库的数据做展示时,不同字段类型有不同的展示方法,分别是什么?

请详细说说你们公司销售是如何使用CRM的。

CRM中有哪些技术点?

为什么不用现成的crm而是自己去开发?

请简述实现权限控制的流程。

列举权限有多少张表?表中都有那些字段?

为什么要把权限信息放到session中?权限信息放到session有什么优缺点?

Session是放在内存里的,当在线用户达到一定数量时内存可能不够用。

权限控制到按钮级别是如何实现的?

如何实现把权限粒度控制到数据行?

第二部分 补充题
详细描述是jsonp实现机制?

django的orm如何通过数据自动化生成models类?

django中如何设置缓存?

CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
# redis服务器的ip地址及端口号,及数据库序号,redis一共有15个数据库 0~15
"LOCATION": "redis://127.0.0.1:6379/6",
     # "LOCATION": "redis://:passwordpassword@47.193.146.xxx:6379/0", # 如果redis设置密码的话,需要以这种格式进行设置,host前面是密码
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}

django中信号的作用?

django中如何设置读写分离

原文地址:https://www.cnblogs.com/hejialong/p/12394836.html