前端开发面试小结

场景:

  6月1号到6月5号这一周,面试了差不多10家公司,职位都是"前端开发"。

  下面简单介绍面试中遇到的一些题。

题目:

  HTML & CSS 相关:

    • 如何在 body 中水平垂直居中一个 div (宽100px,高100px)?
    • inline-block 造成的水平间隙该如何解决?列出你能想到的所有办法。
    • 如何用 css 创建一个三角形?写出 css 代码并说明它的实现原理。
    • position 有哪几种?它们的定位原点分别是什么?是否脱离文档流?
    • css 中有哪几种选择器?它们的优先级是什么?
    • css3 中添加了哪些新的属性?它们分别是用来做什么的?它们的兼容性如何?
    • box-sizing 的作用是什么?列出它可能的几个值。

  JavaScript 相关:

    • 函数声明的两种方式 function func(){} 和 var func = function(){} 有什么区别?
    • constructor、prototype、__proto__ 有什么区别?
    • null、undefined、undeclared 的区别,如何检测它们?
    • 如何 copy 一个 Array?如何检测一个 Array?
    • 如何用原生 JS 创建一个 div 并添加到 body 中?
    • 如何扩展 JavaScript 的内置对象,这样做有什么问题?
    • 列出 addEventListener 的几个参数,第三个参数的作用是什么?
    • 写一个通用的正则表达式,并从变量 text 中匹配出所有的数字。
    • 实现 parseInteger(x) 函数,parseInteger(x) = parseInt(x, 10)。
    • JS 如何实现面向对象和继承?请写一个简单的实例代码。
    • 用原生 JS 实现函数 insertBefore(element, sourceNode),把一个元素(节点)插入一个节点之前。
    • 一个数组 var array = [1, [2, [3, 4], [5, 6]], 7, 8],请写一个方法 flatArray(),得到数组 [1, 2, 3, 4, 5, 6, 7, 8]。(答案见前一篇随笔
    • 说出以下代码的执行结果并说明原因,如何修改代码可以得到预想的结果?
    • <div id="test">
          <div>Item1</div>
          <div>Item2</div>
          <div>Item3</div>
          <div>Item4</div>
      </div>
      <script>
          function test() {
              var els = document.getElementById('test').getElementsByTagName('div');
              for(var i = 0, len = els.length; i < len; i++) {
                  var item = els[i];
                  item.onclick = function() {
                      alert(item.innerHTML);
                      return false;
                  }
              }
          }
          test();
      </script>

       

    • 以下代码执行后,console 中会打印出什么?
    • var scope = 'global';
      function log() {
          var args = Array.prototype.join.call(arguments, ', ');
          console.log(this.scope + ':' + args);
      }
      var dog = {
          scope: 'dog',
          yelp: function() {
              var scope = 'dog.yelp';
              log('wow');
          }
      }
      dog.yelp();
      dog.yelp.call(dog);
      log.call(dog, 'created');

  Ajax相关:

    • 介绍 ajax 请求跨域的解决方法
    • 简单说明 ajax 的实现原理
    • get 请求可能因为数据缓存而导致新数据无法加载,如何解决? post 请求是否有这样的问题?
    • 请用 promise 改写以下代码
    • $(function(){
          $.get('/get/user/info', function(result){
              $.get('/get/city?city=' + result.user.city, function(city){
                  // show city info
              })
          })
      })

   其他:

    • Angularjs 是什么?有什么优缺点?它的双向数据绑定的实现原理是什么?
    • Angularjs 和 jQuery 有什么区别?和 React.js、Backbone.js 有什么区别?
    • grunt 和 gulp 是用来做什么的?它们有什么异同?
    • CommonJS、CMD、AMD 是什么?为何要用它们?
    • 请说出 3-4 个你遇到的浏览器兼容性问题并说明是如何解决的。
    • Java中,abstract 类和接口有什么异同?final 关键字的作用是什么?
    • 数据库,left join 和 join 有什么区别?

 

posted @ 2015-06-07 13:29  tww316  阅读(1231)  评论(0编辑  收藏  举报