• 前端面试三


    请解释一下 JavaScript 的同源策略。

    概念:同源策略是客户端脚本(尤其是Javascript)的重要的安全度量标准。它最早出自Netscape Navigator2.0,其目的是防止某个文档或脚本从多个不同源装载。

    这里的同源策略指的是:协议,域名,端口相同,同源策略是一种安全协议。

    指一段脚本只能读取来自同一来源的窗口和文档的属性。

    GET和POST的区别,何时使用POST?

    GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符

    POST:一般用于修改服务器上的资源,对所发送的信息没有限制。


    GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值,

    也就是说Get是通过地址栏来传值,而Post是通过提交表单来传值。

    然而,在以下情况中,请使用 POST 请求:

    无法使用缓存文件(更新服务器上的文件或数据库)

    向服务器发送大量数据(POST 没有数据量限制)

    ajax的缺点

     1、ajax不支持浏览器back按钮。

     
      2、安全问题 AJAX暴露了与服务器交互的细节。
     
      3、对搜索引擎的支持比较弱。
     
      4、破坏了程序的异常机制。
     
      5、不容易调试。
    7、 页面导入样式时,使用link和@import有什么区别?
     

    答:

          (1)link属于XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import是CSS提供的,只能用于加载CSS;

      (2)页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;

      (3)import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题。

    9、html5有哪些新特性?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?

    答:

        (Q1)

      HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。

      (1)绘画 canvas;

      (2)用于媒介回放的 video 和 audio 元素;

      (3)本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;

      (4)sessionStorage 的数据在浏览器关闭后自动删除;

      (5)语意化更好的内容元素,比如 article、footer、header、nav、section;

      (6)表单控件,calendar、date、time、email、url、search;

      (7)新的技术webworker, websocket, Geolocation;

     (Q2)

      IE8/IE7/IE6支持通过document.createElement方法产生的标签,

      可以利用这一特性让这些浏览器支持HTML5新标签,

      浏览器支持新标签后,还需要添加标签默认的样式。

      当然也可以直接使用成熟的框架、比如html5shim,

    6、null和undefined的区别?

    答:

      null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。

      undefined:

      (1)变量被声明了,但没有赋值时,就等于undefined。

      (2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。

      (3)对象没有赋值的属性,该属性的值为undefined。

      (4)函数没有返回值时,默认返回undefined。

      null:

      (1) 作为函数的参数,表示该函数的参数不是对象。

      (2) 作为对象原型链的终点。

    8、JSON 的了解?

    答:

      JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于JavaScript的一个子集。数据格式简单, 易于读写, 占用带宽小。

      格式:采用键值对,例如:{'age':'12', 'name':'back'}

    9、call() 和 apply() 的区别和作用?

    答:

      apply()函数有两个参数:第一个参数是上下文,第二个参数是参数组成的数组。如果上下文是null,则使用全局对象代替。

      如:function.apply(this,[1,2,3]);

      call()的第一个参数是上下文,后续是实例传入的参数序列。

      如:function.call(this,1,2,3);

    2、你有哪些性能优化的方法?

    答:

      (1) 减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存 ,图片服务器。

      (2) 前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数

      (3) 用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。

      (4) 当需要设置的样式很多时设置className而不是直接操作style。

      (5) 少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。

      (6) 避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)。

      (7) 图片预加载,将样式表放在顶部,将脚本放在底部 加上时间戳。

    5、线程与进程的区别

    答:

      一个程序至少有一个进程,一个进程至少有一个线程。

      线程的划分尺度小于进程,使得多线程程序的并发性高。

      另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

      线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

      从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

    4、JSONP是什么?它是如何实现跨域的?为什么它可以实现跨域?

    JSONP(JSON with Padding)是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问。

    由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,为了实现跨域请求,可以通过script标签实现跨域请求(因为同源策略不阻止动态脚本插入,并且将脚本看作是从提供 Web 页面的域上加载的),然后在服务端输出JSON数据并执行回调函数,从而解决了跨域的数据请求。

    5、浏览器兼容问题

    css兼容性问题:①不同浏览器的标签默认的外补丁和内补丁不同,解决方案:用通配符*来设置各个标签的内外补丁是0(即设置margin和padding为0);②div的垂直居中问题 vertical-align:middle;文字居中:将行距增加到和整个div一样,高line-height=行高;③margin加倍问题:设置为float的div在ie下的margin会加倍。解决方案:为这个div设置样式:display:inline;

    js兼容性问题:①在标准的事件绑定中绑定事件的方法函数为addEventListener,而IE使用的是attachEvent;②事件处理中event属性的获取不同。标准浏览器是作为参数带入,然后通过e.target获取目标元素;而IE是通过window.event方式获得,通过e.srcElement获取目标元素;

  • 相关阅读:
    BZOJ3391: [Usaco2004 Dec]Tree Cutting网络破坏
    python总结二
    python总结一
    评论详解
    C++入门篇十三
    C++入门篇十二
    C++入门篇十一
    C++入门篇十
    C++入门篇九
    c++入门篇八
  • 原文地址:https://www.cnblogs.com/ahu666/p/6686781.html
Copyright © 2020-2023  润新知