本次面经共 1 轮。每轮单独成文;轮次标题重复时,以“第 N 轮”和稳定的轮次 ID 区分。
轮次导航
- 第 1 轮 · 一面(21 道题)
← 已是第一轮 · 返回本次面经 · 已是最后一轮 → 本轮要点: - 考点覆盖:网络协议(HTTP/HTTPS、OSI、WebSocket、QUIC、CORS)、安全(XSS、缓存投毒)、性能优化(缓存、懒加载/预加载)、工程化(版本更新、路由)、Vue框架细节。 难易度:中等偏上。前6题基础网络必会,7-10题需理解协议差异与实战场景,11-16题偏重安全与缓存的落地策略,17-20题考察框架原理与工程思维,梯度合理但深度要求高。 本轮共 21 道题。答案默认折叠,便于先自行作答。 1. 统计出现次数最多的字符以及出现的次数 题目描述: 编写一个函数,接收一个字符串作为输入,统计并返回出现次数最多的字符及其出现的次数。如果有多个字符出现次数相同且最多,则返回所有这些字符及其出现次数。 输入输出要求: 输入:一个字符串(只包含字母和数字)。 输出:一个对象,包含出现次数最多的字符及其出现次数。 示例: const input = "aabbccddde"; const result = mostFrequentChar(input); console.log(result); // 输出:{ a: 2, b: 2, c: 2, d: 3, e: 1 } 题目要点 时间复杂度:O(n),需要遍历字符串两次 空间复杂度:O(k),k为不同字符的数量 关键点:正确理解题意,返回所有出现次数最多的字符 优化:可以在统计过程中同时记录最大值,减少遍历次数 参考答案 这道题需要统计字符串中每个字符的出现次数,然后找出出现次数最多的字符。需要注意的是,题目要求如果有多个字符出现次数相同且最多,要返回所有这些字符。 解题思路: 遍历字符串,使用Map或对象统计每个字符的出现次数 找出最大出现次数 筛选出所有达到最大出现次数的字符 返回结果对象 代码实现: function mostFrequentChar(str) { // 边界情况处理 if (!str || str.length === 0) { return {}; } // 统计每个字符的出现次数 const charCount = {}; for (let char of str) { charCount[char] = (charCount[char] || 0) + 1; } // 找出最大出现次数 const maxCount = Math.max(...Object.values(charCount)); // 筛选出所有达到最大出现次数的字符 const result = {}; for (let [char, count] of Object.entries(charCount)) { if (count === maxCount) { result[char] = count; } } return result; } // 优化版本:使用Map,一次遍历完成 function mostFrequentCharOptimized(str) { if (!str || str.length === 0) { return {}; } const charCount = new Map(); let maxCount = 0; // 统计字符出现次数,同时记录最大值 for (let char of str) { const count = (charCount.get(char) || 0) + 1; charCount.set(char, count); maxCount = Math.max(maxCount, count); } // 构建结果对象 const result = {}; for (let [char, count] of charCount) { if (count === maxCount) { result[char] = count; } } return result; } 测试用例: ...