拼多多3.12 前端笔试 代码题

笔试的时候写的3题都跑不起来。。一堆错误,整理了下能跑的版本

(不保证是对的

第一题:

<body>
  <div id="welcome"></div>
</body>

<script>
  function generateAndInsertContent() {
    const beginTime = new Date('2023-1-1').getTime();
    const endTime = new Date('2024-1-1').getTime() - (24 * 60 * 60 * 1000);
    const halfYear = 180 * 24 * 60 * 60 * 1000;
    const today = new Date();
    let todayTime = today.getTime();
    const dayNums = Math.floor((todayTime - beginTime) / (1000 * 60 * 60 * 24));
    let str = `今天是${today.getUTCFullYear()}年的第<span style=\"color:red;\">${dayNums}<\/span>天,`;
    if(todayTime - beginTime <= halfYear) {
       str += '你好,上半年!';
    } else if(todayTime - beginTime > endTime && todayTime - beginTime < (new Date('2024-1-1').getTime())) {
        str += '明年见!';
    } else {
        str += `再见了,上半年!你好,下半年!`;
    }
    document.getElementById('welcome').innerHTML = str;
}

generateAndInsertContent();
</script>

第二题:

<div id="card" class="card">
  <div id="quickBtn" class="quick-btn">quick look</div>
</div>

<script>
  function clickCard(e) {
    alert('card click');
  }
  function clickBtn(e) {
    e.stopPropagation();
    alert('quick look click');
  }
  const card = document.getElementById('card');
  card.addEventListener('click', clickCard);
  const btn = document.getElementById('quickBtn');
  btn.addEventListener('click', clickBtn);
  card.addEventListener('mouseenter', function() {
    btn.style.display = 'block';
  });
  card.addEventListener('mouseleave', function() {
    btn.style.display = 'none';
  });
</script>

<style>
.card {
  position: relative;
  width: 256px;
  height: 256px;
  background-color: #f4f4f4;
}
.quick-btn {
  display: none;
  text-align: center;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 92px;
  height: 27px;
  padding: 5px;
  font-size: 16px;
  background-color: white;
  border: 1px solid #ddd;
  border-radius: 15px;
}
</style>

第三题:

async function preloadImage(imgUrls, timeout) {
    let allOk = true;   //  x秒内是否全部响应完成
    await Promise.all(imgUrls.map(imgUrl => requestImage(imgUrl, new Date().getTime()))
      .map(item => {  //  捕获所有 promise 的 reject,输出加载失败信息
        return item.catch(errMsg => {
          console.log(errMsg)
        })
      })).then((reslist) => {
        reslist.forEach(costTime => {
          if(costTime > timeout) {  //  有请求超时了
            allOk = false;
          }
        })
      })
      
  if(!allOk) {
    console.log(`resource load cost over ${timeout} ms`);
  }
}

//  模拟请求单张图片,入参:单个图片url、开始请求的时间
const requestImage = async(imgUrl, beginTime) => new Promise((resolve, reject) => {
  if(Math.random() < 0.7)  //    一定概率是请求成功的
    setTimeout(() => resolve(new Date().getTime() - beginTime), 1000);
  else
    setTimeout(() => reject(`${imgUrl} load fail`), 1000);
});

preloadImage(['1.png', '2.png', '3.png'], 1002);

#笔试复盘##拼多多笔试#
全部评论
最后一题应该是promise.allsettled + race
2 回复 分享
发布于 2023-03-19 15:37 江苏
兄弟,收到面试通知了吗
2 回复 分享
发布于 2023-03-15 18:48 陕西
最后一题promise.all+race
2 回复 分享
发布于 2023-03-12 23:21 湖北
xd 收到面试消息了吗
1 回复 分享
发布于 2023-03-18 12:31 广东
兄弟有面试消息了吗
1 回复 分享
发布于 2023-03-14 10:40 山东
大佬这个是实习嘛
点赞 回复 分享
发布于 2023-03-13 16:34 湖南
前端笔试没有考算法题吗
点赞 回复 分享
发布于 2023-03-12 23:44 安徽
最后一题可以用promise.race吗
点赞 回复 分享
发布于 2023-03-12 22:44 湖北

相关推荐

06-26 15:58
已编辑
扬州大学 前端工程师
之前都没和pdd交流过,突然发邮件让参加个性测评,既然来了就上呗,之后说成功应聘前端研发工程师,然后笔试,昨天通知今天面试,面试第一题问标签有哪些???之后的题目也是基础中的基础,虽然我有的没答上来,有了解什么情况的吗一面答的我都没眼看,position&nbsp;sticky忘了,var变量提升打印undefined也错了,还能约我面试,一面说上海,上六天,要加班,难道这么缺人吗二面三个题,allsettled实现,数组展平去重,格式化数字,三位加个逗号,保存几位小数,后面就是vue生命周期,组件消息传递,项目啥的,我看其他大厂面试哪有这么容易,我个人觉得写得一般,面试官说不错,还是没搞清楚状况6月10日主管面,第一题考变量提升,new构造函数,第二题获取页面元素所有标签,去重打印标签名,第三题并发请求,按顺序且最快打印,没写出来,降低难度按顺序打印,之后并发请求按顺序打印明确作息11&nbsp;11&nbsp;6,海外电商整体三轮面下来真不算难,可能缺人降低了难度6.&nbsp;15&nbsp;hr面,根本不是聊家常,上来问我对业务和职位的理解,不知道如何回答,之后问我作息和节奏的理解,只知道11116,中间还有啥问题已经被问懵不记得了,之后问什么时候开始找工作的,有没有offer,薪资等,二三周出结果。压力最大的一面6.&nbsp;17hr电话谈薪,两万六到三万达不到,问能给多少不回答,一直问我最低能接受多少,没其他出路报了两万三,最后问给了offer一定来吗6.&nbsp;25信息确认了希望顺利吧6.&nbsp;26offer
点赞 评论 收藏
分享
评论
13
70
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务