题目一:敏感信息隐藏
// 将字符串中间四个字符隐藏为传入的字符,默认为* // 1. 字符串长度小于等于4,返回字符串长度对应的*,如"1234" => "****" // 2. 若字符串长度为奇数,隐藏中间四个字符,多出来的一个数放后面,如"123456789" => "12****789" // 3. 若字符串长度为偶数,隐藏中间四个字符,如"12345678" => "12****78" const hideSensitive = (str, char = "*") => { const len = str.length; if (len <= 4) return Array(len).fill(char).join(""); const strArr = str.split(""); const isEven = len % 2 === 0; // 写的比较丑陋,实际上不需要分奇偶 if (isEven) { let startIndex = (len >> 1) - 2, endIndex = (len >> 1) + 1; for (let i = startIndex; i < endIndex; i++) { strArr[i] = char; } } else { let startIndex = (len >> 1) - 2, endIndex = (len >> 1) + 1; for (let i = startIndex; i < endIndex; i++) { strArr[i] = char; } } return strArr.join(""); };
题目二:JSON 对象深拷贝
const deepClone = (json, cache = new WeakMap()) => { if (json === null || typeof json !== "object") return json; if (cache.has(json)) return cache.get(json); const copy = Array.isArray(json) ? [] : {}; cache.set(json, copy); Object.keys(json).forEach((key) => (copy[key] = deepClone(json[key], cache))); return copy; };
display: none
和visibility: hidden
的区别面试官问的很有水平
sendBeacon
的使用场景,与fetch
的区别fetch
还有哪些发送请求的方式fetch
支持SSE
吗Webpack
、Vite
、Esbuild
的背景、优劣势Promise.all
的函数,入参是一个异步函数数组,但数组中后一个函数依赖前一个函数的返回值反问:
反问:
面完一小时直接发了意向邮件
#面经##阿里巴巴##爱橙科技##阿里控股##2025届暑期#