当前位置: 首页 > news >正文

C++-Qt-音视频-基础问题01

目录

一、C++ 核心必考题

1. 语言基础 & 内存模型

2. C++11/14/17 特性 & 现代写法

3. STL & 容器/算法

4. 多线程 & 并发

5. OOP & 设计

二、Qt 核心面试题

1. QObject / 信号槽 / 事件系统

2. Qt UI & 绘制

3. Qt 线程与多线程模型(音视频方向极易考)

4. Qt 与音视频相关模块

5. QML / Qt Quick(如果岗位提到 QML 必问)

三、音视频方向核心必考题(偏 FFmpeg / 播放器)

1. 音视频基础概念

2. 播放器/解码流程

3. FFmpeg 常规考点

4. 实战问题 & Bug 场景

四、工程化 & 性能 & 调试类问题

怎么用这份清单?


一、C++ 核心必考题

1. 语言基础 & 内存模型

  1. 值语义 vs 引用语义 有什么区别?分别适合什么场景?

  2. const 关键字能修饰哪些东西?const int* / int* const / const int* const 含义分别是什么?

  3. new/deletemalloc/free 的区别?底层做了什么?能否混用?

  4. C++ 的 内存布局(栈、堆、全局/静态区、常量区)分别放什么?

  5. 说一下 C++ 的 对象生命周期:构造、拷贝、移动、析构在什么情况下会被调用?

  6. 什么是 未定义行为(UB)?举几个实际开发中常见的 UB 场景。

  7. 什么是 浅拷贝 / 深拷贝?如何正确实现深拷贝?

2. C++11/14/17 特性 & 现代写法

  1. 右值引用移动语义 的设计目的是什么?举一个自己写的类用 std::move 优化的例子。

  2. std::movestd::forward 的区别?什么是完美转发?

  3. auto 的类型推导规则?哪些地方不要乱用 auto

  4. std::unique_ptrstd::shared_ptrstd::weak_ptr 的使用场景与实现原理大概是什么?

  5. std::function 和模板函数有什么区别?为什么 std::function 会有性能开销?

  6. =default / =delete 的作用是什么?实际项目中你在哪些类上用过?

  7. 什么是 constexpr?和 const 区别?哪些场景必须用 constexpr 才行?

3. STL & 容器/算法

  1. std::vector / std::list / std::deque / std::map / std::unordered_map 特性、底层结构、典型使用场景。

  2. std::mapstd::unordered_map 的底层实现、复杂度、优缺点?

  3. 说一下 std::string 的实现要点(小字符串优化 SSO、拷贝开销等)?

  4. STL 迭代器失效的情况有哪些?vector / list / map 分别举例。

  5. 如何自定义类型作为 unordered_map 的 key?需要重载什么?

4. 多线程 & 并发

  1. C++11 线程库中的:std::threadstd::mutexstd::lock_guardstd::unique_lockstd::condition_variable 用法和区别?

  2. 什么是 数据竞争 (data race)死锁?你实际遇到过吗,怎么排查?

  3. 想实现一个 线程安全 的队列,该用什么同步原语?如何避免虚假唤醒?

  4. volatile 的理解?它能保证多线程安全吗?为什么不行?

  5. 原子操作 std::atomic 有哪些常见用途?

5. OOP & 设计

  1. 虚函数表(vtable)的原理?一个有虚函数的类对象内存布局大概长啥样?

  2. 何时需要 虚析构函数?不加会有什么问题?

  3. 多态是如何在运行时实现的?

  4. 说几个你在项目里实际用过的设计模式(单例、工厂、观察者…),结合作品说明。


二、Qt 核心面试题

1. QObject / 信号槽 / 事件系统

  1. Qt 的 信号/槽机制 是如何实现的?和普通回调相比有啥优点/缺点?

  2. 说一下 moc(元对象编译器)的作用,为什么需要它?

  3. connect 的几种写法(老宏版、新函数指针版、lambda 版),各有什么优点?

  4. 信号/槽的 连接类型(Qt::AutoConnection、Direct、Queued…)有什么区别?跨线程时默认是哪种?

  5. Qt 的 事件循环 (event loop) 是如何运作的?QCoreApplication::exec() 之后做了什么?

  6. QEventeventFilter / installEventFilter 的用法与典型场景?

2. Qt UI & 绘制

  1. Qt Widgets 与 Qt Quick (QML) 的核心区别?各自适合什么类型的项目?

  2. 如何在 Qt 中实现自绘控件?一般重载哪些函数?常见的性能问题是什么?

  3. Qt 中如何做 双缓冲绘图 防止闪烁?

  4. QSS(Qt Style Sheet)和自绘(paintEvent)各自优缺点?

3. Qt 线程与多线程模型(音视频方向极易考)

  1. Qt 中的三种多线程使用方式:

  • 继承 QThread

  • worker 对象 + moveToThread

  • 使用 QtConcurrent / 线程池
    说说区别和你实际推荐的方案?

  1. 为什么说 不推荐QThread 的子类中直接写业务逻辑?正确姿势是什么?

  2. GUI 线程限制是什么?哪些对象必须在主线程创建/使用?

  3. Qt 中定时器的精度问题:QTimer 精度如何?在不同平台上有什么差异?

4. Qt 与音视频相关模块

  1. 你用过 Qt 的哪一代多媒体模块?QtMultimedia / Phonon / 自己封装 FFmpeg?

  2. 怎样用 QAudioInput / QAudioOutput 播放、采集 PCM?注意哪些格式匹配问题?

  3. 用过 QVideoWidgetQAbstractVideoSurface/QVideoSink 吗?如何在自定义控件中显示视频帧?

5. QML / Qt Quick(如果岗位提到 QML 必问)

  1. QML 的对象生命周期和 C++ 对象有什么不同?

  2. 如何将 C++ 对象/类型暴露给 QML?(qmlRegisterType / setContextProperty 等)

  3. QML 中的大量动画和绑定会带来什么性能问题?如何排查和优化?


三、音视频方向核心必考题(偏 FFmpeg / 播放器)

1. 音视频基础概念

  1. 什么是 采样率位深码率帧率GOP?它们分别影响什么?

  2. YUV 和 RGB 的区别?YUV420P 是什么格式?

  3. 容器格式(MP4 / FLV / MKV)和编码格式(H.264 / H.265 / AAC)有什么区别?

  4. PTSDTS 的区别?为什么会有 B 帧导致的 DTS≠PTS?

  5. 什么是 Timebase?FFmpeg 中时间戳是如何换算到秒的?

2. 播放器/解码流程

  1. 从「打开一个网络流/本地文件,到在屏幕上播放出来」,完整流程怎么走?(从 avformat_open_input 一路说)

  2. 音视频 同步(AV Sync) 是怎么做的?你会选哪个做主时钟?如何处理音画不同步?

  3. 解码线程、音频播放线程、视频渲染线程之间如何协同?队列如何设计?

  4. 如果网络不好/CPU 跑不动,导致延迟累积,你会怎么处理?(丢帧、变速、降低质量…)

  5. 如果音频播放设备只支持 44100Hz,而源文件是 48000Hz,该怎么办?

3. FFmpeg 常规考点

  1. FFmpeg 解封装和解码的典型 API 调用顺序?

  • avformat_open_input → avformat_find_stream_info → avcodec_find_decoder → avcodec_open2 → av_read_frame → avcodec_send_packet/receive_frame

  1. SWRlibswresample)和 SWSlibswscale)分别做什么?

  2. 如何用 FFmpeg 做 转码器?输入、解码、重采样/缩放、编码、封装整套流程能否顺一遍?

  3. 多路流(音频+视频+字幕)如何处理?如何正确选择音频/视频流?

  4. FFmpeg 的线程安全性如何?哪些对象可以跨线程使用,哪些必须在单线程中?

4. 实战问题 & Bug 场景

  1. 你在做播放器/实时音视频时遇到过哪些 实际问题

  • 音画不同步

  • 内存/句柄泄漏

  • 退出时崩溃(线程没退出、解码器未释放)
    你是怎么分析和解决的?

  1. 如何处理 首帧打开时间过长 的问题?(缓冲策略、预读、减少解码压力等)

  2. 高分辨率视频(比如 4K)播放卡顿,你会从哪些方面定位问题?(CPU、GPU、IO、解码线程、渲染效率)


四、工程化 & 性能 & 调试类问题

  1. 如何排查内存泄漏?你习惯用哪些工具(Valgrind、ASan 等)?

  2. Release 和 Debug 下行为不一致,你通常如何快速定位问题?

  3. 你如何设计日志系统来方便音视频问题排查?日志里一般会记录哪些关键字段?

  4. 在 Qt + FFmpeg 项目中,如何划分模块、避免 UI 线程阻塞?简单描述一个你认为合理的架构。


怎么用这份清单?

  1. 先筛选方向

    • 如果是「C++通用后台/客户端」岗位:重点看 1 + 2 + 4 类。

    • 如果是「C++ + Qt 客户端」:重点 1 + 2 + Qt 全部。

    • 如果是「音视频开发」:1 基础 + 3 音视频 + Qt 线程/多媒体。

  2. 每道题准备:

    • 能说出定义/概念

    • 能给真实项目例子

    • 能提一两个坑/注意点(体现经验)

http://www.dtcms.com/a/604968.html

相关文章:

  • [Linux]学习笔记系列 -- [kernel]notifier
  • Blender学习笔记(0) -- 思维导图框架
  • 云手机 服务器网络安全
  • 服务器BMC开发视角:解析CPU管理的两大核心接口PECI与APML
  • Linux 服务器安装 dstat 监控插件
  • 与实验室服务器互相ping
  • C++ 二叉搜索树的模拟实现(key结构的非递归和key_value结构的非递归的实现)
  • dw制作简单网站如何推广新品
  • SUSE Linux Enterprise Server 15 SP4安装步骤
  • 红帽企业 Linux 9 启动过程详解:从按下电源到登录提示符
  • 合肥建设厅网站建设一个一般网站需要多少钱
  • 麻省理工学院未来研发更高温超导体打开了新路径
  • Android studio修改app 桌面logo和名称
  • 【MCU控制 初级手札】2.1 电学基础知识 【电学基础】
  • C#1113变量类型
  • RabbitMq消费消息遇到的坑
  • SAP FICO应付账款账龄分析表
  • Pinia Store 生命周期与状态持久性详解
  • 大数据时代时序数据库选型指南:为何Apache IoTDB是最优解
  • 做网站的一个专题在线上传图片生成链接
  • 图论专题(三):“可达性”的探索——DFS/BFS 勇闯「钥匙和房间」
  • 图论专题(一):Hello, Graph! 掌握“建图”与“遍历”的灵魂
  • 做彩票网站能挣到钱吗中国最好的购物平台
  • 南京做网站群的公司岳西县住房和城乡建设局网站
  • 前端高频面试题之Vue(高级篇)
  • 【附源码】告别静态密码!openHiTLS 开源一次性密码协议(HOTP/TOTP),推动动态认证普及
  • UniApp 小程序中使用地图组件
  • 25华北理工大学考情数据分析
  • Unity Shader Graph 3D 实例 - 基础的模型贴图渲染
  • 17.TCP编程