中级前端开发JS面试题

web前端全栈开发视频|目前最流行的前端开发工具|前端微信开发注意事项

第一道题是代码填空题

已知如下代码
[code]var $=function(element){
return document.getElementById(element);
};

var $A=function(iterable){
if(!iterable) return [];
if(iterable.toArray){
return iterable.toArray();
}
else{
var result=[];
for(var i=0,length=iterable.length;i<length;i++){
result.push(iterable[i]);
}
return result;
}
};

Function.prototype.bind=function(){
var _method=this,args=$A(arguments),object=args.shift();
return function(){
if(typeof $A==”function”){
return _method.apply(object,args.concat($A(arguments)));
}
}
};

function addHandler(element,name,observer,useCapture){
if(element.addEventListener){
element.addEventListener(name,observer,useCapture);
}
else{
element.attachEvent(“on”+name,observer);
}

};

//将下面的代码填写完整
var MtimeConsole={

      getInput:function(){
            //请在这里获取DOM节点元素

      },

      onClick:function(){
            var inputString=this.getInput();
            //请在这里实现逻辑

      },

      load:function(){
            //请在这里写初始化操作

      }

}
MtimeConsole.load();[/code]

第二题:上一题中出现了对Function的扩展,Function.prototype.bind,请谈谈这种扩展的优势
第三题:一列数的规则如下:1,1,2,3,5,8,13,21,34… 求第30位数是多少,(用递归算法实现)
第四题:请写出你用过的javascript框架及对他们的评价
第五题:请写出你对javascript性能优化

—————————————–####答案仅供参考—————————————–

第一题:

[code]var MtimeConsole={

      getInput:function(){
            //请在这里获取DOM节点元素
            return $("inputText").value;
      },

      onClick:function(){
            var inputString=this.getInput();
            //请在这里实现逻辑
            var outputString= inputString.replace(/can\s/,"").replace(/bad\s/,"").replace(/the\s/,"");
            return alert(outputString);
      },

      load:function(){
            //请在这里写初始化操作
            var oBtn=$("okButton");
            var observer=this.onClick;                
            addHandler(oBtn,"click",observer.bind(this),false);

      }

}[/code]

第二题

优势1:解决低版本浏览器不兼容bind函数
优势2:方法定义在Function原型上,所有函数都可以使用

第三题

[code]function fb(n){
if(n<=2){
return 1;
}
return fb(n-1)+fb(n-2);
}
console.log(fb(30));[/code]

第四题:我没用过框架..

第五题:

1.减少http请求次数和请求资源大小,比如合并和压缩js文件;
2.缓存dom,ajax;
3.算法上优化;
4.如果用了jquery,可以从jquery代码中进一步优化,思路同上

前端开发超级玛丽微信|主流前端开发编辑器知乎|前端开发个人博客知乎

赞(0)
前端开发者 » 中级前端开发JS面试题
64K

评论 抢沙发

评论前必须登录!