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)!