自学内容网 自学内容网

2024年腾讯外包面试题(微创公司)

笔试:

1、判断异步执行顺序
  console.log(1);
  setTimeout(()=>{
    Promise.resolve().then(()=>{
      console.log(2);
    })
    console.log(3);
  },0);
  new Promise ((resolve)=>{
    for(let i=0; i<=1000;i++ ){
      if(i===1000){
        resolve();
      }
    }
    console.log(4);
  }).then(()=>{
      console.log(5);
    });
  console.log(6);

执行顺序为:1 4 6 5 3 2

2、服务器api返回给前端的地址数据需要脱敏,脱敏规则如下:

1位字符,不脱敏

2-4位字符,第1位脱敏(如原数据为“南山区”,脱敏后数据为“*山区”)

5-9位字符,第3-5位脱敏(如原数据为“南山区科技二路”,脱敏后数据为“南山***二路”)

10位以上,倒数3-5位脱敏(如原数据为“南山区海天二路68爱德华小区”,脱敏后数据为“南山区海天二路***小区”)

function desensitization(address) {
//TODO:
}

结果代码(推荐第一种,代码更简洁):

第一种方法:

 

第二种方法:


 

3、给定一个整数数组a,其中1≤a[i]≤n (n为数组长度),其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在0(n)时间复杂度内解决这个问题吗? 

function findRepeat2Element(arr: number[]) {
//TODO:
}

结果代码:

4、给定一个只包括('(',')','{','}','[',']',的字符串s,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合。 
示例1:
输入:s="()"
输出:true
示例2:
输入:s="{[()]}"
输出:true
示例3:
输入:s="("
输出:false
示例4:
输入:s="{(]}"
输出:false

function isValid(str) {
 //TOTO:
}

结果代码:

 

5、实现一个debounce方法

function debounce(fn,wait,immediate) {
 //TOTO:
}

 实现代码:

<script>
/**
 * @desc 函数防抖
 * @params fn 函数
 * @params wait 延迟执行毫秒数
 * @params immediate true 表立即执行,false 表非立即执行
 */
function debounce(fn,wait,immediate) {
    let timeout;
    return function () {
        let context = this;
        let args = arguments;

        if (timeout) clearTimeout(timeout);
        if (immediate) {
            let callNow = !timeout;
            timeout = setTimeout(() => {
                timeout = null;
            }, wait)
            if (callNow) fn.apply(context, args)
        }
        else {
            timeout = setTimeout(() => {
                fn.apply(context, args)
            }, wait);
        }
    }
}


</script>

 


原文地址:https://blog.csdn.net/leng0920/article/details/142820057

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!