js面试题及答案(一)不喜,可放肆喷

1.找出数字数组中最大的元素(使用Match.max函数)
Math.max.apply(null, [1,2,3]);

2.转化一个数字数组为function数组(每个function都弹出相应的数字)
function transition(numArray) {
  var num;
  for (var i = 0, len = numArray.length; i < len; ++i) {
    num = numArray[i];
    numArray[i] = (function (j) {
      return function() {alert(j);}
    }(num));
  }
}

3.给object数组进行排序(排序条件是每个元素对象的属性个数)

4. 实现如下语法的功能:var a = (5).plus(3).minus(6); //2
Number.prototype.plus=function(a){
    return this+a;
    }
Number.prototype.minus=function(a){
    return this-a;
    }
var a = 5;
b=a.plus(3).minus(6);
console.log(b);

5. 实现如下语法的功能:var a = add(2)(3)(4); //9

function add(a) {
  return function(b) {
     a += b;
     return function(c) {
       return a +=c;
     }
  }
}

6.利用JavaScript打印出Fibonacci数(不使用全局变量)
ps:Fibonacci数 1 1 2 3 5 8
代码一:
function fib(num){
    if(num==1 || num==2){
        return 1;
        }
        return arguments.callee(num-1) + arguments.callee(num-2);
    }

代码二:
var fib = (function() {
  var array = [];
 
  return function(n) {
   if (array[n]) return array[n];
    
    if (n < 1) {
      array[n] = 0;
    } else if (n == 1 || n == 2) {
      array[n] = 1;
    } else {
      array[n] = fib(n-1) + fib(n-2);
    }
    
    return array[n];
  }
})();

代码三:
var fib = function(n) {
   if (fib[n]) return fib[n];
    
    if (n < 1) {
      return 0;
    } else if (n == 1 || n == 2) {
      fib[n] = 1;
    } else {
      fib[n] = fib(n-1) + fib(n-2);
    }
    
    return fib[n];
};
代码二,代码三性能较高,内部缓存了一个斐波那契数列的数组,如果之前计算过某个数,就直接返回,不用重新计算了

时间: 2024-10-04 09:58:37

js面试题及答案(一)不喜,可放肆喷的相关文章

今日头条上看到的js面试题和答案

用js判断字符中每个字符出现的次数, 答案是var info = arr.split('').reduce((a,b)=>(console.log(a,b),a[b]++ || (a[b]=1),a),{}); 这里面运用到了es5,6的reduce和箭头函数,琢磨半天才明白,把箭头函数简化成普通函数可以写成这样 var info = arr.split('').reduce(function(a,b){ if(a[b]){ a[b]++ ; }else{ a[b]=1; } return a;

JS面试题及答案总结

1. 截取字符串abcdefg的efg  <div id="test">abcdefg</div> var mytext=document.getElementById("test"); var myvalue=mytext.innerHTML; var jiequ=myvalue.substring(4); 2. 写出一下运算结果  alert(typeof(null))  // object alert(typeof(undefined)

前端js面试题

以下都是网上整理出来的JS面试题,答案仅供参考. /2,截取字符串abcdefg的efg//alert('abcdefg'.substring(4)); //3,判断一个字符串中出现次数最多的字符,统计这个次数/*var str = 'asdfssaaasasasasaa';var json = {}; for (var i = 0; i < str.length; i++) {        if(!json[str.charAt(i)]){                json[str.c

网上整理的JS面试题

以下都是网上整理出来的JS面试题,答案仅供参考. /2,截取字符串abcdefg的efg//alert('abcdefg'.substring(4)); //3,判断一个字符串中出现次数最多的字符,统计这个次数/*var str = 'asdfssaaasasasasaa';var json = {}; for (var i = 0; i < str.length; i++) {        if(!json[str.charAt(i)]){                json[str.c

10个常见的Node.js面试题

如果你希望找一份有关Node.js的工作,但又不知道从哪里入手评测自己对Node.js的掌握程度. 本文就为你罗列了10个常见的Node.js面试题,分别考察了Node.js编程相关的几个主要方面. 在进入正文之前,需要提前声明两点: 这些问题只是Node.js知识体系的一个局部,并不能完全考察被面试者的实际开发能力. 对现实世界开发中遇到的问题,需要的是随机应变与团队合作,所以你可以尝试结对编程. Node.js面试题列表 什么是错误优先的回调函数? 如何避免回调地狱? 如何用Node来监听8

腾讯web前端开发工程师笔试题及答案

1. 如何实现事件委托? 首先要知道什么是事件委托. 考虑一个列表,在li的数量非常少的时候,为每一个li添加事件侦听当然不会存在太多性能方面的问题,但是当列表非常的长,长到上百上千甚至上万的时候(当然只是一个解释,实际工作中很少遇到这么多li的情况),为每个li添加事件侦听就会对页面性能产生很大的影响. 就像下面这段代码: <!DOCTYPE HTML><html><head><meta charset="utf-8" /><ti

Node.js 面试问题及答案(2017 版)

阅读原文 两年前,我们发布了我们的第一篇关于 Node.js 面试的文章 Node.js 面试常见问题和答案,近两年,JavaScript 和 Node.js 生态系统有了很多更新和发展,因此,是该更新这些面试问题和答案的时候了. 免责声明(重要) 仅仅通过面试问题去评价一个面试者,从来都不是一个好的选择.但是这些问题可以让你大体了解面试者在 Node.js 开发上的经验. 当然,这些问题并不能全面反映一个人的思维方式和开发习惯. 我相信,开发中遇到的问题,更能反映面试者的知识水平 - 所以,我

Android 面试题及答案(2)

1.Activity相关.launchmode,OnSaveInstnceState,生命周期等. 4种默认的launchmode,以及OnNewIntent的回调. OnNewIntent->OnRestart->OnStart->onResume OnActivity->OnResume. OnNewIntent ,OnActivityResult? OnNewIntent launchmode with singletask or singleInstance. but if

jQuery经典面试题及答案精选(转)

jQuery是一款非常流行的Javascript框架,如果你想要从事Web前端开发这个岗位,那么jQuery是你必须掌握而且能够熟练应用的一门技术.本文整理了一些关于jQuery的经典面试题及答案,分享给正要面试Web开发岗位的同学. 问题:jQuery的美元符号$有什么作用? 回答:其实美元符号$只是”jQuery”的别名,它是jQuery的选择器,如下代码: $(document).ready(function(){ }); 当然你也可以用jQuery来代替$,如下代码: jQuery(do