zoukankan      html  css  js  c++  java
  • 阿里前端笔试题目

    1.有一个长度未知的数组a,如果它的长度为0就把数字1添加到数组里面,否则按照先进先出的队列规则让第一个元素出队。

      按照我的理解,肯定是要使用js原生的方法,这里比较容易混的应该是先进先出(shift),先进后出(pop)这2个方法

    2.考闭包和自执行函数

     1 var test = (function(a) {
     2     this.a = a;
     3     return function(b) {
     4         return this.a + b;
     5     }
     6 } (function(a, b) {
     7     return a;
     8 }(1, 2))); 
     9 
    10 console.log(test(4)); //输出什么

    答案:5

    3.往页面添加10个<ul><li>i</li></ul>,i从1到10,采用性能比较好的方法

    对于大的DOM更改,使用innerHTML要比使用标准的DOM方法创建同样的DOM结构快得多。

    1 var html = [],i;
    2 for (i = 0; i < 10; i++) {
    3       html.push('<ul><li>' + i + '</li></ul>');
    4 }
    5 document.body.innerHTML = html.join('');

     不建议使用以下这种方法,因为appendChild()性能不太好

    1  var i;    //由于js会先变量提升,所以将i放在循环外面会减少出错的可能
    2  for (i = 0; i < 10; i++) {
    3          var ul = document.createElement('ul'),
    4        li = document.createElement('li');
    5           li.innerHTML = i;
    6         ul.appendChild(li);
    7          document.body.appendChild(ul);
    8 }

    4.乱序一个数组

    1 array.sort(function() {
    2     return Math.random() - 0.5
    3 });

    5.雅虎前端优化的方法

    减少http请求,使用css sprites,减少DNS查询次数,缓存ajax,避免404,Gzip压缩传输文件,

    避免空的图片src-------   空的图片src仍然会使浏览器发送请求到服务器,这样完全是浪费时间

    减少cookie大小,详细介绍:雅虎35条黄金准则

    6.使用自动化功能实现上面雅虎优化的功能

    使用gulp自动构建化工具

    7.请写个正则表达式匹配所有二级域名是9game.cn和其目录下的网址,比如:http://abc.9game.cn/sname/view/
    如果这个非常重要的话,怎么保护他呢?

    正则这个感觉是笔试必备佳肴

    8.本地测试没有问题,上线了之后却又问题,如何找到错误?

    缓存问题?

    9.不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标。

    10.有一个长度为100的数组,请以优雅的方式求出该数组的前10个元素之和

    1 var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
    2 sum = 0;
    3  
    4 sum = a.slice(0, 10).reduce(function(pre, current) {
    5   return pre + current;
    6 });
    7  
    8 console.log(sum); //55

    11.当项目的某个模块发生问题了,你是怎么定位错误的?你常用的调试工具是什么?

    额外附加:

    发现面试题目很多都是和循环有关的,顺便说一下如何优化循环

    在JavaScript中,我们可以使用 for(;;),  while(),  for(in)  三种循环,事实上,这三种循环中for(in)的效率极差,因为他需要查询散列键,只要可以,就应该尽量少用。

    for(;;)和while循环,while循环的效率要优于for(;;),可能是因为for(;;)结构的问题,需要经常跳转回去。比如

     1  var arr = [1, 2, 3, 4, 5, 6, 7];
     2  var sum = 0;
     3  for (var i = 0, l = arr.length; i < l; i++) {
     4       sum += arr[i];
     5  }
     6 
     7  //可以考虑替换为:
     8 
     9  var arr = [1, 2, 3, 4, 5, 6, 7];
    10  var sum = 0, l = arr.length;
    11  while (l--) {
    12      sum += arr[l];
    13  }
    
    
  • 相关阅读:
    苹果开发者账号证书、授权配置文件设置流程
    JQuery 总结(1) 选择器的使用
    PC和移动端自动识别
    前端获取ip的接口
    AJAX 跨域解决办法
    linux
    复制剪切板实现
    css animation 制作打开动画效果
    弹出层播放视频
    盛世龙图项目总结
  • 原文地址:https://www.cnblogs.com/beidan/p/5285742.html
Copyright © 2011-2022 走看看