百度视频云音视频高级研发工程师——面经
本想着上次的自我介绍很失败,这次得好好准备,所以就计划详详细细的介绍一下,结果还没说5分钟,就被打断了,极有可能我说的跟面试过想知道的——不搭边! 然后面试官直接说:我问你一些基础题吧。 ̄□ ̄||
1、指针和引用的区别?https://blog.csdn.net/l477918269/article/details/90233908
2、联合体union和结构体struct的区别?https://www.cnblogs.com/nktblog/p/4027107.html
union公用一块内存,大小为所有成员的最小公倍数。 struct 为每个对象单独开辟空间,且内存对齐。
3、H264内部是如何编码的?
4、有几种媒体封装格式?
TS、AVI、MKV、TP、MOV、M2T,mp4, flv, 等等吧。我看电影少,对音视频格式认识的少,但是该背还得背。
5、MP4的内部结构?
内容好多呀,自行搜索,然后去背诵吧。我是没有背诵下来,但是重点的结构还是要说出来的。
6、编解码流程?
采集到的流,需要进行解码,格式转换,再编码,再封装等,一系列流程。
7、计算机分几个存储空间?
c++在程序执行的时候将内存分为四个区:
1.代码区
存放函数体的二进制代码,由操作系统管理
包括你写的那些注释都在这
2.全局区
存放全局变量,静态变量,常量
常量:字符串常量
3.栈区
存放函数参数值和局部变量,由编译器自动分配和释放
4.堆区
由程序员分配和释放,如果程序员不释放,那么程序结束时将由操作系统回收
那么为什么要分为四个区呢?
因为不同区域存放的数据,具有不同生命周期,这大大地使我们编程更加灵活
8、webRTC的通信过程?
peer-a, 与 peer-b 如何建立通信的。这个还是可以对答如流的。
9、SDP的内容,共5部分。
10、opencv 用过哪些功能?
因为曾经做过这个开发,所以被问到了。
11、OpenGL 是不是熟悉?
这个不熟悉,还没有接触过。可能视频、图像,都离不开OpenGL吧。好多音视频或图像开发的工作,都会提到熟悉OpenGL这个要求。
输入10个学生的学号和分数(或者直接插入也行),插入到链表中,然后按照分数,从小到大排序,并输出。
想了想,本来想着,先一个单链表,然后排序,写着写着程序,突然意识到,我可以插入的时候,就让它有序呀。机智!
cin可以连续从键盘读取想要的数据,以空格、tab或换行作为分隔符;
getline(cin, param)不会将结束符或者换行符残留在输入缓冲区中, 读取一行数据,这一行中,可以有空格, 要包含头文件string.h;
gets(),包含头文件stdio.h
// 直接写一个文件里了。
#include
using namespace std;
struct student
{
int num;
int score;
};
struct Node
{
student stu;
Node *pNext;
Node(const int num, const int score)
{
stu.num = num;
stu.score = score;
pNext = nullptr;
}
};
class stuList
{
private:
Node *m_head;
public:
stuList(){ m_head = nullptr; }
~stuList(){ deleteList(); }
void insert(const int num, const int score)
{
Node *n = new Node(num, score);
if (m_head == nullptr)
{
m_head = n;
}
else
{
Node *temp = m_head;
if (temp->stu.score >= score )
{
n->pNext = m_head;
m_head = n;
}
else
{
Node *pre = temp;
while (temp && temp->stu.score < score)
{
pre = temp;
temp = temp->pNext;
}
if (!temp)
{
pre->pNext = n;
}
else if (temp->stu.score >= score)
{
pre->pNext = n;
n->pNext = temp;
}
}
}
}
void print()
{
Node *temp = m_head;
while(temp)
{
cout << "num : " << temp->stu.num
<< " , score : "<< temp->stu.score << endl;
temp = temp->pNext;
}
}
void deleteList()
{
Node *temp = m_head;
while(temp)
{
m_head = m_head->pNext;
delete temp;
temp = m_head;
}
m_head = nullptr;
}
};
int main()
{
int num, score;
int n = 10;
stuList s;
while(n > 0)
{
cout << "请输入学号和分数 : " << endl;
cin >> num;
cin >> score;
s.insert(num, score);
--n;
}
// s.insert(1, 50);
// s.insert(2, 40);
// s.insert(3, 60);
// s.insert(4, 70);
s.print();
system("pause");
return 0;
}
满满当当的面试结束了。非常开心,因为最后的上机写完了,哈哈哈哈~