zoukankan      html  css  js  c++  java
  • Python面试重点(web篇)

    Python面试重点(web篇)

    注意:只有必答题部分计算分值,补充题不计算分值。

    第一部分 必答题

    注意:除第四题4分以外,其他题均每题3分。

    1. 写出常用的bootstrap的样式。

      1. form-control(input,select),  table(table table-striped table-hover,table-border )
      2. class='row'  col-md-3  col-md-offset-3
      3. btn btn-primary  btn-success  btn-danger...
      
    2. 什么是响应式布局?

    3. 请通过jQuery发送ajax请求。

      var formdata = new FormData()
      formdata.append('file_obj',$('[type=file]')[0].files[0])
      $.ajax({
              url:'/home/',
              type:'get',
              // data:{username:'痾啊'},
              data:formdata,
              processData:false,
              contentType:false,
              success:function (res) {
                  alert(res);
              }
      		
      
          });
          
      
    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. 什么是跨域?如何解决?

      1. 协议ip端口三个都相同才是同源,跨域就是两个项目中前面这三项内容有一个不同,就是非同源,那么他们之间互相访问就是跨域
      2. 响应对象加上对应的响应头就可以了,比如说对于一个简单请求,被请求的网站,回复响应对象的时候加上obj["Access-Control-Allow-Origin"] = "http://127.0.0.1:8000" 就可以了
      
    6. 简述你对Http协议的理解?

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

      https则是具有安全性的ssl加密传输协议。简单来说,https是一种安全版的http,传输的数据是通过SSL加密的,比起http来说很安全,https协议的主要作用就是:建立一个信息安全通道,来确保数组的传输,确保网站的真实性。但是相对来说,成本所需较高,尤其是所需ca证书等级越高,费用越高(ca证书功能越强大,所需费用越高)。https一般的端口号为443。
      
      http和https各有各自的优缺点,http花费少,安全性不高;https花费稍高,但是你“买”来了安全;
      
      [ https握手阶段比较费时,会使页面加载时间延长50%,增加10%~20%的耗电。
      
      https缓存不如http高效,会增加数据开销。
      
      SSL证书也需要钱,功能越强大的证书费用越高。 
      
      SSL证书需要绑定IP,不能再同一个ip上绑定多个域名,ipv4资源支持不了这种消耗。]
      
    8. 列举常见的http请求头及作用?

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

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

      2XX Success(成功状态码)
      200 表示从客户端发来的请求在服务器端被正常处理
      204 该状态码表示服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分
      206 该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求
      3XX Redirection(重定向状态码)
      301 永久性重定向
      302 临时性重定向
      4XX Client Error(客户端错误状态码)
      400 该状态码表示请求报文中存在语法错误
      401 该状态码表示发送的请求需要有通过HTTP认证的认证信息
      403 该状态码表明对请求资源的访问被服务器拒绝了。
      404 该状态码表明服务器上无法找到请求的资源
      5XX Server Error(服务器错误状态码)
      500 该状态码表明服务器端在执行请求时发生了错误。
      503 该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
      
    11. http中connections:keep-alive的请求头的作用?

    12. django请求生命周期?

    13. 什么是wsgi?

      web服务器网关接口 ,应用程序与服务器程序(socket)之间交互数据的格式要求,django内部使用的wsigref来完成这个接口,实际我们部署项目使用的是uwsgi,因为wsgiref不支持并发,uwsgi支持并发.
      
    14. 什么是MVC ?什么是MTV?

      MVC:model-view-control(url)      MTV:model-template-views+url控制器  框架模式
      
    15. django中间件作用以及应用场景?

      对全局请求或者响应做出一些相关处理  (登录认证权限认证限制访问批量ip过滤)
      
    16. django中FBV和CBV有什么区别?

      1. function based view    class based view
      
      2. fbv--url:  url("^index/',views.函数名称')       cbv: url("^index/',views.类名.as_view()')
      
      3. cbv里面针对不同的请求方法写对应逻辑时的不同
      
          1. fbv:  request.method来进行请求方法的判断
      
          2. cbv:get请求想处理就定义get方法
      
              1. cbv里面: dispatch--进行请求方法分发到不同的类方法上的处理,原理:反射  request_method_list = ['get','post'....],   getattr(self,'get')
      
    17. django orm中如何批量创建数据?

      1. 对象 = models.Book(title='天龙八部)
      2. models.Book.objects.bulk_create([model对象1,对象2])
      
    18. django 如何执行原生SQL?

      1. models.Book.objects.raw('select * from app01_book;')
      
      2. 借用到pymysql,
      
          1. 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()
      
    19. django的orm如何查询id不等于5的数据。

      1. models.Book.objects.exclude(id=5)
      2. models.Book.objects.all().filter().exclude(id=5)
      
    20. cookie和session的区别?

      1. cookie:保存在浏览器端的数据
      2. session是将数据保存在了服务端,但是借助了cookie,session_id给了cookie,用户带着个session_id就能获取到自己的数据,更安全一些
      3. cookie有个数限制: 300个
      4. 一个服务器最多在客户端浏览器上保存20个Cookie; 
      5. Cookie大小上限为4KB;
      
    21. django的orm中on_delete的作用?

      on_delete级联删除,on_delete=CASCADE,  on_delete=SET_NULL 关联数据置空
      
    22. 描述crm有哪些功能?

      1. 注册登录
      
      2. 批量操作
      
      3. 模糊搜索
      
      4. 公私户转换(事务和锁)
      
      5. 分页(自定义分页组件)
      
      6. 各业务数据的增删改查(orm操作,modelform,form)
      
      7. 批量创建记录和修改记录(modelformset_factory)
      
      8. 权限组件开发
      
          1. 数据库表设计(6张表,4个model类)
      
          2. 权限对应url路径,基于rbac,也就是基于角色进行了权限控制
      
          3. 权限分配
      
              1. 权限数据批量生成(modelformset_factory,和formset_factory,),首先获取项目中各个应用的url路径,然后和数据库中保存的url权限数据进行比较(set集合),项目中比数据库中多的,就是我们要添加的权限数据,少的就是剔除的一些功能,
      
              2. 给用户分角色,给角色分权限
      
              3. 权限注入(数据库查询改用户的所有权限数据,然后讲这些数据注入到session中,session可以配置缓存,各个位置存取数据都很方便,而且数据是加密的)
      
              4. 权限校验(中间件,权限认证白名单,通过正则来校验该用户当前访问的路径有没有在他的所有权限路径中)
      
              5. 动态菜单(二级菜单)(做了菜单数据结构,注入到session中,通过inclusion_tag渲染每个用户不同的菜单标签)
      
              6. 路径导航-面包屑(定义了一个面包屑列表,将用户访问的路径所对应的二级菜单信息和一级菜单信息,加到了这个列表中,并将列表封装到了request对象里面,在前端进行了模板渲染,循环生成了路径导航)
      
              7. 精确到按钮级别的权限
      
                  class Book():
      
                  ​	authors = models.ManyToMany('author')
      
                     def get_all_author_name(self):
      
                  ​		name= ''
      
                  ​      for i in self.authors.all()
      
                  ​           name+= i.name
      
                  ​     return name
      
    23. crm中什么是公户?什么是私户?为什么要做这个区分?

      1. 没有分配给任何一个销售的客户,都称为公户,已经分配了的就是某个销售的私户
      2. 销售容易产生矛盾,提高销售的服务质量,提高转化率,并且可以进行销售的业绩统计
      
    24. 请列举出CRM系统中的表。

      用户表,客户表,跟进记录表,报名表,课程表,学习记录表,权限表....
      
    25. 对数据库的数据做展示时,不同字段类型有不同的展示方法,分别是什么?

      1. models.CharField(choices=[('1','男'),]) -- get_字段名_display   对象.属性     对象.属性.另外一张表的属性   
      2. 对象.属性.all()   ----  models类中定义一个方法(self.)  对象.方法获取到自己想要的多对多表的数据信息
      
    26. 请详细说说你们公司销售是如何使用CRM的。

      1. 登录
      2. 查看公户信息,选取自己想聊的客户,拉到自己的私户中
      3. 然后对客户进行一对一深入交流
      4. 将每次交流体验记录到跟进记录中
      5. 也负责帮助客户写报名信息
      6. 然后缴费成功之后,进行售后服务
      
    27. CRM中有哪些技术点?

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

      公司业务定制性很强,现成的crm不能够满足需求
      
    29. 请简述实现权限控制的流程。

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

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

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

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

    第二部分 补充题

    1. 详细描述是jsonp实现机制?

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

    3. django中如何设置缓存?

    4. django中信号的作用?

    5. django中如何设置读写分离

  • 相关阅读:
    企业在线学习平台开发02
    企业在线学习平台开发01
    20200807-1
    20200801-01
    16用户体验评价-补
    13第一阶段意见评审-补
    11单词统计-补
    09用户模板和用户场景-补
    08顶会热词统计-补
    时间 Java
  • 原文地址:https://www.cnblogs.com/zgboy/p/12394758.html
Copyright © 2011-2022 走看看