Python试题(web篇)
第一部分 必答题
-
栅格系统
<body>
<div class="container">
<div class="row">
<div class="col-md-1>1</div>
<div class="col-md-2>2</div>
<div class="col-md-3>3</div>
<div class="col-md-4>4</div>
<div class="col-md-2>2</div>
</div>
</div>
</body>
表格
<table class="table">
...
</table>
表单
<form class="form-horizontal">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control" id="inputEmail3" placeholder="Email">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="inputPassword3" placeholder="Password">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label>
<input type="checkbox"> Remember me
</label>
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">Sign in</button>
</div>
</div>
</form>
按钮
<!-- Standard button -->
<button type="button" class="btn btn-default">(默认样式)Default</button>
<!-- Provides extra visual weight and identifies the primary action in a set of buttons -->
<button type="button" class="btn btn-primary">(首选项)Primary</button>
<!-- Indicates a successful or positive action -->
<button type="button" class="btn btn-success">(成功)Success</button>
<!-- Contextual button for informational alert messages -->
<button type="button" class="btn btn-info">(一般信息)Info</button>
<!-- Indicates caution should be taken with this action -->
<button type="button" class="btn btn-warning">(警告)Warning</button>
<!-- Indicates a dangerous or potentially negative action -->
<button type="button" class="btn btn-danger">(危险)Danger</button>
<!-- Deemphasize a button by making it look like a link while maintaining button behavior -->
<button type="button" class="btn btn-link">(链接)Link</button> -
什么是响应式布局?
一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本
-
请通过jQuery发送ajax请求。
$.ajax({
'url':'/calc/',
'type':'post',
'data':{
'k1':$('[name="i1"]').val(),
'k2':$('[name="i2"]').val(),
},
success:function (ret) {
$('[name="i3"]').val(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()
老男孩 Alexname = '老男孩';
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()
老男孩 Alex -
什么是跨域?如何解决?
当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域
使用代理 -
简述你对Http协议的理解?
http协议是一种应用层超文本传输协议 默认端口 80 无状态: 每次请求都是独立的, 两个请求之间没有联系, 但是会引入 Cookie 和 Session 机制来关联请求 无连接:服务端收到客户端请求后, 响应完成并收到客户端的应答之后, 立即断开连接 HTTP连接7步骤 1.建立tcp/ip连接 (3次握手) 2.客户端向服务端发送HTTP请求 3.客户端发送请求头信息,请求内容,最后会发送一行空白,表示客户端发送完毕 4.服务器做出应答 5.服务器向客户端发送应答头信息 6.服务端发送应答头信息,应答内容,最后会发送一行空白,表示服务端发送完毕 7.服务端关闭tcp连接(4次挥手)
-
简述你对Https协议的理解?
默认端口号是 443 客户端请求 https 连接, 服务器收到请求后会把证书信息(包含公钥和签名) 返回给客户端 客户端会校验这个证书签名的有效性从而获取到公钥 客户端随机生成会话密钥(对称加密), 然后利用证书里面的公钥将会话密钥加密, 连同加密后的内容传送给服务端 服务器利用私钥解密出会话密钥, 然后解密出内容 服务端利用会话密钥通信
-
列举常见的http请求头及作用?
Accept: 浏览器可以接受的 MIME 类型 Accept-Encoding:浏览器支持的编码类型 Accept-Language: 浏览器支持的语言 Content-Length : 请求消息的正文长度 Content-Type : 客户端接受服务器返回的文件类型 User-Agent : 请求的用户信息, 浏览器类型 Host : 给出接受请求的服务器主机名和端口号
-
列举常见的http请求方法及作用?
GET 、POST 、HEAD、PUT、DELETE、OPTIONS GET: 可以说是最常见的了,它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。 HEAD:HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。 PUT:这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。 DELETE:删除某一个资源。基本上这个也很少见,不过还是有一些地方比如amazon的S3云服务里面就用的这个方法来删除资源。 POST:向服务器提交数据。这个方法用途广泛,几乎目前所有的提交操作都是靠这个完成。 OPTIONS:这个方法很有趣,但极少使用。它用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。
-
列举常见的http响应状态码。
1xx : 临时响应, 需要请求者继续执行操作 2xx: 成功处理了请求的状态码 3xx : 如果要完成请求, 需要进一步操作, 重定向 4xx : 请求出错 5xx: 服务器内部错误
-
http中
connections:keep-alive
的请求头的作用?因为HTTP是无状态的,connections记录了个人信息,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的TCP连接。但是Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。
-
django请求生命周期?
客户端发送请求 经过中间件找到url 根据请求URL在路由系统查询相应的视图函数 视图函数根据调用数据库获取相应数据 视图函数根据模板渲染生成页面 返回客户端
-
什么是wsgi?
WSGI的全称是Web Server Gateway Interface,翻译过来就是Web服务器网关接口。具体的来说,WSGI是一个规范,定义了Web服务器如何与Python应用程序进行交互,使得使用Python写的Web应用程序可以和Web服务器对接起来。WSGI一开始是在PEP-0333中定义的,最新版本是在Python的PEP-3333定义的。
-
什么是MVC ?什么是MTV?
mvc 1.模型层: model 负责业务对象和数据库的对象(ORM)的映射 2.视图层 views 负责与用户的交互(书写逻辑) 3.控制器 Controller 完成用户对模型层和视图层调用,来完成用户的请求 mtv 1.模型层: model 负责业务对象与数据库的对象(ORM)的映射 2.模板层 Template 负责如何把页面展示给用户(html) 3.视图层: View 负责业务逻辑,并在适当的时候调用Model和Template
-
django中间件作用以及应用场景?
作用:在request和response之间的一道处理过程,用于全局范围改变django输入和输出 应用场景:比如博客园你需要登录才能发表博客,在你每次访问博客园或刷新的时候中间件判断你有没有登录,避免了每次刷新都要登录一遍
-
django中FBV和CBV有什么区别?
-
FBV 再视图里使用函数处理请求
-
CBV 再视图里使用类处理方法
-
-
django orm中如何批量创建数据?
-
django 如何执行原生SQL?
-
django的orm如何查询id不等于5的数据。
-
cookie和session的区别?
-
cookie 保存在浏览器缓存中,关闭浏览器就失效
-
session 保存在数据库中,只要不删除,在设定的有效期内一直有效
-
-
django的orm中on_delete的作用?
-
级联
-
models.CASCADE 级联删除 当关联表中的数据删除时,该外键也删除
-
models.SET_NULL 置空 当关联表中的数据删除时,该外键置空,当然,你的这个外键字段得允许为空,null=True
-
models.SET_DEFAULT 设置默认值 删除的时候,外键字段设置为默认值,所以定义外键的时候注意加上一个默认值。
-
-
描述crm有哪些功能?
-
公户转私户(批量)
-
私户转公户(批量)
-
创建班级
-
创建课程
-
跟进记录
-
权限管理
-
-
crm中什么是公户?什么是私户?为什么要做这个区分?
-
公户 就是没有销售跟进的,私户就是有销售正在跟进
-
因为销售在选人的时候不知道有谁已经被别的销售选过了,重复挑选
-
-
请列举出CRM系统中的表。
-
部门表
-
用户表
-
客户表
-
校区表
-
班级表
-
跟进记录表
-
报名表
-
缴费记录表
-
课程记录表
-
学习记录表
-
-
对数据库的数据做展示时,不同字段类型有不同的展示方法,分别是什么?
-
请详细说说你们公司销售是如何使用CRM的。
-
CRM中有哪些技术点?
-
为什么不用现成的crm而是自己去开发?
-
请简述实现权限控制的流程。
-
列举权限有多少张表?表中都有那些字段?
-
为什么要把权限信息放到session中?权限信息放到session有什么优缺点?
-
权限控制到按钮级别是如何实现的?
-
如何实现把权限粒度控制到数据行?
第二部分 补充题
-
详细描述是jsonp实现机制?
-
django的orm如何通过数据自动化生成models类?
-
django中如何设置缓存?
-
django中信号的作用?
-
django中如何设置读写分离