文章目录

牛客科大讯飞前端一面整理(跨域 / Node / Electron / MVVM)(十)

收录日期:2026-05-06
关键词:前端、跨域、HTTP、MVVM、Vue、Node.js、Electron

1. 跨域解决了什么问题?跨域请求有哪些形态?

参考答案

  • 解决的是浏览器同源策略下,脚本对“跨源响应内容”的读取限制(主要针对 XHR/fetch)。
  • 形态:
    • 简单请求:GET/POST/HEAD + 特定 Content-Type + 无自定义敏感头;不触发预检。
    • 非简单请求:PUT/DELETE 或自定义头等,会先发 OPTIONS 预检(preflight)。
  • 配套:服务端用 CORS 返回允许源、方法、头、是否允许携带凭证。

2. GET vs POST 区别?(别只背“安全不安全”)

参考答案

  • 语义:GET 用于获取资源(幂等);POST 用于提交/创建(不保证幂等)。
  • 传参:GET 多在 URL query;POST 在 body(但并非强制)。
  • 缓存与重试:GET 更容易被缓存;网络层可能对幂等请求做更激进重试(仍需看实现)。
  • 体积限制:更多受服务器/代理/浏览器实现影响,不是协议硬限制。

3. 你了解哪些 MVVM 框架?MVVM 解决了什么问题?

参考答案

  • 框架:Vue、Angular(偏 MVVM/MVC 混合),React 更偏 MV*(View 层)+ 状态管理组合。
  • 解决的问题:
    • 数据驱动视图(声明式渲染),减少手写 DOM 操作;
    • 状态与视图一致性更好(减少“更新 UI 忘记更新某处”);
    • 组件化复用与可测试性提升。

4. Vue 这类框架出现是为了解决什么?

参考答案

  • 大型前端复杂度上升后,传统 jQuery/手写 DOM 难维护:状态散落、DOM 与数据不同步、可复用性差。
  • Vue 用响应式 + 组件模型 + 模板/渲染机制,把 UI 视作 state 的函数(尽量做到 UI = f(state))。

5. Node.js 出现是为了解决什么问题?

参考答案

  • 目标:用 JavaScript 在服务端做 I/O 密集型高并发场景(事件驱动、非阻塞 I/O)。
  • 优势:
    • 单线程事件循环降低线程切换成本,适合大量并发连接;
    • 前后端同语言,工具链与共享代码更方便。
  • 局限:CPU 密集型任务需要 Worker/多进程/下沉到其他语言服务。

6. Electron 如何“和 Web 连接”?整体架构是什么?

参考答案

  • Electron = Chromium(渲染)+ Node.js(运行时)+ Native 封装(桌面壳)。
  • 进程模型:
    • Main 进程:创建窗口、系统菜单、文件/系统能力等。
    • Renderer 进程:窗口内的 Web 页面(HTML/CSS/JS)。
  • 通信方式:
    • ipcMain / ipcRenderer(IPC 消息),推荐通过 preload 暴露受控 API(contextBridge),避免渲染层直接拿到 Node 能力。
  • 安全要点:开启 contextIsolation,禁用 nodeIntegration(除非强需求且隔离得当)。