24-1-9 bilibilic++音视频

下午两点面试,面试官迟到了一会,面试官人很好,整体面试经历很不错,但是我人太紧张了,基础知识掌握的深度不够,没有深挖,

是做音视频的底层相关的,

实习要求只要每天打卡够九个小时就行

c++有哪些新特性

智能指针有哪些 

auto_ptr shared_ptr weak_ptr unique_ptr

shared_ptr大概怎么实现的 

有一个指针和一个引用计数的指针,每次拷贝和复制都会使引用计数加一,析构时减一,如果引用计数为零,那么就证明没人使用这块内存,可以成功析构。

shared_ptr可以实现一起读安全,但是一起写不安全

shared_ptr也会有内存泄漏,当两个类的对象里面都有shared_ptr指针,且两个对象互相引用,那么引用计数都不会下降

智能指针的作用是什么

防止内存泄漏

什么叫内存泄漏

就是因为失误导致的使用完某块内存之后,忘记释放掉,导致失去对它的控制。

lambda表达式

左值右值

右值引用的意义在哪  为什么右值引用可以有这个意义  是怎么实现的

右值引用其实就是在栈上在开辟一块空间用来放右值引用指向的值,然后再把地址传给右值引用的对象,相当于把原来的将要消失的对象寿命强行延长到试用结束

vector和数组的区别

vector可变大小,数组不行 vector是一段连续的内存

vector内部有一个size()和capacity() 

size()是已使用的大小,capacity()是最大容量

每次都是加倍扩容

resize()是变size的大小,如果resize(len)len>capacity  那么size和capacity都等于len

reserve是变capacity的大小 如果len

list指向的是一块块不连续的空间     环状的双向链表

插入和删除元素很方便

24-1-9 bilibilic++音视频_第1张图片

deque

deque是一个双端开口的线性连续空间,其内部为分段连续的空间组成,随时可以加一段新的空间并链接(deque的迭代器比vector复杂,所以尽量使用vector,为了提高效率,可以在对deque排序的时候把deque复制到vector中进行排序最后再复制回deque)

deque是由一段一段的定量连续空间组成的,一旦有必要在其头部或者尾部增加字段,就配置一段定量连续空间,串接在deque的头或者尾

好处:避免和vector一样扩容时申请空间,复制,释放原空间,维护着整体连续的假象,并提供随机访问的接口

坏处:迭代器很复杂

一个map存放指针,每个指针都指向一片线性连续空间,成为缓存区

24-1-9 bilibilic++音视频_第2张图片

stack&queue

底层以deque为架构

heap

priority_queue

无迭代器

map&&set

共同的:都是C++的关联容器  通过提供的接口对里面的元素进行访问,底层都是红黑树

不同的:  set是判断一个元素是否在里面,map是映射,把一个值映射成另一个值(字典)

查找一个树:O(logn)

缺点:插入数值时,需要调整红黑树

24-1-9 bilibilic++音视频_第3张图片

map&&unordered map

底层:map基于红黑树,元素的排列是有序的

        unordered_map基于哈希表,元素的排列顺序时杂乱无序的

map:优:有序性,增删改查都是logn 但是缺点也是增删改查为logn

unordered_map 优点:增删查 时间复杂度为O(1) 

     缺点:内部基于哈希表,以(key,value)形式储存,空间占用率高

             增删改时间复杂度不稳定平均为O(1),取决于哈希函数

24-1-9 bilibilic++音视频_第4张图片

UDP/TCP

udp和TCP的区别在哪,

tcp怎么实现的稳定链接(主要ACK)

能不能用udp构建tcp连接

http1.0 1.1 2.0区别在哪

H264结构是什么

gop的作用

SPS PPS ESI

STL几个组件

fw啊   小吴,答得一坨

你可能感兴趣的:(实习面试,c++,面试)