服务端2月28日 22:09
什么是 SSH 协议?它有哪些主要功能和工作原理?SSH(Secure Shell)是一种加密网络协议,用于在不安全的网络中安全地进行远程登录和其他网络服务。它替代了 Telnet、FTP 等明文传输协议,是目前 Linux/Unix 远程管理的标准工具。
## 核心功能
- **远程登录**:通过加密通道登录远程服务器执行命令
- **文件传输**:SFTP 和 SCP 提供安全的文件收发
- **端口转发**:建立加密隧道,将本地或远程端口流量通过 SSH 隧道转发,实现安全代理
- **X11 转发**:在本地显示远程图形界面应用
## 工作原理
SSH 采用客户端-服务器架构,一次完整的连接建立分为五个阶段:
1. *...服务端2月28日 22:14
什么是 SSH 连接复用?如何配置和使用连接复用提高性能?SSH 连接复用(Connection Multiplexing)是指复用一条已建立的 SSH 连接来创建新的会话,省去重复的 TCP 握手和密钥交换环节。面试中常考的是三个配置参数:ControlMaster、ControlPath、ControlPersist,以及复用带来的性能收益和潜在风险。
## 连接复用怎么工作
正常的 SSH 连接每次都要经历 TCP 三次握手、SSH 协议版本协商、Diffie-Hellman 密钥交换、用户认证四个阶段。在延迟较高的网络环境(如跨机房、通过跳板机)中,这个过程可能耗时 1-3 秒。
连接复用的做法是:第一次连接建立后,把这条连接作为...服务端2月28日 22:13
什么是 SSH 证书认证?如何配置和管理 SSH 证书?SSH 证书认证用 CA(证书颁发机构)对用户或主机公钥进行签名,生成带有效期和身份信息的证书,服务器只需信任 CA 公钥即可验证所有由该 CA 签发的证书。相比手动分发 authorized_keys,证书方式在大规模环境下管理成本更低、安全性更强。
## 为什么用证书而不是密钥?
传统 SSH 密钥认证的痛点在于:每台服务器都要维护 authorized_keys 文件,用户入职要在所有服务器上添加公钥,离职要逐台删除——服务器一多就是运维噩梦。证书认证从根本上解决了这个问题:
- **服务器不存用户公钥**,只配置一条 `TrustedUserCAKeys` 指向 CA 公钥...服务端2月28日 22:10
SSH 端口转发有哪些类型?本地转发、远程转发和动态转发怎么用?SSH 端口转发(Port Forwarding),也叫 SSH 隧道(SSH Tunneling),是通过 SSH 加密连接转发任意 TCP 流量的技术。它能让不安全的协议获得加密保护,也能穿透网络限制访问内网服务。SSH 端口转发有三种类型:本地转发(-L)、远程转发(-R)和动态转发(-D),三者数据流向和使用场景各不相同。
## 本地端口转发(-L)
本地端口转发将本地某个端口的流量,经 SSH 隧道转发到远程服务器可达的目标地址。换句话说,你访问本机的一个端口,数据会自动通过 SSH 加密隧道到达远端目标。
**数据流向**:本机应用 → 本地端口 → SSH 隧道 → ...服务端3月1日 21:59
什么是 Zustand,它与其他状态管理库相比有哪些优势?## 核心答案
Zustand 是一个极简的 React 状态管理库,gzip 后仅约 1KB。它通过 `create` 函数创建 store,组件用 hook 订阅状态,无需 Provider 包裹,也不需要 reducer/action 等样板代码。与 Redux 相比,Zustand 的 API 更简洁、包体积小 5-7 倍、重渲染速度快 30-50%,已成为 2026 年新 React 项目的首选状态管理方案。
## 基本用法
创建一个 store 只需要调用 `create`:
```js
import { create } from 'zustand'
const ...服务端2月25日 23:05
WebView测试怎么做?5大维度9类测试策略与工具全解析## 核心答案
WebView测试覆盖功能、原生交互、性能、安全、兼容五个维度。**单元测试**用Mock覆盖WebViewClient回调逻辑,**UI自动化**用Espresso-Web(Android)/XCUITest(iOS)操作DOM,**集成测试**验证JS Bridge双向通信,**性能测试**建立FCP/LCP/TTI基线,**安全测试**堵住XSS注入和Intent劫持漏洞,跨平台用Appium切换Context。面试核心考点:**JS Bridge线程安全**(@JavascriptInterface方法在子线程执行,操作UI必须切换主线程)、**Context切...服务端2月25日 22:51
WebView开发有哪些必须掌握的最佳实践?WebView是移动端混合开发的核心组件,但用好它远不止"加载一个URL"那么简单。以下从架构、性能、安全、体验四个维度梳理实际项目中最关键的最佳实践。
## 架构层面:管理好WebView的生命周期
WebView的创建和销毁开销很大,频繁new和destroy会导致内存抖动甚至泄漏。核心做法是建立WebView池。
```kotlin
// WebView预加载池
object WebViewPool {
private val pool = Stack<WebView>()
fun prepare(context: Context) {
va...服务端2月24日 22:25
如何使用 Cookie 实现"记住我"功能?需要注意哪些安全问题?## 核心答案
Cookie 实现"记住我"的核心思路是:登录成功后生成一个加密的长期 Token,存入设置了 HttpOnly + Secure + SameSite 的持久化 Cookie,服务端同时将 Token 哈希存入数据库。下次访问时浏览器自动携带 Cookie,服务端校验 Token 哈希完成自动登录,无需用户再次输入密码。
关键安全原则有三条:
- **永远不要在 Cookie 中存储明文密码或密码哈希**,只用随机生成的不可预测 Token
- **每次使用后轮换 Token**,旧的立即失效,防止重放攻击
- **Cookie 必须设置 HttpOnly + Se...服务端2月25日 22:49
如何优化WebView的加载性能?请列举具体策略## 核心答案
WebView加载性能优化需要从初始化、缓存、网络、渲染、配置、内存六个维度系统推进。以下是面试中必须掌握的具体策略。
### 一、预加载与实例复用
WebView首次初始化涉及内核加载、JIT编译等,耗时可达200-500ms,是白屏时间的主要来源。
- **预创建WebView实例**:在Application.onCreate中提前初始化WebView并放入复用池(建议池大小2-3个),使用时直接取出。预加载about:blank完成首次渲染管线预热。需在子线程执行,避免阻塞主线程ANR。
- **资源预加载拦截**:将高频H5页面资源(HTML/CSS/J...服务端2月24日 23:01
React Query 中如何实现乐观更新?它有哪些优缺点?乐观更新(Optimistic Update)是 React Query 的核心特性之一,它让应用在服务器响应返回之前就更新 UI,用户操作能获得即时反馈,体验更接近原生应用。
## 乐观更新的工作原理
乐观更新的核心思路是"先斩后奏":用户触发操作时,立刻把预期结果写入缓存更新 UI,同时发起真实请求;如果服务器确认成功,用真实数据替换乐观数据;如果失败,则回滚到操作前的状态。
整个生命周期分为四步:
1. **onMutate** — 取消进行中的查询,保存当前缓存快照,写入乐观数据
2. **请求发出** — mutation 函数执行,等待服务器响应
3. **onErr...