牛客科大讯飞前端一面整理(跨域 / 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(除非强需求且隔离得当)。