串讲-crm项目

Python面试重点(web篇)

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

第一部分 必答题

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

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

    栅格系统
    <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>

     

  2. 什么是响应式布局?

    一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本

     

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

    $.ajax({
              'url':'/calc/',
              'type':'post',
              'data':{
                  'k1':$('[name="i1"]').val(),
                  'k2':$('[name="i2"]').val(),
              },
              success:function (ret) {
                  $('[name="i3"]').val(ret)
              }
          })

     

  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()
    老男孩 Alex
    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()
    老男孩 Alex
  5. 什么是跨域?如何解决?

    当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域

    使用代理

     

  6. 简述你对Http协议的理解?

    http协议是一种应用层超文本传输协议  默认端口 80
    无状态: 每次请求都是独立的, 两个请求之间没有联系, 但是会引入 Cookie 和 Session 机制来关联请求
    无连接:服务端收到客户端请求后, 响应完成并收到客户端的应答之后, 立即断开连接
    
    HTTP连接7步骤
    1.建立tcp/ip连接 (3次握手)
    2.客户端向服务端发送HTTP请求
    3.客户端发送请求头信息,请求内容,最后会发送一行空白,表示客户端发送完毕
    4.服务器做出应答
    5.服务器向客户端发送应答头信息
    6.服务端发送应答头信息,应答内容,最后会发送一行空白,表示服务端发送完毕
    7.服务端关闭tcp连接(4次挥手)
    

     

  7. 简述你对Https协议的理解?

    默认端口号是 443
    
    客户端请求 https 连接, 服务器收到请求后会把证书信息(包含公钥和签名) 返回给客户端
    客户端会校验这个证书签名的有效性从而获取到公钥
    客户端随机生成会话密钥(对称加密), 然后利用证书里面的公钥将会话密钥加密, 连同加密后的内容传送给服务端
    服务器利用私钥解密出会话密钥, 然后解密出内容
    服务端利用会话密钥通信
    
    

     

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

    Accept: 浏览器可以接受的 MIME 类型
    Accept-Encoding:浏览器支持的编码类型
    Accept-Language: 浏览器支持的语言
    Content-Length : 请求消息的正文长度
    Content-Type : 客户端接受服务器返回的文件类型
    User-Agent : 请求的用户信息, 浏览器类型
    Host : 给出接受请求的服务器主机名和端口号
    
    

     

  9. 列举常见的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”。
    

     

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

    1xx : 临时响应, 需要请求者继续执行操作
    2xx: 成功处理了请求的状态码
    3xx : 如果要完成请求, 需要进一步操作, 重定向
    4xx : 请求出错
    5xx: 服务器内部错误
    

     

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

    因为HTTP是无状态的,connections记录了个人信息,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的TCP连接。但是Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。
    

     

  12. django请求生命周期?

    客户端发送请求   经过中间件找到url
    根据请求URL在路由系统查询相应的视图函数
    视图函数根据调用数据库获取相应数据
    视图函数根据模板渲染生成页面
    返回客户端
    

     

  13. 什么是wsgi?

    WSGI的全称是Web Server Gateway Interface,翻译过来就是Web服务器网关接口。具体的来说,WSGI是一个规范,定义了Web服务器如何与Python应用程序进行交互,使得使用Python写的Web应用程序可以和Web服务器对接起来。WSGI一开始是在PEP-0333中定义的,最新版本是在Python的PEP-3333定义的。
    
    

     

  14. 什么是MVC ?什么是MTV?

     mvc
     1.模型层:  model     负责业务对象和数据库的对象(ORM)的映射
    
     2.视图层       views  负责与用户的交互(书写逻辑)
    
     3.控制器  Controller   完成用户对模型层和视图层调用,来完成用户的请求
    mtv
    
     1.模型层:  model     负责业务对象与数据库的对象(ORM)的映射
    
      2.模板层  Template   负责如何把页面展示给用户(html)
    
     3.视图层:  View    负责业务逻辑,并在适当的时候调用Model和Template
    

     

  15. django中间件作用以及应用场景?

    作用:在request和response之间的一道处理过程,用于全局范围改变django输入和输出
    应用场景:比如博客园你需要登录才能发表博客,在你每次访问博客园或刷新的时候中间件判断你有没有登录,避免了每次刷新都要登录一遍 
    

     

  16. django中FBV和CBV有什么区别?

    • FBV 再视图里使用函数处理请求

    • CBV 再视图里使用类处理方法

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

  18. django 如何执行原生SQL?

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

  20. cookie和session的区别?

    • cookie 保存在浏览器缓存中,关闭浏览器就失效

    • session 保存在数据库中,只要不删除,在设定的有效期内一直有效

  21. django的orm中on_delete的作用?

    • 级联

    • models.CASCADE 级联删除 当关联表中的数据删除时,该外键也删除

    • models.SET_NULL 置空 当关联表中的数据删除时,该外键置空,当然,你的这个外键字段得允许为空,null=True

    • models.SET_DEFAULT 设置默认值 删除的时候,外键字段设置为默认值,所以定义外键的时候注意加上一个默认值。

  22. 描述crm有哪些功能?

    • 公户转私户(批量)

    • 私户转公户(批量)

    • 创建班级

    • 创建课程

    • 跟进记录

    • 权限管理

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

    • 公户 就是没有销售跟进的,私户就是有销售正在跟进

    • 因为销售在选人的时候不知道有谁已经被别的销售选过了,重复挑选

  24. 请列举出CRM系统中的表。

    • 部门表

    • 用户表

    • 客户表

    • 校区表

    • 班级表

    • 跟进记录表

    • 报名表

    • 缴费记录表

    • 课程记录表

    • 学习记录表

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

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

  27. CRM中有哪些技术点?

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

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

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

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

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

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

 

第二部分 补充题

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

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

  3. django中如何设置缓存?

  4. django中信号的作用?

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

 

 

posted @ 2020-03-02 11:42  时光哥哥  阅读(295)  评论(0编辑  收藏  举报