akool面试面经12.17
这家公司是做 人工智能换脸的项目的,包括 ai 面试官。
2.对异步编程的理解。阐述一下吧。
3.导出 Excel 的话怎么优化导出导致内存爆掉!请你描述一下完整的流程!
解释:Excel 数据处理优化:使用 SheetJS(xlsx) 实现万级数据的导入导出,配合 Web Worker 后台线程处理大文件解析,避免主线程阻塞;导出 2 万条数据耗时从 15s 降至 3s,UI 无卡顿。
听我自己面试得急死。。。。我自己说话好慢呐。。。 面试官说话好快呀。
4.你说一下 webworker 使用的几个限制条件。
以下是 Web Worker 的主要限制及技术细节分析: 一、核心功能限制 DOM 操作禁止 Worker 线程无法直接访问 DOM、document、window 等对象,所有 UI 操作必须通过主线程的消息传递实现 。但可访问部分浏览器 API 如 navigator 和 location。 API 访问受限 不可用:localStorage、sessionStorage、alert()、confirm() 可用:XMLHttpRequest、fetch、WebSocket、IndexedDB 及 Web Audio API 二、通信与数据限制 同源策略强制 Worker 脚本必须与主线程同源(协议/域名/端口一致),跨域需通过 Blob 或服务端代理解决 。 数据传递机制 仅支持结构化克隆算法传递数据,无法直接共享内存(除非使用 SharedArrayBuffer) Class 实例等复杂对象需序列化为 JSON 传输 三、性能与调试限制 资源消耗 Worker 持续运行会占用内存,需手动调用 terminate()或 close()释放资源 。 调试复杂性 Worker 运行在独立上下文,需使用浏览器开发者工具的专用调试面板 。 四、场景适用性限制 CPU 密集型任务优化有限 虽然适合处理哈希计算、图表渲染等任务,但极端密集计算仍可能导致低端设备卡顿 。 I/O 密集型任务不推荐 网络请求等 I/O 操作更适合主线程异步处理,而非 Worker 线程 。 通过理解这些限制,可以更合理地设计 Web Worker 的应用场景,例如大文件分片计算或后台数据分析 。
作者:开源框架链接:https://juejin.cn/post/7526309936813572142来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
5.请你说一下大文件的上传和断点续传是怎么实现的?
6.解释:WebSocket 实时通信:基于 Socket.io 实现前端与大模型的流式对话,支持打字机效果、Markdown 渲染、代码高亮,提升用户体验
7.对 React 和 Vue 哪个更加熟悉一些呢?
8.pnpm 比 npm 的好处?(幽灵依赖)
9.实现虚拟滚动(Virtual Scroll)优化题库列表渲染,支持流畅展示 5 万+ 题目; 说一下虚拟滚动的实现。
10.localstorage 和 sessionstorage 的区别
答:
localStorage 是长期保存,全局共享;用户偏好设置(主题、语言);用户登录状态和 token
sessionStorage:临时保存,标签页隔离的。页面的临时的状态(列表的展开和折叠)
存储位置 | 浏览器自动存储(本地文件 / 内存) | 客户端自主存储(LocalStorage/Cookie/APP 缓存) |
传输方式 | 浏览器自动随请求携带(Cookie 头) | 手动添加到请求头(如
) |
跨域支持 | 受同源策略限制(默认不能跨域) | 天然支持跨域(只要请求头携带即可) |
服务端状态 | 通常依赖服务端 Session(有状态) | 服务端无需存储(无状态,仅验证签名) |
大小限制 | 约 4KB(很小) | 无严格限制(但 JWT 不宜过大) |
安全性 | 易受 CSRF/XSS 攻击(需加
/
) | 防 CSRF,但存 LocalStorage 易受 XSS 攻击 |
适用场景 | 传统 Web 应用、用户偏好设置 | 前后端分离、微服务、移动端 APP、跨域 API |
11.怎么缩小打包的体积呢?除了 tree-shaking 还有什么方法?
12.请你讲讲页面埋点的设计,你如何介绍呢?
13.你觉得 Nestjs 和 SpringBoot 的使用有啥区别呢?

查看17道真题和解析