两道笔试面试题目

2020-01-14 17:24:53 浏览数 (1)

1、实现类似如下效果 Human(“Tam”) // log Tam .sleep(1000)// wait 1000 log sleep 1000 .say(“hhh”)// log hhh .sleep(2000); // sleep 2000 log 2000 主要就是考察对于js事件循环的应用。

代码语言:javascript复制
function Human(name) {
  console.log(name);
  const queue = [];
  setTimeout(async () => {
    let index = 0;
    while (queue[index]) {
      await queue[index  ]();
    }
  }, 0);
  return {
    say: function(content) {
      queue.push(() => {
        console.log(content);
        return Promise.resolve();
      });
      return this;
    },
    sleep: function(times) {
      queue.push(() => {
        return new Promise(resolve => {
          setTimeout(() => {
            console.log("sleep", times);
            resolve();
          }, times);
        });
      });
      return this;
    }
  };
}
Human("Tam")
  .sleep(1000)
  .say("hhh")
  .sleep(2000);
代码语言:javascript复制
function render(str) {
  return function(obj) {
    return str.replace(/${(w )}/g, function(match, p1) {
      return obj[p1] ? obj[p1] : "";
    });
  };
}
const year = "2017";
const month = "09";
const day = "21";
const str = render("${year}-${month}-${day}")({ year, month, day });
console.log(str);
代码语言:javascript复制
function copy(m) {
  const mLength = (""   m).length;
  let result = [];
  let b = Math.floor(mLength / 2);
  for (let i = 10; i < 10 ** b; i  ) {
    const number =
      String(i)  
      String(i)
        .split("")
        .reverse()
        .join("");
    result.push(number);
    for (let j = 0; j <= 9; j  ) {
      result.push(
        String(i)  
          String(j)  
          String(i)
            .split("")
            .reverse()
            .join("")
      );
    }
  }
  result = result.filter(function(item) {
    return item <= m;
  });
  console.log(result);
}

copy(20000);

0 人点赞