本次面经共 1 轮。每轮单独成文;轮次标题重复时,以“第 N 轮”和稳定的轮次 ID 区分。
轮次导航
- 第 1 轮 · 一面(22 道题)
← 已是第一轮 · 返回本次面经 · 已是最后一轮 → 本轮共 22 道题。答案默认折叠,便于先自行作答。 1. 编写一个函数解析URL,提取其中的协议、域名、路径和查询参数 题目要点 URL 结构 / URL API 使用 / 查询参数处理 / 错误处理 参考答案 考察点 ● 理解 URL 结构及其组成部分 面试官关注候选人是否熟悉 URL 的协议(scheme)、域名(host)、路径(path)、查询参数(query)等基本组成。 ● 掌握字符串处理和正则表达式技巧 是否能用合适的方法提取各部分信息。 ● 能写出健壮且兼容性好的解析函数 考虑边界条件和异常输入。 参考答案 原理说明 URL 由以下几部分构成(简化版): 协议://域名\[:端口]/路径\[?查询参数]\[#锚点] 协议(scheme):如 http、https、ftp 等; 域名(host):主机名或 IP 地址; 路径(path):服务器资源路径; 查询参数(query):key=value 形式,多个参数用 & 分隔。 解析时重点提取协议、域名、路径和查询参数。 核心代码示例(JavaScript) function parseURL(url) { try { const urlObj = new URL(url); // 提取协议,去掉末尾冒号 const protocol = urlObj.protocol.replace(':', ''); // 域名(包含端口,如果有) const host = urlObj.host; // 路径 const path = urlObj.pathname; // 查询参数转成对象 const queryParams = {}; urlObj.searchParams.forEach((value, key) => { queryParams[key] = value; }); return { protocol, host, path, queryParams, }; } catch (error) { throw new Error('Invalid URL'); } } 使用示例 const url = 'https://www.example.com:8080/path/to/page?name=alice&age=25'; const result = parseURL(url); console.log(result); /* { protocol: "https", host: "www.example.com:8080", path: "/path/to/page", queryParams: { name: "alice", age: "25" } } */ 常见误区或面试陷阱 误区一:使用正则解析复杂 URL 正则难以覆盖各种边界情况,不建议复杂场景使用; 推荐使用浏览器内置的 URL 类。 误区二:忽略端口号 域名部分可能包含端口,直接取 hostname 会缺失端口。 误区三:查询参数未统一处理 查询参数可能重复,需根据需求选择保存方式(这里简单取最后一个值)。 总结回顾 解析 URL 推荐使用原生 URL API,简洁且兼容性好。重点提取协议、域名(含端口)、路径和查询参数,并把查询参数转换为对象方便后续使用。 ...