2025-08-20 模拟面试(四)

一、 JavaScript 核心 & 深度原理
  1. HTTP/2 的革命性改进及对前端的影响

    1. 革命性改进有以下几点:多路复用,头部压缩,二进制分帧,服务器推送
    2. 在 http1 前端可能会为了减少 http 请求而做雪碧图,代码合并,域名分片等技术。但是在 http2 里 http 的开销被降的非常低了 而如果合并了大量资源反而会降低缓存命中率,导致得不偿失,所以这个需要认真对待。
    3. 可以更细粒度的拆分代码,只加载当前页面所需的代码
    4. 对于关键资源,可以使用服务器推送技术,来优化首屏时间
    5. 文件没那么大,请求变多了之后,设置良好的缓存策略变的至关重要了。
  2. 设计一个前端项目的自动化部署流程(CI/CD)?

    1. 触发:git push 到特定分支触发 CI(如 github actions)
    2. CI 阶段:安装依赖(npm ci)->代码检查(Lint)->运行测试->构建(npm run build)
    3. CD 阶段:将构建产物(dist)上传至对象存储(OSS)+CDN 或者同步至服务器
    4. 刷新: 触发 CDN 缓存刷新
    5. 通知与回滚:通知部署结果,并有一键回滚机制
  3. 请比较 interface 和 type 的异同。 相同点:都可以定义对象形状,函数类型,都支持扩展。 不同点有:

    1. interface 更偏向声明一个结构,支持声明合并(声明多个会自动合并),主要用于定义对象,类的公共契约
    2. type 更偏向于定义类型别名,功能更加强大,可以定义联合类型(|),交叉类型(&),元祖类型,以及使用 keyof,typeof 等操作符进行复杂操作
  4. 请说明 keyof,typeof 和条件类型的作用

    1. keyof T:获取类型 T 的所有键的联合类型
    2. typeof variable:在类型上下文中,获取类型的类型
    3. 条件类型 T extends U ? X :Y:根据类型兼容性判断,选择返回的类型

results matching ""

    No results matching ""