首页 > 小米前端秋招面经-一面凉
头像
会飞的猪123
编辑于 2021-10-14 10:10
+ 关注

小米前端秋招面经-一面凉

1. 做题

  • 实现Promise.all

    Promise.prototype.all = function(promises) {
      let results = [];
      let promiseCount = 0;
      let promisesLength = promises.length;
      return new Promise(function(resolve, reject) {
        for (let val of promises) {
          Promise.resolve(val).then(function(res) {
            promiseCount++;
            // results.push(res);
            results[i] = res;
            // 当所有函数都正确执行了,resolve输出所有返回结果。
            if (promiseCount === promisesLength) {
              return resolve(results);
            }
          }, function(err) {
            return reject(err);
          });
        }
      });
    };

    https://zhuanlan.zhihu.com/p/41502945

  • 实现观察者模式

    // 发布订阅模式
    class EventEmitter {
        constructor() {
            // 事件对象,存放订阅的名字和事件
            this.events = {};
        }
        // 订阅事件的方法
        on(eventName,callback) {
           if (!this.events[eventName]) {
               // 注意时数据,一个名字可以订阅多个事件函数
               this.events[eventName] = [callback]
           } else  {
              // 存在则push到指定数组的尾部保存
               this.events[eventName].push(callback)
           }
        }
        // 触发事件的方法
        emit(eventName) {
            // 遍历执行所有订阅的事件
           this.events[eventName] && this.events[eventName].forEach(cb => cb());
        }
        // 移除订阅事件
        removeListener(eventName, callback) {
            if (this.events[eventName]) {
                this.events[eventName] = this.events[eventName].filter(cb => cb != callback)
            }
        }
        // 只执行一次订阅的事件,然后移除
        once(eventName,callback) {
            // 绑定的时fn, 执行的时候会触发fn函数
            let fn = () => {
               callback(); // fn函数中调用原有的callback
               this.removeListener(eventName,fn); // 删除fn, 再次执行的时候之后执行一次
            }
            this.on(eventName,fn)
        }
    }

    https://www.jianshu.com/p/e0575e17de2a

  • 实现文件并行下载

    不会

2. XSS和CRSF攻击。如果小米商城存在XSS和CRSF的漏洞,如何攻击获取用户数据?

3. 做题。事件循环。

更多模拟面试

全部评论

(4) 回帖
加载中...
话题 回帖