海康威视
1. Windows 程序移植 Linux 无法运行原因
- 操作系统 API、底层系统调用存在差异;
- 文件系统差异:路径分隔符、大小写敏感、换行符规则不同;
- 编译环境、专属语法、第三方库跨平台兼容性问题;
- 字符编码不一致,Windows 多为 GBK,Linux 默认 UTF-8,引发乱码解析异常。
2. C++ optional 和 variant 区别
std::optional<T>单一类型存储,核心标识值是否存在;std::variant<T1,T2...>固定多类型选一,必定有有效值;- 作用不同:前者解决空值问题,后者实现轻量类型多态。
3. Debug 正常、Release 崩溃常见原因
Debug 模式自带内存初始化、调试保护、无优化;Release 开启高阶优化、移除安全校验。
- 未初始化变量:Debug 自动补零,Release 为随机脏数据;
- 编译器指令重排、冗余代码裁剪,引发多线程时序错乱、未定义行为;
- 运行速率差异放大多线程锁竞争、死锁问题;
- 依赖
DEBUG宏的分支代码,切换模式后逻辑失效。
4. 常用内存泄漏检测工具
- GDB:Linux 原生调试工具,解析 core 日志、查看崩溃调用栈,定位野指针、程序宕机问题;
- ASan:编译器内置内存检测工具,编译添加
-fsanitize=address,leak,undefined;可检测内存泄漏、UAF、重复释放、数组越界、未初始化内存访问,开发环境常用,线上需关闭。
腾讯云智
5. Wireshark 抓取本机 DNS 包
- 管理员启动软件,选择本机上网网卡或回环网卡;
- 访问无缓存域名触发 DNS 请求;
- 过滤规则:
dns and ip.src == 本机IP and dns.flags.response == 0,精准筛选请求包。
6. 容器无法访问宿主机数据库排查思路
容器为 bridge 网络模式,分步排查:
- 宿主机本地测试 3306 端口,确认数据库服务正常运行;
- 进入容器,检查网卡、网桥、路由配置,确认网络模式无误;
- 测试容器与宿主机 IP 连通性,排查防火墙、端口拦截策略;
- 检查数据库监听地址是否限制本地回环、远程账号访问授权、项目连接配置。
7. WebSocket 与 HTTP 区别 & 协议升级流程
核心区别
- HTTP:短连接、单向问答、服务端无法主动推送;
- WebSocket:TCP 长连接、全双工通信、开销低,适配实时交互场景。
升级流程
客户端携带 Upgrade、Sec-WebSocket-Key 等请求头发起 HTTP 握手;服务端校验后返回 101 状态码切换协议,复用原有 TCP 连接,后续以 WebSocket 帧双向通信。