影石insta360 嵌入式软件开发实习生(offer已接)
一面:
c++11有哪些特性?
智能指针用途?种类?原理?
lambda表达式主要作用?可读性?
java垃圾回收机制?需要手动管理吗?C++呢?关键字?
什么是内存泄漏?
Linux中grep命令作用?-v呢?
git工具工作流程?多个人push到同一个分支,产生冲突怎么解决?
ffmpeg编解码流程?音视频解码后的数据是什么?
解码后处理有哪些?
ui跟视频怎么叠到一起?
处于什么场景用docker?
镜像和容器区别?
docker命令常见有哪些?下载镜像哪个命令?
用过其他gui框架吗?
qt信号和槽机制,怎么理解?connect参数有几个?
connect中同步和异步区别,怎么判断哪个场景用哪个?怎么区别同步和异步?
qt主要哪些组件?
自定义控件写过吗?实现自定义控件有哪些方法?有用过哪些具体例子?
播放器项目有用到芯片吗?(没有,软件解码)
文件列表显示样式是什么?如果文件名加图片呢?
音视频同步怎么做的?
视频线程怎么获取音频时间戳?
音频重采样目的?
讲讲grpc这个框架,场景和功能?里面server是cs架构吗?(项目里的)
grpc调用有没有同步和异步区分?
数据不会主动通知,而是要主动调用?
界面开发有没有使用动画效果?
二面:
介绍优点和长处?
问qt是自学吗?问学习到做项目的过程?
为什么选择qt?
qt有什么优缺点?
聊项目,项目构建流程
mp4文件解码流程
(MP4容器解开,里面有音频、视频、字幕多轨道信息,视频数据会根据编码格式和包头判断是h264还是h265,会通过ffmpeg的软解和硬解,解码成yuv,根据显示屏转化成相应rgb数据,rgb一般是565;音频也是由MP4解析,格式大部分为aac、flac格式,将aac格式解码成原始流进行播放)
音视频同步实现
介绍一下linux开机流程,从上电到用户第一个二进制程序?
(上电,同步load,屏蔽中断,从flash里面拷到内存里面加载部件,外设初始化,loader把kernel加载到内存里面,kernel从这个位置启动,cpu跳到那个位置执行,开始加载kernel,kernel也分三步,第一步初始化?态,第二步是内核态,第三步是用户态,初始化的时候会将外设、中断什么的初始化,初始化又会跳转到CPU又会跳转到内核态,内核态主要负责内核任务调度、内存管理、驱动加载起来,什么时候跳到用户态?当Linux内核起来完之后,会起一定的对应文件,进程task标号是0,是第一个进程,这个时候才会把内核态转为用户态,这时候才会将用户的二进制程序拉起来,这个流程就完成了)
括号内容是面试官原话................大概
hr面:
就简单聊聊,没什么东西