小米Web前端JavaScript面试题

面试题目

一、

请定义这样一个函数

function repeat (func, times, wait) {

}

这个函数能返回一个新函数,比如这样用

var repeatedFun = repeat(alert, 10, 5000)

调用这个 repeatedFun ("hellworld")

会alert十次 helloworld, 每次间隔5秒

二、

写一个函数stringconcat, 要求能

var result1 = stringconcat("a", "b")  result1 = "a+b"

var stringconcatWithPrefix = stringconcat.prefix("hellworld");

var result2 = stringconcatWithPrefix("a", "b")  result2 = "hellworld+a+b"

小菜解法

这两道题,考的就是闭包,废话不多说,直接上代码。

 1 /**
 2  * 第一题
 3  * @param func
 4  * @param times
 5  * @param wait
 6  * @returns {repeatImpl}
 7  */
 8 function repeat (func, times, wait) {
 9     //不用匿名函数是为了方便调试
10     function repeatImpl(){
11         var handle,
12             _arguments = arguments,
13             i = 0;
14         handle = setInterval(function(){
15             i = i + 1;
16             //到达指定次数取消定时器
17             if(i === times){
18                 clearInterval(handle);
19                 return;
20             }
21             func.apply(null, _arguments);
22         },wait);
23     }
24
25     return repeatImpl;
26 }
27
28 //测试用例
29 var repeatFun = repeat(alert, 4, 3000);
30
31 repeatFun("hellworld");
32
33
34 /**
35  * 第二题
36  * @returns {string}
37  */
38 function stringconcat(){
39     var result = [];
40
41     stringconcat.merge.call(null, result, arguments);
42     return result.join("+");
43 }
44
45 stringconcat.prefix = function(){
46     var _arguments = [],
47         _this = this;
48
49     _this.merge.call(null, _arguments, arguments);
50
51     return function(){
52         var _args = _arguments.slice(0);
53
54         _this.merge.call(null, _args, arguments);
55         return _this.apply(null, _args);
56     };
57 };
58
59 stringconcat.merge = function(array, arrayLike){
60     var i = 0;
61
62     for(i = 0; i < arrayLike.length; i++){
63         array.push(arrayLike[i]);
64     }
65 }
66
67
68 //测试用例
69 var result1 = stringconcat("a", "b"); //result1 = "a+b"
70 var result3 = stringconcat("c", "d"); //result1 = "a+b"
71
72 var stringconcatWithPrefix = stringconcat.prefix("hellworld");
73 var stringconcatWithPrefix1 = stringconcat.prefix("hellworld1");
74
75 var result2 = stringconcatWithPrefix("a", "b"); //result2 = "hellworld+a+b"
76 var result4 = stringconcatWithPrefix1("c", "d"); //result2 = "hellworld+a+b"
77
78 alert(result1);
79 alert(result2);
80 alert(result3);
81 alert(result4);
时间: 2024-10-08 04:57:24

小米Web前端JavaScript面试题的相关文章

web前端工程师 面试题

今天刚结束一场面试(含笔试),对自己的表现不太满意,感觉没有发挥好应有的水平,也只能怪自己平时没有及时积累和整理知识,准备也不充分. 就不扯那么多了,下面是我面试时,没能答上或者觉自己回答的不够好的题目. 1.position 属性规定元素的定位类型 值 描述 absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位. 元素的位置通过 "left", "top", "right" 以及 "bottom&

web前端常见笔试题总结

一.常见javascript笔试题 1.  var a = 1; delete a; console.log( typeof a); //number 显示生命的全局变量不能被删除 如果是 a = 1;   delete a; console.log(typeof a) //undefined; 隐式声明的全局变量可以删除 2.用一行代码实现字符串翻转 如: str="abcdefg",翻转后str="gfedcba"; var a = str.split('').

Web前端面试笔试题总结

最近一段时间要毕业了,忙着找工作,见过不少笔试面试题,自己总结了一些加上网上找的一些整合了一下.答案暂时都东拼西凑出来了,但是还是先不发出来,一方面是答案并不是唯一的并且自己的答案不能保证对,另一方面希望看到本文的伙伴能自己去找答案,毕竟,技术只有自己真正理解了才是自己的东西,共勉. 小白第一次发文,恭请指点. Web前端面试笔试题 Html+css 1.对WEB标准以及w3c的理解与认识. 2.Xhtml和html有什么区别. 3.css的引入方式有哪些?link和@import的区别是? 4

小猿圈之2019年前端JavaScript面试题(二)

小猿圈前端讲师今天继续给你总结js面试题,前面一篇文章咱们已经有一片js基础部分面试题,今天小猿圈web讲师为你讲解js前端应用设计问题,一定要好好看哦,为了能赢在其他人前面. JavaScript前端应用设计问题 1.解释单向数据流和双向数据绑定. Angular1.x基于双向数据绑定,而React,Vue,Elm等基于单向数据流架构. 2.单向数据流架构在哪些方面适合MVC? MVC拥有大约50年的悠久历史,并已演变为MVP,MVVM和MV*.两者之间的相互关系是什么?如果MVC是架构模式,

nodejs 和web前端JavaScript什么区别

web前端javascript组成: ECMAScript,(是js的标准,js是它的具体实现和扩展,它描述语言的语法和基本对象,如:语法,运算符,语句,继承机制,数据结构以及一些内置对象) DOM(文档对象模型),描述处理网页内容的方法和接口,将整个文档document解析成dom树供用户使用js对文档进行处理. BOM(浏览器对象模型),描述可以和浏览器窗口交互的方法和接口(对象结构),如:window对象,history.location.navigator等. nodejs除了语言基础E

web前端工程师面试题

[HTML && CSS]--来自百度文库 1. Doctype? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义? Doctype 声明位于文档中的最前面的位置,处于标签之前.此标签可告知浏览器文档使用哪种 HTML 或XHTML 规范. 该标签可声明三种DTD 类型,分别表示严格版本.过渡版本以及基于框架的 HTML 文档. 当浏览器厂商开始创建与标准兼容的浏览器时,他们希望确保向后兼容性.为了实现这一点,他们创 建了两种呈现模式:标准模式和混杂模式(quirks mode)

web前端+javascript+h5电子书籍和实战分享

有很多前端伙伴们学习前端很多了,但是如何能成为优秀的程序员呢,前端必学的知识点相信学习前端的伙伴们心里都非常清楚.主要的三要素包括HTML.CSS和JavaScript.那么学好JavaScript是很重要的一个环节.今天就推荐下学习JavaScript技术需要看的10本书. 1.高级——JavaScript框架设计 2.高级——JavaScript设计模式 3.高级——单页Web应用:JavaScript从前端到后端 4.高级——JavaScript面向对象精要 5.中级——编写可维护的Jav

web前端开发面试题

转自:http://segmentfault.com/a/1190000000465431 问题 此部分用于自测.如有疑惑,可参看后文的答案部分. HTML Doctype作用? 严格模式与混杂模式如何区分?它们有何意义? 行内元素有哪些?块级元素有哪些? 空(void)元素有那些? 介绍一下CSS的盒子模型? link 和@import 的区别是? CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算? CSS3新增伪类有那些? 如何居中div?如何居中一个浮动元素? 浏览器的内核分别是

web前端javaScript基础第六天

目前在从事前端工作,特别总结javaScript基础知识供大家学习,本人特总结一下使用方法献给目前正在学习web前端的小伙伴们,希望你们在前端领域闯出属于自己的一片天空来,需要sublime软件安装包的或者前端资料的,可以加我创建的前端群 937268047 函数:变量作用域:js只有函数能够关住变量的作用域全局变量局部变量:在函数内部声明的变量,只能在函数内部使用 函数的形参是局部变量,形参只能在函数内部使用全局变量作用:一个变量可以被多个函数改变,这个变量一定是全局变量(信号量) 函数作用域