2023年7月字节前端青训营入营题目记录(大题)

前言:

不一定是完整的题目内容,但意思差不多是一个意思

1.实现一个url解析成对象的函数:

javascript 复制代码
 function ParseParams(url: string): Record<string, any> {
    const paramsstr = url.split("?")[1];
    const paramsArr = paramsstr.split("&");
    let paramsobj: Record<string, any> = {};
    paramsArr.forEach((item) => {
      if (/=/.test(item)) {
        //处理有值的参数
        let [key, val]: [string, any] = item.split("=") as [string, any]; //分割key和value;
        val = decodeURIComponent(val); //中文解码;
        val = /^\d+$/.test(val) ? parseInt(val) : val; //是否需要转化成数字
        if (paramsobj.hasOwnProperty(key)) {
          //看看是否有这个,如果已经有了,则创建一个数组,添加进去
          paramsobj[key] = [].concat(paramsobj[key], val);
        } else {
          paramsobj[key] = val;
        }
      } else {
        paramsobj[item] = true;
      }
    });
    return paramsobj;
  }

这个题差不多是这个意思,就是url后面的param,转成对象的形式,值得注意的是需要考虑一下特殊情况比如:

  • null和undenfind
  • 参数中"=","&"等特殊字符的情况
  • key多次出现,转成数组的情况

但是上面的代码测试没过全,还需要大神的指点

1.实现一个PromiseLimit函数:

题目需要满足以下要求

1.实现 PromiseLimit函数;

  1. PromiseLimit 函数接受一个整数 limit, 表示最大并发数;

  2. PromiseLimit可以通过 enqueue 方法添加任务, 该方法接

受一个返回Promise 的函数, 4.将其加入到任务队列中并返

回一个新的 Promise 对象, 用于获取任务的结果;

4.当任务队列中有空闲位置时, 该任务将被立即执行; 否则,该任务将被添加到等待队列中, 等待其他任务完成后再执行;

5.当任务执行完成时, 无论成功或失败, 都应该将其从任务队列中移除并执行下一个任务:

enqueue 方法返回的 Pronise对象应该能够获取任务的执行结果;

6.支持 Promise. all 等待所有任务完成,并获取它们的结果;

7.可以处理任务执行出错的情况。

GPT4真强大

相关推荐
开开心心就好4 分钟前
视频播放器完美解码集成三款播放器切换使用
前端·人工智能·智能手机·电脑·音视频·virtualenv·pygame
Sterting6 分钟前
组件通信:Props 与 Emit
前端·vue.js
东方老白13 分钟前
iOS 面试题
前端
hunterandroid32 分钟前
Compose LazyColumn 性能优化:从卡顿到流畅的大列表治理
前端
sakiko_1 小时前
Swift学习笔记39-实战注意事项
前端·笔记·学习·swift
海带紫菜菠萝汤1 小时前
MSE (Media Source Extensions) 实战:流媒体分块加载与自适应码率
前端·javascript·音视频
@小匠1 小时前
Spring Boot Nacos绑定 Map 时中文 key 导致启动失败:一次从复现到源码的排查实录
java·开发语言·前端
黄华SJ520it1 小时前
顶俏洗衣液模式制度开发介绍:S2B2C社交分销+多门店核销系统全解析
前端·数据库·小程序·零售·系统开发
晓说前端1 小时前
TypeScript 核心语法应用 —— Vue 3 中的使用(上)
前端·typescript
No Silver Bullet2 小时前
Vue进阶(贰幺叁)vue.config.js 中 productionSourceMap 作用详解
前端·javascript·vue.js