史上最全前端面试题(含答案)-B篇

面试有几点须要注意
面试题目: 根据你的等级和职位变化,入门级到专家级:范围↑、深度↑、方向↑。

题目类型: 技术视野、项目细节、理论知识型题,算法题,开放性题,案例题。

进行追问: 能够确保问到你开始不懂或者面试官开始不懂为止,这样能够大大延展题目的区分度和深度,知道你的实际能力。由于这种关联知识是长时期的学习,绝对不是临时记得住。

回答问题再棒,面试官(通常是你的直接领导面试),会考虑我要不要这我的作个人同事?因此态度很重要。(感受像是相亲同样)

资深的工程师能把absolute和relative弄混,这样的人不要也罢,由于团队须要的你这我的具备能够依靠的才能(靠谱)。

另外:

资料刚刚收集,覆盖面比较广,包括了web端、移动端的知识点,根据你本身的须要选择性阅读便可。

再次提一下: 看 或 背 面试题不像学校考试,死记硬背是没什么用的,看面试题是对理论知识的总结让本身表达的时候知道怎么说。

答案有些不够正确和全面,问题问的不够好,欢迎补充你所知道的答案、技巧、题目;最好是如今网上找不到的。

格式不断修改更新中。

HTML、CSS部分
要点:对Web标准的理解、浏览器差别、CSS基本功:布局、盒子模型、选择器优先级及使用、HTML五、CSS三、移动端开发 技术等
1.Doctype做用? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?

    (1)、<!DOCTYPE> 声明位于文档中的最前面,处于 <html> 标签以前。告知浏览器的解析器,用什么文档类型 规范来解析这个文档。 

    (2)、严格模式的排版和 JS 运做模式是  以该浏览器支持的最高标准运行。

    (3)、在混杂模式中,页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点没法工做。

    (4)、DOCTYPE不存在或格式不正确会致使文档以混杂模式呈现。
2.行内元素有哪些?块级元素有哪些? 空(void)元素有那些?

(1)CSS规范规定,每一个元素都有display属性,肯定该元素的类型,每一个元素都有默认的display值,好比div默认display属性值为“block”,成为“块级”元素;span默认display属性值为“inline”,是“行内”元素。  

(2)行内元素有:a b span img input select strong(强调的语气) 块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p  

(3)知名的空元素: <br> <hr> <img> <input> <link> <meta> 
     不为人知的是: <area> <base> <col> <command> <embed> <keygen> <param> <source> <track> <wbr>
3.CSS的盒子模型?

(1)两种, IE 盒子模型、标准 W3C 盒子模型;IE 的content部分包含了 border 和 pading;

(2)盒模型: 内容(content)、填充(padding)、边界(margin)、 边框(border).
4.link 和@import 的区别是?

    (1)、link属于XHTML标签,而@import是CSS提供的;

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

    (3)、import只在IE5以上才能识别,而link是XHTML标签,无兼容问题;

    (4)、link方式的样式的权重 高于@import的权重.
5.CSS 选择符有哪些?哪些属性能够继承?优先级算法如何计算? CSS3新增伪类有那些?

    *   1.id选择器( # myid)
        2.类选择器(.myclassname)
        3.标签选择器(div, h1, p)
        4.相邻选择器(h1 + p)
        5.子选择器(ul < li)
        6.后代选择器(li a)
        7.通配符选择器( * )
        8.属性选择器(a[rel = "external"])
        9.伪类选择器(a: hover, li: nth - child)

    *   可继承: font-size font-family color, UL LI DL DD DT;

    *   不可继承 :border padding margin width height ;

    *   优先级就近原则,样式定义最近者为准;

    *   载入样式以最后载入的定位为准;
优先级为:

       !important >  id > class > tag  

       important 比 内联优先级高
CSS3新增伪类举例:

    p:first-of-type 选择属于其父元素的首个 <p> 元素的每一个 <p> 元素。
    p:last-of-type  选择属于其父元素的最后 <p> 元素的每一个 <p> 元素。
    p:only-of-type  选择属于其父元素惟一的 <p> 元素的每一个 <p> 元素。
    p:only-child    选择属于其父元素的惟一子元素的每一个 <p> 元素。
    p:nth-child(2)  选择属于其父元素的第二个子元素的每一个 <p> 元素。
    :enabled、:disabled 控制表单控件的禁用状态。
    :checked,单选框或复选框被选中。
6.如何居中div,如何居中一个浮动元素?

给div设置一个宽度,而后添加margin:0 auto属性

    div{
        width:200px;
        margin:0 auto;
     }  
居中一个浮动元素

      肯定容器的宽高 宽500 高 300 的层
      设置层的外边距

     .div { 
      Width:500px ; height:300px;//高度能够不设
      Margin: -150px 0 0 -250px;
      position:relative;相对定位
      //方便看效果
      left:50%;
      top:50%;
    } 
7.浏览器的内核分别是什么?常常遇到的浏览器的兼容性有哪些?缘由,解决方法是什么,经常使用hack的技巧 ?

    * IE浏览器的内核Trident、 Mozilla的Gecko、google的WebKit、Opera内核Presto;

    * png24为的图片在iE6浏览器上出现背景,解决方案是作成PNG8.

    * 浏览器默认的margin和padding不一样。解决方案是加一个全局的*{margin:0;padding:0;}来统一。

    * IE6双边距bug:块属性标签float后,又有横行的margin状况下,在ie6显示margin比设置的大。 

      浮动ie产生的双倍距离 #box{ float:left; width:10px; margin:0 0 0 100px;} 

     这种状况之下IE会产生20px的距离,解决方案是在float的标签样式控制中加入 ——_display:inline;将其转化为行内属性。(_这个符号只有ie6会识别)

      渐进识别的方式,从整体中逐渐排除局部。 

      首先,巧妙的使用“\9”这一标记,将IE游览器从全部状况中分离出来。 
      接着,再次使用“+”将IE8和IE七、IE6分离开来,这样IE8已经独立识别。

      css
          .bb{
           
          . 
          +
          _

          } 

    *  IE下,可使用获取常规属性的方法来获取自定义属性,
       也可使用getAttribute()获取自定义属性;
       Firefox下,只能使用getAttribute()获取自定义属性. 
       解决方法:统一经过getAttribute()获取自定义属性.

    *  IE下,even对象有x,y属性,可是没有pageX,pageY属性; 
      Firefox下,event对象有pageX,pageY属性,可是没有x,y属性.

    * (条件注释)缺点是在IE浏览器下可能会增长额外的HTTP请求数。

    * Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示, 可经过加入 CSS 属性 -webkit-text-size-adjust: none; 解决.

    超连接访问事后hover样式就不出现了 被点击访问过的超连接样式不在具备hover和active了解决方法是改变CSS属性的排列顺序:
    L-V-H-A :  a:link {} a:visited {} a:hover {} a:active {}
8.html5\CSS3有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?

HTML5 如今已经不是 SGML 的子集,主要是关于图像,位置,存储,地理定位等功能的增长。

* 绘画 canvas 元素

  用于媒介回放的 video 和 audio 元素

  本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;
  sessionStorage 的数据在浏览器关闭后自动删除

  语意化更好的内容元素,好比 article、footer、header、nav、section

  表单控件,calendar、date、time、email、url、search

  CSS3实现圆角,阴影,对文字加特效,增长了更多的CSS选择器  多背景 rgba

  新的技术webworker, websockt, Geolocation
移除的元素

纯表现的元素:basefont,big,center,font, s,strike,tt,u;

对可用性产生负面影响的元素:frame,frameset,noframes;

* 是IE8/IE7/IE6支持经过document.createElement方法产生的标签,
  能够利用这一特性让这些浏览器支持HTML5新标签,

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

* 固然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架
   <!--[if lt IE 9]> 
   <script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script> 
   <![endif]--> 
9.你怎么来实现页面设计图,你认为前端应该如何高质量完成工做? 一个满屏 品 字布局 如何设计?

* 首先划分红头部、body、脚部;。。。。。 

*  
  实现效果图是最基本的工做,精确到2px;

  与设计师,产品经理的沟通和项目的参与

  作好的页面结构,页面重构和用户体验

  处理hack,兼容、写出优美的代码格式

  针对服务器的优化、拥抱 HTML5。
10.常使用的库有哪些?经常使用的前端开发工具?开发过什么应用或组件?

    * 使用率较高的框架有jQuery、YUI、Prototype、Dojo、Ext.js、Mootools等。尤为是jQuery,超过91%。

  轻量级框架有Modernizr、underscore.js、backbone.js、Raphael.js等。
(理解这些框架的功能、性能、设计原理)

    * Sublime Text 、Eclipse、Notepad、Firebug、HttpWatch、Yslow。

    * 城市选择插件,汽车型号选择插件、幻灯片插件。弹出层。(写过开源程序,加载器,js引擎更好)
JavaScript原型,原型链 ? 有什么特色?

*  原型对象也是普通的对象,是对象一个自带隐式的 __proto__ 属性,原型也有可能有本身的原型,若是一个原型对象的原型不为null的话,咱们就称之为原型链。
*  原型链是由一些用来继承和共享属性的对象组成的(有限的)对象链。

* JavaScript的数据对象有那些属性值?

  writable:这个属性的值是否能够改。

  configurable:这个属性的配置是否能够删除,修改。

  enumerable:这个属性是否能在for…in循环中遍历出来或在Object.keys中列举出来。

  value:属性值。

* 当咱们须要一个属性的时,Javascript引擎会先看当前对象中是否有这个属性, 若是没有的话,就会查找他的Prototype对象是否有这个属性。

function clone(proto) {

  function Dummy() { }

  Dummy.prototype = proto;

  Dummy.prototype.constructor = Dummy;

  return new Dummy(); //等价于Object.create(Person);



        function object(old) {
         function F() {};
         F.prototype = old;
         return new F();
        }
    var newObj = object(oldObject);
12.列出display的值,说明他们的做用。position的值, relative和absolute定位原点是?

  1.    block 象块类型元素同样显示。
  none 缺省值。向行内元素类型同样显示。
  inline-block 象行内元素同样显示,但其内容象块类型元素同样显示。
  list-item 象块类型元素同样显示,并添加样式列表标记。

  2. 
  *absolute 
        生成绝对定位的元素,相对于 static 定位之外的第一个父元素进行定位。 

  *fixed (老IE不支持)
        生成绝对定位的元素,相对于浏览器窗口进行定位。 

  *relative 
        生成相对定位的元素,相对于其正常位置进行定位。 

  * static  默认值。没有定位,元素出如今正常的流中
  *(忽略 top, bottom, left, right z-index 声明)。

  * inherit 规定从父元素继承 position 属性的值。
13.页面重构怎么操做?

编写 CSS、让页面结构更合理化,提高用户体验,实现良好的页面效果和提高性能。
14.语义化的理解?

html语义化就是让页面的内容结构化,便于对浏览器、搜索引擎解析;
在没有样式CCS状况下也以一种文档格式显示,而且是容易阅读的。
搜索引擎的爬虫依赖于标记来肯定上下文和各个关键字的权重,利于 SEO。
使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。
15.HTML5的离线储存?

localStorage    长期存储数据,浏览器关闭后数据不丢失;
sessionStorage  数据在浏览器关闭后自动删除。
16.为何要初始化CSS样式。

由于浏览器的兼容问题,不一样浏览器对有些标签的默认值是不一样的,若是没对CSS初始化每每会出现浏览器之间的页面显示差别。

固然,初始化样式会对SEO有必定的影响,但鱼和熊掌不可兼得,但力求影响最小的状况下初始化。

*最简单的初始化方法就是: * {padding: 0; margin: 0;} (不建议)

    淘宝的样式初始化: 
    body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }
    body, button, input, select, textarea { font:12px/1.5tahoma, arial, \5b8b\4f53; }
    h1, h2, h3, h4, h5, h6{ font-size:100%; }
    address, cite, dfn, em, var { font-style:normal; }
    code, kbd, pre, samp { font-family:couriernew, courier, monospace; }
    small{ font-size:12px; }
    ul, ol { list-style:none; }
    a { text-decoration:none; }
    a:hover { text-decoration:underline; }
    sup { vertical-align:text-top; }
    sub{ vertical-align:text-bottom; }
    legend { color:#000; }
    fieldset, img { border:0; }
    button, input, select, textarea { font-size:100%; }
    table { border-collapse:collapse; border-spacing:0; } 
17.(写)描述一段语义的html代码吧。

    (HTML5中新增长的不少标签(如:<article>、<nav>、<header>和<footer>等)
     就是基于语义化设计原则)  

        < div id="header"> 
        < h1>标题< /h1> 
        < h2>专一Web前端技术< /h2> 
        < /div>
语义 HTML 具备如下特性:

文字包裹在元素中,用以反映内容。例如:
段落包含在 <p> 元素中。
顺序表包含在<ol>元素中。
从其余来源引用的大型文字块包含在<blockquote>元素中。
HTML 元素不能用做语义用途之外的其余目的。例如:
<h1>包含标题,但并不是用于放大文本。
<blockquote>包含大段引述,但并不是用于文本缩进。
空白段落元素 ( <p></p> ) 并不是用于跳行。
文本并不直接包含任何样式信息。例如:
不使用 <font> 或 <center> 等格式标记。
类或 ID 中不引用颜色或位置。
18.absolute的containing block计算方式跟正常流有什么不一样?

19.position跟display、margin collapse、overflow、float这些特性相互叠加后会怎么样?

20.对BFC规范的理解?(W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其余元素的关 系和相互做用。)

21.iframe有那些缺点?

    *iframe会阻塞主页面的Onload事件;

    *iframe和主页面共享链接池,而浏览器对相同域的链接有限制,因此会影响页面的并行加载。
    使用iframe以前须要考虑这两个缺点。若是须要使用iframe,最好是经过javascript
    动态给iframe添加src属性值,这样能够能够绕开以上两个问题。
22.css定义的权重

如下是权重的规则:标签的权重为1,class的权重为10,id的权重为100,如下例子是演示各类定义的权重值:


div{
}

.class1{
}

#id1{
}

#id1 div{
}

.class1 div{
}

.class1 .class2 div{


若是权重相同,则最后定义的样式会起做用,可是应该避免这种状况出现
23.eval是作什么的?

它的功能是把对应的字符串解析成JS代码并运行;
避免使用eval,不安全,很是耗性能(2次,一次解析成js语句,一次执行)。
23.写一个通用的事件侦听器函数

`// event(事件)工具集,来源:https://github.com/markyun
markyun.Event = {
    // 页面加载完成后
    readyEvent : function(fn) {
        if (fn==null) {
            fn=document;
        }
        var oldonload = window.onload;
        if (typeof window.onload != 'function') {
            window.onload = fn;
        } else {
            window.onload = function() {
                oldonload();
                fn();
            };
        }
    },
    // 视能力分别使用dom0||dom2||IE方式 来绑定事件
    // 参数: 操做的元素,事件名称 ,事件处理程序
    addEvent : function(element, type, handler) {
        if (element.addEventListener) {
            //事件类型、须要执行的函数、是否捕捉
            element.addEventListener(type, handler, false);
        } else if (element.attachEvent) {
            element.attachEvent('on' + type, function() {
                handler.call(element);
            });
        } else {
            element['on' + type] = handler;
        }
    },
    // 移除事件
    removeEvent : function(element, type, handler) {
        if (element.removeEnentListener) {
            element.removeEnentListener(type, handler, false);
        } else if (element.datachEvent) {
            element.detachEvent('on' + type, handler);
        } else {
            element['on' + type] = null;
        }
    }, 
    // 阻止事件 (主要是事件冒泡,由于IE不支持事件捕获)
    stopPropagation : function(ev) {
        if (ev.stopPropagation) {
            ev.stopPropagation();
        } else {
            ev.cancelBubble = true;
        }
    },
    // 取消事件的默认行为
    preventDefault : function(event) {
        if (event.preventDefault) {
            event.preventDefault();
        } else {
            event.returnValue = false;
        }
    },
    // 获取事件目标
    getTarget : function(event) {
        return event.target || event.srcElement;
    },
    // 获取event对象的引用,取到事件的全部信息,确保随时能使用event;
    getEvent : function(e) {
        var ev = e || window.event;
        if (!ev) {
            var c = this.getEvent.caller;
            while (c) {
                ev = c.arguments[0];
                if (ev && Event == ev.constructor) {
                    break;
                }
                c = c.caller;
            }
        }
        return ev;
    }
}; 
24.99%的网站都须要被重构是那本书上写的?

* 网站重构:应用web标准进行设计(第2版)
25.什么叫优雅降级和渐进加强?

优雅降级:Web站点在全部新式浏览器中都能正常工做,若是用户使用的是老式浏览器,则代码会检查以确认它们是否能正常工做。因为IE独特的盒模型布局问题,针对不一样版本的IE的hack实践过优雅降级了,为那些没法支持功能的浏览器增长候选方案,使之在旧式浏览器上以某种形式降级体验却不至于彻底失效.

渐进加强:从被全部浏览器支持的基本功能开始,逐步地添加那些只有新式浏览器才支持的功能,向页面增长无害于基础浏览器的额外样式和功能的。当浏览器支持时,它们会自动地呈现出来并发挥做用。
26.Node.js的适用场景

高并发、聊天、实时消息推送
27.WEB应用从服务器主动推送Data到客户端有那些方式?

    html5 websoket
    WebSocket经过Flash
    XHR长时间链接
    XHR Multipart Streaming
    不可见的Iframe
    <script>标签的长时间链接(可跨域)
JavaScript部分
要点:  数据类型、面向对象、继承、闭包、插件、做用域、跨域、原型链、模块化、自定义事件、异步装载回调、模板引擎、Nodejs等。
js的几种数据类型:number,string,boolean,object,undefined

js的常见内置对象类:Date,Array,Math、Number、Boolean、String、Array、RegExp、Function...
一般能够作一些小练习来判断TA的水平,js 虽然很灵活,可是具体的代码和实现方式能体现出一我的的全局观,随着代码规模的增加,复杂度增长,如何合理划分模块实现功能和接口的能力比较重要。(下面例题)

["1", "2", "3"].map(parseInt)

[typeof null, null instanceof Object][ [3,2,1].reduce(Math.pow), [].reduce(Math.pow)] ]
var val = 'smtg';
console.log('Value is ' + (val === 'smtg') ? 'Something' : 'Nothing');
1.建立一个对象

      function Person(name, age) {
        this.name = name;
        this.age = age;
        this.sing = function() { alert(this.name) } 
      } 
2.谈谈This对象的理解。

this是js的一个关键字,随着函数使用场合不一样,this的值会发生变化。

可是总有一个原则,那就是this指的是调用函数的那个对象。

this通常状况下:是全局对象Global。 做为方法调用,那么this就是指这个对象
3.事件、IE与火狐的事件机制有什么区别? 如何阻止冒泡?

1. 咱们在网页中的某个操做(有的操做对应多个事件)。例如:当咱们点击一个按钮就会产生一个事件。是能够被 JavaScript 侦测到的行为。  
2. 事件处理机制:IE是事件冒泡、火狐是 事件捕获;
3.  ev.stopPropagation();
4.什么是闭包(closure),为何要用?

待完善

执行say667()后,say667()闭包内部变量会存在,而闭包内部函数的内部变量不会存在.使得Javascript的垃圾回收机制GC不会收回say667()所占用的资源,由于say667()的内部函数的执行须要依赖say667()中的变量。这是对闭包做用的很是直白的描述.

  function say667() {
    // Local variable that ends up within closure
    var num = 666;
    var sayAlert = function() { alert(num); }
    num++;
    return sayAlert;
}

var sayAlert = say667();
sayAlert()//执行结果应该弹出的667  
5.如何判断一个对象是否属于某个类?

使用instanceof (待完善)

       if(a instanceof Person){
           alert('yes');
       }
6.new操做符具体干了什么呢?

  一、建立一个空对象,而且 this 变量引用该对象,同时还继承了该函数的原型。
  二、属性和方法被加入到 this 引用的对象中。
  三、新建立的对象由 this 所引用,而且最后隐式的返回 this 。

    var obj  = {};
    obj.__proto__ = Base.prototype;
    Base.call(obj); 
7.JSON 的了解

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于JavaScript的一个子集。数据格式简单, 易于读写, 占用带宽小
{'age':'12', 'name':'back'}
8.js延迟加载的方式有哪些

defer和async、动态建立DOM方式(用得最多)、按需异步载入js
9.ajax 是什么?ajax 的交互模型?同步和异步的区别?如何解决跨域问题?

待完善

  1. 经过异步模式,提高了用户体验

  2. 优化了浏览器和服务器之间的传输,减小没必要要的数据往返,减小了带宽占用

  3. Ajax在客户端运行,承担了一部分原本由服务器承担的工做,减小了大用户量下的服务器负载。

  2. Ajax的最大的特色是什么。

  Ajax能够实现动态不刷新(局部刷新)
  readyState属性 状态 有5个可取值: 0=未初始化 ,1=正在加载 2=以加载,3=交互中,4=完成
ajax的缺点

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

  二、安全问题 AJAX暴露了与服务器交互的细节。

  三、对搜索引擎的支持比较弱。

  四、破坏了程序的异常机制。

  五、不容易调试。
跨域: jsonp、 iframe、window.name、window.postMessage、服务器上设置代理页面
10.模块化怎么作?

当即执行函数,不暴露私有成员

var module1 = (function(){
    var _count = 0;
    var m1 = function(){
      //...
    };
    var m2 = function(){
      //...
    };
    return {
      m1 : m1,
      m2 : m2
    };
  })(); 
11.对Node的优势和缺点提出了本身的见解:

    *(优势)由于Node是基于事件驱动和无阻塞的,因此很是适合处理并发请求,
      所以构建在Node上的代理服务器相比其余技术实现(如Ruby)的服务器表现要好得多。
      此外,与Node代理服务器交互的客户端代码是由javascript语言编写的,
      所以客户端和服务器端都用同一种语言编写,这是很是美妙的事情。

    *(缺点)Node是一个相对新的开源项目,因此不太稳定,它老是一直在变,
      并且缺乏足够多的第三方库支持。看起来,就像是Ruby/Rails当年的样子。
12.异步加载的方式

  (1) defer,只支持IE

  (2) async:

  (3) 建立script,插入到DOM中,加载完毕后callBack

      documen.write和 innerHTML的区别

      document.write只能重绘整个页面

      innerHTML能够重绘页面的一部分
13.告诉我答案是多少?

(function(x){
    delete x;
    alert(x);
})(1+5);

函数参数没法delete删除,delete只能删除经过for in访问的属性。
固然,删除失败也不会报错,因此代码运行会弹出“1”。
14.JS中的call()和apply()方法的区别?

例子中用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,因此运行结果为:alert(4);

注意:js 中的函数实际上是对象,函数名是对 Function 对象的引用。

function add(a,b)
{
    alert(a+b);
}

function sub(a,b)
{
    alert(a-b);
}

add.call(sub,3,1);  
15.Jquery与jQuery UI 有啥区别?

    *jQuery是一个js库,主要提供的功能是选择器,属性修改和事件绑定等等。

    *jQuery UI则是在jQuery的基础上,利用jQuery的扩展性,设计的插件。
     提供了一些经常使用的界面元素,诸如对话框、拖动行为、改变大小行为等等
16.jquery 中如何将数组转化为json字符串,而后再转化回来?

jQuery中没有提供这个功能,因此你须要先编写两个jQuery的扩展:

    $.fn.stringifyArray = function(array) {
        return JSON.stringify(array)
    }

    $.fn.parseArray = function(array) {
        return JSON.parse(array)
    } 

    而后调用:
    $("").stringifyArray(array)
17.JavaScript中的做用域与变量声明提高?

其余部分
(HTTP、正则、优化、重构、响应式、移动端、团队协做、SEO、UED、职业生涯)
    *基于Class的选择性的性能相对于Id选择器开销很大,由于需遍历全部DOM元素。

    *频繁操做的DOM,先缓存起来再操做。用Jquery的链式调用更好。   
     好比:var str=$("a").attr("href");

    *for (var i = size; i < arr.length; i++) {}
     for 循环每一次循环都查找了数组 (arr) 的.length 属性,在开始循环的时候设置一个变量来存储这个数字,可让循环跑得更快: 
     for (var i = size, length = arr.length; i < length; i++) {}
前端开发的优化问题(看雅虎14条性能优化原则)。

  (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) 图片预加载,将样式表放在顶部,将脚本放在底部  加上时间戳。

  (8) 避免在页面的主体布局中使用table,table要等其中的内容彻底下载以后才会显示出来,显示比div+css布局慢。
http状态码有那些?分别表明是什么意思?

    100-199 用于指定客户端应相应的某些动做。 
    200-299 用于表示请求成功。 
    300-399 用于已经移动的文件而且常被包含在定位头信息中指定新的地址信息。 
    400-499 用于指出客户端的错误。400    一、语义有误,当前请求没法被服务器理解。401   当前请求须要用户验证 403  服务器已经理解请求,可是拒绝执行它。
    500-599 用于支持服务器错误。 503 – 服务不可用
一个页面从输入 URL 到页面加载显示完成,这个过程当中都发生了什么?(流程说的越详细越好)

你所知道的页面性能优化方法有那些?

除了前端之外还了解什么其它技术么?你最最厉害的技能是什么?

AMD(Modules/Asynchronous-Definition)、CMD(Common Module Definition)规范区别?

18.谈谈你认为怎样作能是项目作的更好?

19.你对前端界面工程师这个职位是怎么样理解的?它的前景会怎么样?

20.加班的见解

加班就像借钱,原则应当是------救急不救穷
21.平时如何管理你的项目,如何设计突发大规模并发架构?

先期团队必须肯定好全局样式(globe.css),编码模式(utf-8) 等

编写习惯必须一致(例如都是采用继承式的写法,单样式都写成一行);

标注样式编写人,各模块都及时标注(标注关键样式调用的地方);

页面进行标注(例如 页面 模块 开始和结束);

CSS跟HTML 分文件夹并行存放,命名都得统一(例如style.css)

JS 分文件夹存放 命民以该JS 功能为准英文翻译;

图片采用整合的 images.png png8 格式文件使用 尽可能整合在一块儿使用方便未来的管理
那些操做会形成内存泄漏?

内存泄漏指任何对象在您再也不拥有或须要它以后仍然存在。
垃圾回收器按期扫描对象,并计算引用了每一个对象的其余对象的数量。若是一个对象的引用数量为 0(没有其余对象引用过该对象),或对该对象的唯一引用是循环的,那么该对象的内存便可回收。

setTimeout 的第一个参数使用字符串而非函数的话,会引起内存泄漏。
闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)
23.你说你热爱前端,那么应该WEB行业的发展很关注吧? 说说最近最流行的一些东西吧?

Node.js、Mongodb、npmM、MVVM、MEAN
24.你有了解咱们公司吗?说说你的认识?

由于我想去阿里,因此我针对阿里的说
最羡慕就是在双十一购物节,350.19亿元,每分钟支付79万笔。海量数据,竟然无一漏单、无一故障。太厉害了。
25.移动端(好比:Android IOS)怎么作好用户体验?

做为一名前端工程师,不管工做年头长短都应该必须掌握的知识点有:

    一、DOM结构 —— 两个节点之间可能存在哪些关系以及如何在节点之间任意移动。

    二、DOM操做 ——如何添加、移除、移动、复制、建立和查找节点等。

    三、事件 —— 如何使用事件,以及IE和标准DOM事件模型之间存在的差异。

    四、XMLHttpRequest —— 这是什么、怎样完整地执行一次GET请求、怎样检测错误。

    五、严格模式与混杂模式 —— 如何触发这两种模式,区分它们有何意义。

    六、盒模型 —— 外边距、内边距和边框之间的关系,及IE8如下版本的浏览器中的盒模型

    七、块级元素与行内元素 —— 怎么用CSS控制它们、以及如何合理的使用它们

    八、浮动元素——怎么使用它们、它们有什么问题以及怎么解决这些问题。

    九、HTML与XHTML——两者有什么区别,你以为应该使用哪个并说出理由。

    十、JSON —— 做用、用途、设计结构。


    他们也许不懂交互设计,可是没人比他们懂交互设计的实现,和每个细节。
    他们也许不懂视觉设计,可是没人比他们懂视觉设计如何变为现实。
    他们也许不懂后台数据库,可是他们其实才是数据的第一消费者。
    他们也许不是产品经理,可是产品的质量几乎都是由他们来决定。javascript

相关文章
相关标签/搜索