【2022年9月秋招面试题记录C++】之互联网厂

C语言中struct 和union的区别

struct中的每个数据成员有独立的存储空间
struct可以通过最后的数组标识符产生柔性数组
union 中的所有数据成员共享同一个存储空间
union的使用会受到系统大小端的影响

数组和链表区别

1、数组占内存中一块连续的区域。 链表在内存中可以存在任何地方,不要求连续。
2、数组需要预留空间,使用前要先申请占内存的大小,可能会浪费内存空间。链表内存利用率高,不会浪费内存。
3、数组插入数据和删除数据效率低。链表高。
4、数组随机读取效率很高。链表查找效率低。
5、数组不利于扩展,数组定义的空间不够时要重新定义数组。链表大小没有固定,拓展很灵活。

栈和队列区别

栈和队列

相关排序算法复杂度比较

排序算法复杂度比较

C++11的新特性(语法改进和标准库扩充)

1、语法的改进

(1)统一的初始化方法

(2)成员变量默认初始化

(3)auto关键字 用于定义变量,编译器可以自动判断的类型(前提:定义一个变量时对其进行初始化)

(4)decltype 求表达式的类型

(5)智能指针 shared_ptr

(6)空指针 nullptr(原来NULL)

(7)基于范围的for循环

(8)右值引用和move语义 让程序员有意识减少进行深拷贝操作

2、标准库扩充(往STL里新加进一些模板类,比较好用)

(9)无序容器(哈希表) 用法和功能同map一模一样,区别在于哈希表的效率更高

(10)正则表达式 可以认为正则表达式实质上是一个字符串,该字符串描述了一种特定模式的字符串

(11)Lambda表达式

STL之vector相关

vector的emplace_back和push_back 区别
push_back利用拷贝构造函数复制目标值,往vector中添加新的元素;emplace_back直接在目标位置上生成对象,直接原地生成效率较高。尽量用emplace_back替换push_back。

vector 扩容为什么要以1.5倍或者2倍扩容?
1、采用成倍方式扩容,可以保证常数的时间复杂度,而增加指定大小的容量只能达到O(n)的时间复杂度,因此,使用成倍的方式扩容更高效。

2、使用 k=2 增长因子,那么之前分配的内存空间不可能被使用。这样对于缓存并不友好。当 k =1.5 时,在几次扩展以后,可以重用之前的内存空间。

YUV和RGB

https://www.usbzh.com/article/detail-214.html

ffmpeg的解码函数,过程

ffmpeg解码过程

进程线程解释

线程和进程

视频传输协议

RTMP——Real Time Messaging Protocol(实时消息传输协议)

RTSP(Real Time Streaming Protocol)
RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或者RTP完成数据传输,目前市场上大多数采用RTP来传输媒体数据。

HTTP Live Streaming(缩写是HLS)
一个由苹果公司提出的基于Http协议的的流媒体网络传输协议。

视频传输协议

类和结构体

类和结构体

继承和派生

添加链接描述

内联函数

内联函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值