当前位置: 首页 > 编程笔记 >

小米公司JavaScript面试题

慕宜民
2023-03-14
本文向大家介绍小米公司JavaScript面试题,包括了小米公司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"

小菜解法

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


/**

 * 第一题

 * @param func

 * @param times

 * @param wait

 * @returns {repeatImpl}

 */

function repeat (func, times, wait) {

    //不用匿名函数是为了方便调试

    function repeatImpl(){

        var handle,

            _arguments = arguments,

            i = 0;

        handle = setInterval(function(){

            i = i + 1;

            //到达指定次数取消定时器

            if(i === times){

                clearInterval(handle);

                return;

            }

            func.apply(null, _arguments);

        },wait);

    }

    return repeatImpl;

}

//测试用例

var repeatFun = repeat(alert, 4, 3000);

repeatFun("hellworld");

/**

 * 第二题

 * @returns {string}

 */

function stringconcat(){

    var result = [];

    stringconcat.merge.call(null, result, arguments);

    return result.join("+");

}

stringconcat.prefix = function(){

    var _arguments = [],

        _this = this;

    _this.merge.call(null, _arguments, arguments);

    return function(){

        var _args = _arguments.slice(0);

        _this.merge.call(null, _args, arguments);

        return _this.apply(null, _args);

    };

};

stringconcat.merge = function(array, arrayLike){

    var i = 0;

    for(i = 0; i < arrayLike.length; i++){

        array.push(arrayLike[i]);

    }

}

//测试用例

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

var result3 = stringconcat("c", "d"); //result1 = "a+b"

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

var stringconcatWithPrefix1 = stringconcat.prefix("hellworld1");

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

var result4 = stringconcatWithPrefix1("c", "d"); //result2 = "hellworld+a+b"

alert(result1);

alert(result2);

alert(result3);

alert(result4);

 类似资料:
  • #在找工作求抱抱# #如何判断面试是否凉了# #找工作中的意难平# #2023届春招# TCP和UDP的区别 C++中多态的使用(期末考试即视感) C++中类和结构体的区别(答得不好) C++空类中有什么函数(满脑子big Five,5个,用的时候都记得,名字真背不全) 数据库没问 项目也没问…… 感觉真不怎么样

  • 1、数据库表里存了酒店坐标(经度、维度),给定一个坐标,推荐最近的十家,如何优化运算速度 2、表设有自增列,insert之后,mysql和oracle怎样获取新插入的数据,有什么差别 ? 3、数据库表里存id、score两个字段, 根据分数高低查出金牌银牌铜牌获得者(金牌银牌铜牌可能有并列情况) 4、拦截器常用来干啥? 5、源代码怎么管理?工作分支、发布分支、测试分支怎么管理?

  • 线上面试,先问我是哪里人,是否准备在天津长期发展。 问了一些比较基础的,因为我提到了我在学一些前端,所以前后端都问了。 提到:springboot常用注解,拆箱装箱,js的this对象,vue2数据绑定原理,hashmap的优势,javaweb四大域对象。没怎么问项目。。。 最后就是介绍公司,说是主要负责桥梁隧道工程的项目信息化管理,公司主要JS会用的多一点(那你招java干嘛?) 薪资方面,一天

  • boss上投的,上海司睿杰建科,回复后第二天直接约面了,很爽快  腾讯会议30分钟,没开视频,都是常规八股  自我介绍,专门问了一下学校(吉尔大学🤣)  介绍一下你比较熟悉的数据结构:我提了一嘴跳表:对比哈希表什么情况下用跳表效果更好?  介绍项目,提问技术难点  go map的底层实现  go slice的底层实现  介绍一下innodb?你是怎么学习的?  通常情况下你会怎么去设计数据库? 

  • 背景:双非二本 公司很小,不到20个人 一共三面 项目整体架构 登录逻辑描述 权限怎么分配的 不同用户需要同一个权限呢 权限存在哪里 权限表设计结构 token跟session有什么区别,那你们这套系统中又有什么区别 shrio整体逻辑 数据怎么校验的 日志怎么实现的 mq解耦日志的实现 aop的具体实现 为什么用到分表 你是以研究的方向去设计的这套日志保存系统吗? 你平时哪里还用到了哪些aop场

  • 还是先做题,十道前端十道后端,做了四十分钟, 之后面试官来对着我简历拷打。 问: mysql索引失效场景 mysql存储引擎区别,行锁 linux命令说几个 autowired和resource区别 然后就是问项目了,问我怎么实现优惠券抢购,有没有完成购物车模块等等。。 面试总时长得有一个多小时了,同样是小公司,问的问题天差地别。感觉上一个好像kpi,到现在也没消息。