淘天音视频电话面

1.讲讲shard_ptr,unique_ptr,weak_ptr的原理

答:shard_ptr的原理是底层维护了一个引用计数(计数类型为指针类型);unique_ptr语义是独享,通过禁用拷贝;weak_ptr用来解决循环引用问题, 在使用时需要先用lock()获得一个shard_ptr,保证在使用周期内指针指向的数据没有delete。

2.讲讲拥塞控制,为什么要有慢启动

答:拥塞控制分为慢启动,拥塞避免,拥塞发生,快恢复 / 慢启动。需要有慢启动的原因的:1.避免网络拥塞(如果在拥塞网络中,突然发送大量数据,将导致网络状态更加糟糕)2.公平性(慢启动算法通过逐渐增加发送速率来探测网络的可用带宽。这种逐渐增加的方式使得网络中的其他流量有机会共享带宽,从而实现公平性。)

3.tcp,udp的具体使用场景

答:tcp应用于有序性较高(http / ftp文件传输),udp应用于实时性较高(音视频) ,包总量较少(dns),广播(多人会议)

3.音视频通信中事实上并不是所有包都可以丢的,可以举个例子吗

答:例如h264编码中将视频帧分为了I,B,P三种帧,B帧便前向依赖于I帧,I帧重要性非常高(面试官没有给任何反馈,我也不知道我回答的对不对)

4.网络传输过程中如何一步步解封包的,端口在哪一层?

答:帧头,IP头,TCP头,应用层数据,帧尾。按网络接口层,网络层,传输层,应用层向上解包。 端口层在传输层,udp与tcp包头部都有源端口和目的端口字段。

5.线程间通信的方式,造成使用死锁的场景?

答:全局变量,锁,信号量,条件变量。加锁顺序不对,忘记释放锁,重复加锁

6.单例模式的几种创建模式,使用场景有哪些?

1.懒汉式(Lazy Initialization):延迟创建单例实例,即在首次使用时才创建。线程不安全:在多线程环境下,可能会出现并发访问导致创建多个实例的问题。线程安全:在获取实例时添加同步锁,确保只有一个线程能够创建实例,但会带来性能开销。

2.饿汉式(Eager Initialization):类加载时就创建单例实例,无需延迟。线程安全:由于实例在类加载时创建,保证了线程安全。无法延迟加载实例,可能会造成资源浪费。

3.双重检查锁(Double-Checked Locking):结合了懒汉式和饿汉式的优点,在首次获取实例时进行双重检查。既能实现延迟加载,又能保证线程安全。

7.网络拥塞的表现

RTT变长,丢包率增高。【分组丢失(路由器缓存溢出)分组延迟过大(在路由器缓存中排队)】

总结:

非常恶心的一场面试,面试官全程没有任何反馈,而且反问角度很奇怪,例如shard_ptr,unique_ptr的具体使用场景是什么(根据定义,有独享性需求的时候使用unique_ptr不就行了?)。面完下来就挂了

全部评论
🔝
点赞 回复 分享
发布于 2023-09-17 22:20 广东
第三个答的有点小问题,b帧并不只有前向依赖i帧
点赞 回复 分享
发布于 2023-10-01 22:10 上海

相关推荐

评论
5
42
分享

创作者周榜

更多
牛客网
牛客企业服务