AI 剪辑开发一面面经
完整信息
本篇目录
AI Coding 相关
- AI Coding 使用过哪些模型?
- DeepSeek 和 GPT 的区别?
- 你的 AI Coding 工作流是什么?
- 如何验证 AI 生成代码的正确性?
- 是否使用 AI 自动测试?
C++ 基础
指针与引用
6.指针和引用的区别? - 项目中什么时候使用引用?
nullptr - nullptr 和 NULL 的区别?
野指针 - 什么是野指针?
- 野指针产生原因?
- 如何避免野指针?
RAII - 什么是 RAII?
- 项目中如何体现 RAII?
- 构造函数抛异常如何避免资源泄漏?
智能指针 - shared_ptr 原理是什么?
- shared_ptr 的控制块(Control Block)包含什么?
- shared_ptr 如何管理引用计数?
- 什么是循环引用?
- weak_ptr 的作用是什么?
- weak_ptr 如何解决循环引用?
- weak_ptr::lock() 做了什么?
- lock() 后引用计数会增加吗?
- shared_ptr 是否线程安全?
- shared_ptr 在多线程下有哪些风险?
- 项目中是否使用 unique_ptr?
- unique_ptr 和 shared_ptr 区别?
- unique_ptr 为什么不能拷贝?
- unique_ptr 为什么能移动?
移动语义 - std::move 本质是什么?
- std::move 是否真正移动对象?
- 为什么移动构造函数通常加 noexcept?
- 被 move 后的对象还能用吗?
- move 后对象处于什么状态?
STL
vector - vector 底层结构是什么?
- vector 为什么随机访问快?
- vector 什么情况下扩容?
- vector 如何扩容?
- vector 扩容流程?
- vector 扩容时什么时候移动?
- vector 扩容时什么时候拷贝?
- 为什么 noexcept 会影响 vector 扩容?
map - map 底层数据结构?
- unordered_map 底层数据结构?
- map 和 unordered_map 区别?
- unordered_map 如何处理哈希冲突?
- 什么是拉链法?
- unordered_map 一定比 map 快吗?
- unordered_map 什么时候会退化?
- rehash 的代价是什么?
面向对象 - 虚函数如何实现多态?
- 什么是动态绑定?
- 什么是虚函数表(vtable)?
- 什么是虚函数指针(vptr)?
- 为什么基类析构函数必须是虚函数?
- 基类析构函数不是虚函数会发生什么?
- 对象构造顺序是什么?
- 对象析构顺序是什么?
- 成员变量构造顺序是什么?
- 成员变量析构顺序是什么?
- 成员变量初始化顺序由什么决定?
- 构造函数中能否调用虚函数?
- 为什么构造函数中调用虚函数不会发生多态?
多线程 - 项目中哪些模块使用了多线程?
- AI 视频问答为什么要使用多线程?
- Qt 中如何实现异步网络请求?
- Qt 信号槽跨线程通信原理?
- UI 为什么必须在主线程更新?
- 多线程如何保证线程安全?
- 多线程同时修改变量怎么办?
- 什么是临界区?
- 什么是数据竞争(Data Race)?
- std::mutex 如何使用?
- QMutex 如何使用?
- lock_guard 如何使用?
- unique_lock 如何使用?
- Qt 信号槽和 mutex 有什么区别?
计算机网络 - TCP 三次握手过程?
- 为什么是三次握手?
- 两次握手为什么不行?
- TCP 如何保证可靠传输?
- TCP 序列号作用?
- TCP ACK 机制?
- TCP 重传机制?
- TCP 流量控制?
- TCP 拥塞控制?
- TCP 和 UDP 区别?
HTTP - HTTP 请求结构?
- HTTP 响应结构?
- 请求行包含什么?
- 请求头包含什么?
- 请求体包含什么?
- 状态行包含什么?
- 响应头包含什么?
- 响应体包含什么?
- 项目中的网络请求如何封装?
算法题
无重复字符的最长字串(LeetCode 3)
总结:
整体面试体验非常好,具体拷打项目的部分没写在里面,但面试官整个过程中都是很温和,我有回答不上的问题面试官也在耐心的引导我。最后还给我的项目提出了未来的修改意见。
本篇目录
当前问题0140
- 01
AI Coding 使用过哪些模型?
- 02
DeepSeek 和 GPT 的区别?
- 03
你的 AI Coding 工作流是什么?
- 04
如何验证 AI 生成代码的正确性?
- 05
是否使用 AI 自动测试?
- 06
指针和引用的区别? 7. 项目中什么时候使用引用?
- 07
nullptr 和 NULL 的区别?
- 08
什么是野指针? 10. 野指针产生原因? 11. 如何避免野指针?
- 09
什么是 RAII? 13. 项目中如何体现 RAII? 14. 构造函数抛异常如何避免资源泄漏?
- 10
shared_ptr 原理是什么? 16. shared_ptr 的控制块(Control Block)包含什么? 17. shared_ptr 如何管理引用计数? 18. 什么是循环引用? 19. weak_ptr 的作用是什么? 20. weak_ptr 如何解决循环引用?
- 11
weak_ptr::lock() 做了什么? 22. lock() 后引用计数会增加吗?
- 12
shared_ptr 是否线程安全? 24. shared_ptr 在多线程下有哪些风险?
- 13
项目中是否使用 unique_ptr? 26. unique_ptr 和 shared_ptr 区别? 27. unique_ptr 为什么不能拷贝? 28. unique_ptr 为什么能移动?
- 14
std::move 本质是什么? 30. std::move 是否真正移动对象?
- 15
为什么移动构造函数通常加 noexcept?
- 16
被 move 后的对象还能用吗? 33. move 后对象处于什么状态?
- 17
vector 底层结构是什么? 35. vector 为什么随机访问快? 36. vector 什么情况下扩容? 37. vector 如何扩容? 38. vector 扩容流程?
- 18
vector 扩容时什么时候移动? 40. vector 扩容时什么时候拷贝? 41. 为什么 noexcept 会影响 vector 扩容?
- 19
map 底层数据结构? 43. unordered_map 底层数据结构? 44. map 和 unordered_map 区别?
- 20
unordered_map 如何处理哈希冲突? 46. 什么是拉链法?
- 21
unordered_map 一定比 map 快吗? 48. unordered_map 什么时候会退化? 49. rehash 的代价是什么?
- 22
虚函数如何实现多态? 51. 什么是动态绑定? 52. 什么是虚函数表(vtable)? 53. 什么是虚函数指针(vptr)?
- 23
为什么基类析构函数必须是虚函数? 55. 基类析构函数不是虚函数会发生什么?
- 24
对象构造顺序是什么? 57. 对象析构顺序是什么? 58. 成员变量构造顺序是什么? 59. 成员变量析构顺序是什么? 60. 成员变量初始化顺序由什么决定?
- 25
构造函数中能否调用虚函数? 62. 为什么构造函数中调用虚函数不会发生多态?
- 26
项目中哪些模块使用了多线程? 64. AI 视频问答为什么要使用多线程?
- 27
Qt 中如何实现异步网络请求?
- 28
Qt 信号槽跨线程通信原理?
- 29
UI 为什么必须在主线程更新?
- 30
多线程如何保证线程安全? 69. 多线程同时修改变量怎么办? 70. 什么是临界区? 71. 什么是数据竞争(Data Race)?
- 31
std::mutex 如何使用? 73. QMutex 如何使用?
- 32
lock_guard 如何使用? 75. unique_lock 如何使用?
- 33
Qt 信号槽和 mutex 有什么区别?
- 34
TCP 三次握手过程? 78. 为什么是三次握手? 79. 两次握手为什么不行?
- 35
TCP 如何保证可靠传输? 81. TCP 序列号作用? 82. TCP ACK 机制? 83. TCP 重传机制?
- 36
TCP 流量控制? 85. TCP 拥塞控制?
- 37
TCP 和 UDP 区别?
- 38
HTTP 请求结构? 88. HTTP 响应结构? 89. 请求行包含什么? 90. 请求头包含什么? 91. 请求体包含什么? 92. 状态行包含什么? 93. 响应头包含什么? 94. 响应体包含什么?
- 39
项目中的网络请求如何封装?
- 40
无重复字符的最长字串(LeetCode 3)
