服务端2月28日 23:18
axios 代码怎么做单元测试?Mock 请求的常用方案有哪些?测试 axios 代码的核心是 **隔离网络请求**,常用方案有三种:axios-mock-adapter、jest.mock + msw。
**axios-mock-adapter:** 直接拦截 axios 实例的请求,按 URL 和方法注册 mock 响应。适合纯 axios 项目,API 直观。示例:`mock.onGet('/api/user').reply(200, { name: 'test' })`。可模拟超时、网络错误、指定状态码。缺点是绑定了 axios 实例,切换请求库需重写 mock。
**jest.mock('axios'):** 直接 mock axios...服务端2月28日 23:21
axios 底层是怎么实现的?核心架构和请求流程是怎样的?axios 本质是 **请求/响应拦截器管道 + 适配器模式**,核心流程为:配置合并 → 请求拦截器 → 分发请求 → 响应拦截器 → 返回结果。
**适配器模式:** axios 不直接发请求,而是通过 adapter 抽象层。浏览器环境用 `xhr.js`(基于 XMLHttpRequest),Node 环境用 `http.js`(基于 Node 的 http/https 模块)。通过 `adapter` 配置项可自定义适配器,这是 axios 跨平台的关键。
**拦截器机制:** 维护两个链式数组 `request interceptors` 和 `response inte...服务端2月28日 23:41
React Native 调试有哪些方法?各调试工具分别适用什么场景?React Native 调试分 **JS 层调试、原生层调试、性能分析** 三个层面。
**JS 层调试:** Chrome DevTools 是最基础的方式,通过 `Ctrl+M` 打开开发者菜单选择 Debug 打开 Chrome 调试。但 Chrome 调试运行在 Chrome V8 而非设备 JSC/Hermes 上,存在兼容差异。推荐使用 **Flipper**,它内置 React DevTools 和网络检查器,支持断点、Console、组件树检查,是官方推荐的调试平台。
**原生层调试:** Android 用 Android Studio 的 Logcat 过滤 R...服务端2月28日 23:41
React Native 性能优化怎么做?常见性能瓶颈如何排查和解决?React Native 性能优化的核心是 **减少 JS Bridge 通信、控制重渲染、优化列表滚动** 三个方向。
**减少 Bridge 通信:** Bridge 是异步串行的,高频调用会积压队列。将批量操作合并为一次原生调用,使用 Native Modules 批量传递数据而非逐条传递。新架构 Fabric 取代了异步 Bridge,实现同步通信。
**控制重渲染:** 使用 React.memo 包裹子组件避免不必要的 re-render;用 useMemo 缓存计算结果、useCallback 缓存回调函数;列表项拆分为独立组件并 memo 化。避免在 render 中...服务端3月1日 00:11
Android四大组件分别是什么?各自承担什么职责?Android四大组件是 **Activity、Service、BroadcastReceiver、ContentProvider**,它们是构成 Android 应用的基石,各自负责不同的职责边界。
**Activity** 负责用户界面的展示与交互,一个屏幕对应一个 Activity,通过 Intent 实现页面跳转和数据传递,生命周期由系统回调管理(onCreate → onResume → onPause → onDestroy)。
**Service** 在后台执行长时间运行的操作,不提供界面。分为 Started Service(startService 启动,与调用者无...服务端3月1日 19:27
常见的 DNS 记录类型有哪些?各自什么作用?7 种必知记录:A——域名→IPv4 地址;AAAA——域名→IPv6 地址;CNAME——域名→另一个域名(别名);MX——邮件服务器地址+优先级;NS——指定域名的权威 DNS 服务器;TXT——任意文本(SPF/DKIM/域名验证);SOA——主权威服务器信息+序列号+TTL。辅助记录:SRV(指定服务端口和主机)、PTR(反向解析 IP→域名)、CAA(指定允许的证书颁发机构)。
## 追问
### CNAME 和 A 记录能共存吗?
不能。同一域名要么 CNAME 要么 A。CNAME 意味着这个域名完全由目标域名定义,再设 A 记录就矛盾了。但子域可以:example.c...服务端3月1日 20:06
如何监控 DNS 服务的性能和可用性?三层监控:可用性(能否解析)用 dig/nslookup 定时探测;性能(解析耗时)用 dig +stats 看 Query time,P99 超阈值告警;正确性(解析结果是否正确)对比实际 IP 和预期 IP。工具:Prometheus + Blackbox Exporter 做探测采集,Grafana 展示,Alertmanager 告警。关键指标:解析成功率、平均/P99 延迟、NXDOMAIN 比例(异常高可能是 DNS 劫持)、缓存命中率。
## 追问
### Blackbox Exporter 怎么配 DNS 探测?
prometheus.yml 中配 job:modul...服务端3月1日 20:10
DNS 在微服务架构中怎么做服务发现?DNS 服务发现就是用域名代替硬编码 IP:服务 A 调用 service-b.namespace.svc.cluster.local,DNS 返回 service-b 的 IP。Kubernetes 内置 CoreDNS 实现了这套机制——每个 Service 自动注册 DNS 记录。优点:零代码改造、语言无关、兼容现有 HTTP 客户端。缺点:DNS 缓存导致服务上下线有延迟(默认 TTL 30s)、无法做健康检查和负载均衡策略定制。
## 追问
### DNS 服务发现和 Consul/Nacos 有什么区别?
DNS 发现只做域名→IP 映射,无健康检查、无权重路由、无配置中...服务端3月1日 13:52
cURL 如何发送和接收 JSON 数据?发送 JSON:curl -X POST URL -H "Content-Type: application/json" -d '{"key":"value"}'。必须加 Content-Type 头,否则服务器按 form-data 解析。单引号包裹 JSON 防 shell 解析双引号。接收 JSON:curl -s URL | jq . 格式化输出,或 jq .field 提取字段。从文件发送:-d @data.json。
## 追问
### 单引号里怎么写单引号?
Shell 中单引号不能嵌套。方案:把 JSON 写进文件用 -d @body.json(最推荐);混引号;或用...服务端3月1日 18:53
cURL -X 参数什么作用?PUT/DELETE/PATCH 怎么用?-X 指定 HTTP 方法,默认 GET。-X POST/PUT/DELETE/PATCH 分别发送对应请求。POST 提交数据用 -d;PUT 全量更新用 -X PUT -d data;DELETE 删资源用 -X DELETE;PATCH 局部更新用 -X PATCH -d partial_data。注意:-d 默认就是 POST,-X POST 可省略。但 PUT/DELETE/PATCH 必须显式指定 -X。
## 追问
### -X POST 和 -d 有什么区别?
-d 发送 POST body 数据,自动设 Content-Type: application/x-www...