zoukankan      html  css  js  c++  java
  • 1

    Python面试重点(web篇)

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

    第一部分 必答题

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

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

      container,row,col-md-1,table table-striped,active,success,form-inline,form-group
      
    2. 什么是响应式布局?

      利用媒体查询,让同一个网站兼容不同的终端(PC端、移动端)呈现不同的页面布局。
      
    3. 请通过jQuery发送ajax请求。

         <script>
      
              $("#sub").click(function(){
                  var uname = $("#username").val();
                  var pwd = $("#password").val();
                  var csrf = $("[name=csrfmiddlewaretoken]").val();  #第二步
      
                  $.ajax({
                      url:"{% url 'login' %}",
                      type:"post",
       第三步添加键值对 data:{username:uname,password:pwd,csrfmiddlewaretoken:csrf},
                      {#headers:{"X-CSRFToken":$.cookie('csrftoken')},#}
                      success:function (res) {
                          console.log(res);
                          if (res === "1"){
                              location.href = "/home/";
                          }else{
                              $(".error").text("用户名或密码错误")
                          }
                      }
                  })
              })
          </script>
      
    4. JavaScript与this相关的面试题(4分)

      name = '老男孩';
      
      info = {
      	name:'alex',
      	age:123,
      	func:function(){
      		console.log(this.name);
      	}
      }
      
      info.func()   //  alex  info对象调用function
      
      name = '老男孩';
      
      info = {
      	name:'alex',
      	age:123,
      	func:function(){
      		console.log(this.name);   // alex
              function f1(){
                  console.log(this.name);
              }
              f1()  // 自调用函数,window.f1()==>window.name
      	}
      }
      
      info.func()   // alex  老男孩
      
      name = '老男孩';
      
      info = {
      	name:'alex',
      	age:123,
      	func:function(){
      		console.log(this.name);    // alex
              (function(){
                  console.log(this.name);   // 自执行函数  老男孩
              })()
      	}
      }
      
      info.func()   // alex   老男孩
      
      name = '老男孩';
      
      info = {
      	name:'alex',
      	age:123,
      	func:function(){
      		console.log(this.name); 
              var xxx = this;       // 指向func
              (function(){
                  console.log(xxx.name); 
              })()
      	}
      }
      
      info.func()    // alex  alex
      
    5. 什么是跨域?如何解决?

      同源是指,域名,协议,端口相同  例如 http:/127.0.0.1:8000
      跨域就是两个项目中前面这三项内容有一个不同,就是非同源,那么他们之间互相访问就是跨域
      
         简单请求:一次请求
         非简单请求:两次请求,在发送数据之前会先发一次请求用于做“预检”,只有“预检”通过后才再发送一次请求用于数据传输。
      * 关于“预检”
      
      - 请求方式:OPTIONS
      - “预检”其实做检查,检查如果通过则允许传输数据,检查不通过则不再发送真正想要发送的消息
      - 如何“预检”
           => 如果复杂请求是PUT等请求,则服务端需要设置允许某请求,否则“预检”不通过
              Access-Control-Request-Method
           => 如果复杂请求设置了请求头,则服务端需要设置允许某请求头,否则“预检”不通过
              Access-Control-Request-Headers
      
    6. 简述你对Http协议的理解?

      HTTP(超文本传输协议)被用于在Web浏览器和网站服务器之间,以明文方式传递信息,不提供任何方式的数据加密,因此使用HTTP协议传输隐私信息(如:银行卡号、密码等支付信息)非常不安全。
      
      为了解决这一安全缺陷,网景公司设计了SSL(Secure Sockets Layer)协议,在HTTP的基础上加入了SSL(Secure Sockets Layer)协议,SSL依靠SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。从而诞生了HTTPS(安全套接字层超文本传输协议)。
      
      简单来说,HTTPS协议="SSL+HTTP协议"构建的可进行加密传输、身份认证的网络协议,是HTTP的安全版。
      
    7. 简述你对Https协议的理解?

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

      **Accept**:浏览器可接受的MIME类型;
      **Accept-Charset**:浏览器可接受的字符集;
      **Accept-Encoding**:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间;
      **Accept-Language**:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到;
      **Authorization**:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中;
      **Connection**:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小;
      **Content-Length**:表示请求消息正文的长度;
      **Cookie**:这是最重要的请求头信息之一;
      **From**:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它;
      **Host**:初始URL中的主机和端口;
      **If-Modified-Since**:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答;
      **Pragma**:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝;
      **Referer**:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。
      **User-Agent**:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用;
      **UA-Pixels**,UA-Color,UA-OS,UA-CPU**:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。
      
    9. 列举常见的http请求方法及作用?

      1. GET
      GET提交的数据会放在URL之后,也就是请求行里面,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456
      GET提交的数据大小有限制(因为浏览器对URL的长度有限制)
      
      1. HEAD
      与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)
      
      1. POST
      POST方法是把提交的数据放在HTTP包的请求体中.而POST方法提交的数据没有限制.
      
      1. PUT
      向指定资源位置上传其最新内容。
      
      1. DELETE
      请求服务器删除Request-URI所标识的资源。
      
      1. TRACE
      回显服务器收到的请求,主要用于测试或诊断。
      
      1. OPTIONS
      这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。
      
      1. CONNET
      HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。
      
    10. 列举常见的http响应状态码。

      1xx消息 	请求已被服务器接收,继续处理
      2xx成功 	请求已成功被服务器接收、理解、并接受 200 OK
      3xx重定向  	需要后续操作才能完成这一请求
      4xx请求错误	 	请求含有词法错误或者无法被执行 403,404
      5xx服务器错误	服务器在处理某个正确请求时发生错误
      
    11. http中connections:keep-alive的请求头的作用?

      表示需要持久连接
      
    12. django请求生命周期?

      具体解释
      1. 浏览器请求,wsgi.py,它封装这socket,request对象,request对象给中间键,中间件根据middleware封装的中间件一层一层向下执行,自动执行每个中间件中的请求函数
      2. 执行顺序从上到下,例如,我们把自定义的中间件放在session中间件的上边,那么session就不起作用了,所以自定义的中间件是放在最下边位置
      3. 中间件加工完之后,给了url控制器,然后执行视图函数views,视图函数再通过orm与数据库进行交互,并且渲染页面
         **注意如果此处没有return值,默认返回的是None,表示正常,向下执行,如果return值是别的值,那么就不会向下执行了,直接执行响应中间件的response方法给浏览器了**
      4. 执行完成后,页面需要间数据返还给浏览器,不需要经过url,但是还会经过中间件
      5. 中间件中执行process_response方法
      
    13. 什么是wsgi?

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

      MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等优点。
      ​      M: model 模型 操作数据库
      ​      V: view 视图 展示页面 HTML
      ​      C: controller 控制器 调度 业务逻辑
      MTV
      Model(模型):负责业务对象与数据库的对象(ORM)
      Template(模版):负责如何把页面展示给用户
      View(视图):负责业务逻辑,并在适当的时候调用Model和Template
      此外,Django还有一个urls分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template 
      
    15. django中间件作用以及应用场景?

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

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

      
      
    18. django 如何执行原生SQL?

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

      
      
    20. cookie和session的区别?

      
      
    21. django的orm中on_delete的作用?

      
      
    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中如何设置读写分离

      
      
  • 相关阅读:
    Python字典为什么快?为什么是乱序?
    对Routers的理解
    对drf视图集的理解
    对drf视图的理解
    C++中的随机数函数 分类: C/C++ 2015-07-27 12:24 10人阅读 评论(0) 收藏
    windows bat脚本编写 2015-07-27 11:27 5人阅读 评论(0) 收藏
    windows下bat批处理文件语法 2015-07-27 11:25 8人阅读 评论(0) 收藏
    shell版俄罗斯方块二:界面绘制 分类: shell版俄罗斯方块 2015-07-27 09:14 116人阅读 评论(0) 收藏
    shell版俄罗斯方块一:方向键获取 分类: shell版俄罗斯方块 2015-07-27 09:00 114人阅读 评论(0) 收藏
    echo的高级用法-颜色输出与光标定位 分类: Ubuntu学习笔记 2015-07-26 22:54 17人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/lvweihe/p/12394946.html
Copyright © 2011-2022 走看看