0%

5.15拼多多笔试

5.15 拼多多笔试

三个题目

1. Promise

有两个信号0和1。

  • 先发送信号 1
  • 200ms 后发送信号 0
  • 100ms 后发送信号 1
  • 150ms 后发送信号 0
  • 在 300ms 重复以上过程 5 次
var delay = function(s) {
    retrun new Promise(function(resolve, reject) {
        setTimeout(resolve, s);
    });
};

var n = 5;

while(n--){
    delay().then(function(){
        Signal(1);
        return delay(200);
    }).then(function(){
        signal(0);
        return delay(100);
    }).then(function(){
        signal(1);
        return delay(150);
    }).then(function(){
        signal(0);
        return delay(300);
    })
}

2. 链表实现大整数加法

有两个链表 Listnode,头指针代表这个大整数的个位,往后是十位、百位,以此类推。用链表实现大整数加法。

// Listnode a, Listnode b 代表两个多位正整数;
var function plus(a, b){
    var sum = new Listnode;
    sum.head = a.head + b.head;
    while (a.next || b.next) {
        sum.next = a.next + b.next;
    }
    retrun sum;
}

3. Dom操作

<ul>
    <li>item1</li>
    <li>item2</li>
    <li>item3</li>
    <li>item4</li>
</ul>

有一个列表,默认背景为白色。

  1. 进入 ul 时,里面的 li 变为灰白相间的颜色;
  2. 进入 li 时,li 变成浅黄色;
  3. 离开 li 还在 ul 内部时,恢复到 1 的情况;
  4. 离开 ul 时变成全白。

使用鼠标事件

// 获取UL元素
var ul = document.getElementsByTagName('ul')[0];

// 获取所有LI元素
var liArr = ul.getElementsByTagName('li');

// 1. 当鼠标移入UL时,按Li的奇偶将背景颜色设置为灰色和白色
ul.onmouseover = function() &#123;
  for (var i = 0; i < liArr.length; i++) &#123;
    if (i % 2 === 0) &#123;
      liArr[i].style.backgroundColor = '#f2f2f2'; // 设置偶数项的背景色为 #f2f2f2
    &#125; else &#123;
      liArr[i].style.backgroundColor = '#fff'; // 设置奇数项的背景色为 #fff
    &#125;
  &#125;
&#125;;

// 2. 当鼠标移入特定Li时,对应的背景颜色设置为浅黄色
for (var i = 0; i < liArr.length; i++) &#123;
  liArr[i].onmouseover = function() &#123;
    this.style.backgroundColor = '#ffffe0'; // 设置当前LI元素的背景色为 #ffffe0
  &#125;
  // 3. 如果鼠标移出了LI,但还在UL内部时,恢复1所描述的背景颜色;
  liArr[i].onmouseout = function() &#123;
    ul.onmouseover();
  &#125;
&#125;

// 4. 如果鼠标移出了UL则全部变回白色背景。
ul.onmouseout = function() &#123;
  for (var i = 0; i < liArr.length; i++) &#123;
    liArr[i].style.backgroundColor = '#fff'; // 设置所有LI元素的背景色为 #fff
  &#125;
&#125;;