Python面试重点(web篇)
第一部分 必答题
注意:除第四题4分以外,其他题均每题3分。
- 写出常用的bootstrap的样式。
- form-control(input,select), table(table table-striped table-hover,table-border )
- class=‘row‘ col-md-3 col-md-offset-3
- btn btn-primary btn-success btn-danger...
- 什么是响应式布局?(针对不同的设备屏幕宽度,来显示不同效果)
- cnblogs.com/clschao/articles/10093308.html 参考博客
- 请通过jQuery发送ajax请求。
var formdata = new FormData()formdata.append(‘file_obj‘,$(‘[type=file]‘)[0].files[0])$.ajax({ url:‘/home/‘, type:‘get‘, // data:{username:‘alexdsb‘}, data:formdata, processData:false, contentType:false, success:function (res) { alert(res); } ? });
- JavaScript与this相关的面试题(4分)
name = ‘老男孩‘;?info = { name:‘alex‘, age:123, func:function(){ console.log(this.name); }}?info.func()
name = ‘老男孩‘; // 3.this.name 实际上就是window.name,所以打印了老男孩?info = { name:‘alex‘, age:123, func:function(){ console.log(this.name); function f1(){ console.log(this.name); //2.所以这里this指向了window对象 } f1() #1.实际上是window.f1(), }}?info.func()
name = ‘老男孩‘;?info = { name:‘alex‘, age:123, func:function(){ console.log(this.name); (function(){ console.log(this.name); })() // 自执行函数中这个this也是指向了window对象 }}?info.func()
name = ‘老男孩‘;?info = { name:‘alex‘, age:123, func:function(){ console.log(this.name); var xxx = this; // this---info对象 (function(){ console.log(xxx.name); // info.name })() }}?info.func() ?
- 什么是跨域?如何解决?
- 协议\ip\端口三个都相同才是同源,跨域就是两个项目中前面这三项内容有一个不同,就是非同源,那么他们之间互相访问就是跨域
- 响应对象加上对应的响应头就可以了,比如说对于一个简单请求,被请求的网站,回复响应对象的时候加上obj["Access-Control-Allow-Origin"] = "http://127.0.0.1:8000" 就可以了
- 简述你对Http协议的理解?
- 简述你对Https协议的理解?
- 列举常见的http请求头及作用?
- 列举常见的http请求方法及作用?
- 列举常见的http响应状态码。
- http中
connections:keep-alive
的请求头的作用? - django请求生命周期?
- 什么是wsgi?
- web服务器网关接口 ,应用程序与服务器程序(socket)之间交互数据的格式要求,django内部使用的wsigref来完成这个接口,实际我们部署项目使用的是uwsgi,因为wsgiref不支持并发,uwsgi支持并发.
- 什么是MVC ?什么是MTV?
- MVC:model-view-control(url) MTV:model-template-views+url控制器 框架模式
- django中间件作用以及应用场景?
- 对全局请求或者响应做出一些相关处理 (登录认证\权限认证\限制访问批量\ip过滤)
- django中FBV和CBV有什么区别?
- function based view class based view
- fbv--url: url("^index/‘,views.函数名称‘) cbv: url("^index/‘,views.类名.as_view()‘)
- cbv里面针对不同的请求方法写对应逻辑时的不同
- fbv: request.method来进行请求方法的判断
- cbv:get请求想处理就定义get方法
- cbv里面: dispatch--进行请求方法分发到不同的类方法上的处理,原理:反射 request_method_list = [‘get‘,‘post‘....], getattr(self,‘get‘)
- django orm中如何批量创建数据?
- 对象 = models.Book(title=‘jinpingmei‘)
- models.Book.objects.bulk_create([model对象1,对象2])
- django 如何执行原生SQL?
- models.Book.objects.raw(‘select * from app01_book;‘)
- 借用到pymysql,
- from django.db import connection
connection ---- conn = pymysql(host=127.0.0.1,port=3306,........)
cursor = connection .cursors()
cursor.excute(‘select * from xx;‘)
cursor.fetchall()
- from django.db import connection
- django的orm如何查询id不等于5的数据。
- models.Book.objects.exclude(id=5)
- models.Book.objects.all().filter().exclude(id=5)
- cookie和session的区别?
- cookie:保存在浏览器端的数据
- session是将数据保存在了服务端,但是借助了cookie,session_id给了cookie,用户带着个session_id就能获取到自己的数据,更安全一些
- cookie有个数限制: 300个
- 一个服务器最多在客户端浏览器上保存20个Cookie;
- Cookie大小上限为4KB;
- django的orm中on_delete的作用?
- on_delete级联删除,on_delete=CASCADE, on_delete=SET_NULL 关联数据置空
- 描述crm有哪些功能?
- 注册登录
- 批量操作
- 模糊搜索
- 公私户转换(事务和锁)
- 分页(自定义分页组件)
- 各业务数据的增删改查(orm操作,modelform,form)
- 批量创建记录和修改记录(modelformset_factory)
- 权限组件开发
- 数据库表设计(6张表,4个model类)
- 权限对应url路径,基于rbac,也就是基于角色进行了权限控制
- 权限分配
- 权限数据批量生成(modelformset_factory,和formset_factory,),首先获取项目中各个应用的url路径,然后和数据库中保存的url权限数据进行比较(set集合),项目中比数据库中多的,就是我们要添加的权限数据,少的就是剔除的一些功能,
- 给用户分角色,给角色分权限
- 权限注入(数据库查询改用户的所有权限数据,然后讲这些数据注入到session中,session可以配置缓存,各个位置存取数据都很方便,而且数据是加密的)
- 权限校验(中间件,权限认证白名单,通过正则来校验该用户当前访问的路径有没有在他的所有权限路径中)
- 动态菜单(二级菜单)(做了菜单数据结构,注入到session中,通过inclusion_tag渲染每个用户不同的菜单标签)
- 路径导航-面包屑(定义了一个面包屑列表,将用户访问的路径所对应的二级菜单信息和一级菜单信息,加到了这个列表中,并将列表封装到了request对象里面,在前端进行了模板渲染,循环生成了路径导航)
- 精确到按钮级别的权限
class Book():
authors = models.ManyToMany(‘author‘)
def get_all_author_name(self):
name= ‘‘
for i in self.authors.all()
name+= i.name
return name
- crm中什么是公户?什么是私户?为什么要做这个区分?
- 没有分配给任何一个销售的客户,都称为公户,已经分配了的就是某个销售的私户
- 销售容易产生矛盾,提高销售的服务质量,提高转化率,并且可以进行销售的业绩统计
- 请列举出CRM系统中的表。
- 用户表,客户表,跟进记录表,报名表,课程表,学习记录表,权限表....
- 对数据库的数据做展示时,不同字段类型有不同的展示方法,分别是什么?
- models.CharField(choices=[(‘1‘,‘男‘),]) -- get字段名display 对象.属性 对象.属性.另外一张表的属性
- 对象.属性.all() ---- models类中定义一个方法(self.) 对象.方法获取到自己想要的多对多表的数据信息
- 请详细说说你们公司销售是如何使用CRM的。
- 登录
- 查看公户信息,选取自己想聊的客户,拉到自己的私户中
- 然后对客户进行一对一深入交流
- 将每次交流体验记录到跟进记录中
- 也负责帮助客户写报名信息
- 然后缴费成功之后,进行售后服务
- CRM中有哪些技术点?
- 技术栈: django\modelformset_factory\jquery\bootstrap\ajax\html\css\mysql\orm\nginx\uwsig
- 为什么不用现成的crm而是自己去开发?
- 公司业务定制性很强,现成的crm不能够满足需求
- 请简述实现权限控制的流程。
- 列举权限有多少张表?表中都有那些字段?
- 为什么要把权限信息放到session中?权限信息放到session有什么优点?
- 权限控制到按钮级别是如何实现的?
- 如何实现把权限粒度控制到数据行? 添加一条件表,记录着数据表名,查询条件(id>2)
第二部分 补充题
- 详细描述是jsonp实现机制?
- django的orm如何通过数据自动化生成models类?
- django中如何设置缓存?
- django中信号的作用?
- django中如何设置读写分离
原文地址:https://www.cnblogs.com/Tian-Cai-1996/p/12394747.html
时间: 2024-11-09 08:45:15