数据结构 & 算法
- 实现一个双向链表,具备添加节点、删除节点、在特定位置插入节点、查找节点、遍历等功能
- 如何判断一个单向链表是否是循环链表?
- 手写 Promise.allSettled
- 倒计时工具的实现
- 实现管道函数
- 请在不使用 setTimeout 的前提下,实现 setInterval
网络
- 跨域和 Preflight
- 强缓存 vs 协商缓存
- XSS / CSRF 网络攻击
- Cookie 相关
- HTTP 建立连接的过程?
- HTTPS 中的 SSL/TLS 是什么?
- HTTP3 中的 QUIC 是什么协议?
- HTTP1.1 的持久连接和 HTTP2 的多路复用有什么区别?
- TCP/IP 是如何保证数据包传输有序可靠的?
- DNS 协议了解多少?
- HTTP Header 中有哪些信息?关于缓存呢?
- 304 状态码用于什么场景,好处和坏处分别是什么?
- postMessage 是如何解决跨域问题的?
- 在域名 A 的网站上,跨域请求域名 B 上的接口,怎么在跨域请求中携带域名 B 的 Cookie 呢?
- OAuth2.0 是什么,是怎么实现授权第三方应用登录的?
CSS
- CSS 伪类和伪元素有哪些,它们的区别和实际应用
- margin auto 各种布局下的表现
- margin / padding / width 设置百分比会相对于谁
- 垂直居中实现方案
- 组件库主题定制
- PC 的 banner 组件怎么适配超宽屏幕
- CSS 变量作用和理解
- 现在要开发一个响应式的网站,怎么实现根据设备的尺寸和分辨率,加载不同尺寸的 banner?要求不使用 JavaScript
工程实践
- SEO 优化
- 埋点相关
- 异常上报
- 性能瓶颈:GPU 加速、will-change 提前告知、DevTools 分析、缓存策略
- 事件冒泡 vs 事件捕获
- 前端渲染 vs 服务端渲染
- 深拷贝 vs 浅拷贝
- 节流 vs 防抖
- Webpack 和 Vite 优劣势
- 常见 Loader / Plugin,自己实现
- 大文件上传
- 聊天 AI 怎么处理流式响应
- AI 相关的前端库
- 组件库如何打包支持 ESM + CJS + DTS
- AI 工具中的 MCP 是什么
- 请设计一个面向设计师的"AI 助手"前端界面,可以生成文本、图像并自动插入到设计稿中
- 大模型 API 在前端调用需要注意哪些,如何统一封装
- 前端倒计时误差以及减小误差方案
- Pinia 和 Vuex 区别
- 有一个新的前端项目需要部署到线上,你有什么思路?
- Ajax 如何获取下载进度?
- 使用了哪些 HTML5 / CSS3 特性
- WebWorker、SharedWorker 和 ServiceWorker 有哪些区别?
- 进程、线程、协程分别是什么概念?
- 单线程的 Node.js 是如何充分利用计算机 CPU 资源的呢?
- 什么情况下会导致 Webpack TreeShaking 失效?
- DOM 渲染能使用 GPU 加速吗?
- Webpack 分包的方式有哪些?
- npm 中的"幽灵依赖"是什么?
- Webpack 中 module、chunk、bundle 的区别是什么?
- 如何优化大规模 DOM 操作的场景?
- Base64 的编码原理是什么?
- Token 过期后,页面如何实现无感刷新?
- PostCSS 是什么,有什么作用?
- package.json 里面 sideEffects 属性的作用是什么?
- 如何搭建一套灰度系统?
- Script 标签上有哪些属性,作用分别是什么?
- 如何封装一个请求,让其多次调用的时候,实际只发起一个请求,返回同一份结果?
- HTML 部分标签中的 crossorigin 属性,作用是什么?
- 怎么统计页面的性能指标?
- Web 网页如何禁止别人移除水印
- JWT 中的 Token,是怎么进行身份验证的?
- 后端一次性返回树形结构数据,数据量非常大,前端该如何处理?
- Webpack 中的 webpack-dev-server 为什么不适用于线上环境?
- JS 代码放在 head 里和放在 body 里有什么区别?
- 前端应用上线后,怎么通知用户刷新当前页面?
- 如果你有一个内容站点,怎么防止其他人爬虫?