口试办法:视频面(一壁)
部门:字节跳动-视频架构-后端开拓

紧张根据简历上的内容(项目和技能)来问
口试题1. 视频流的传输办法?(项目)答:点对点传输,第三方流媒体做事器传输,自主搭建流媒体做事器传输;
2. 项目中是采取UDP-Socket实现心跳包,为什么采取UDP?(项目)答:心跳包它像心跳一样每隔固定时间发一次,以此来见告做事器,这个客户端还活着。实在TCP和UDP都可以实现心跳包,心跳包采取TCP还是UDP根据项目须要,采取UDP是由于它的速率快,占资源少。
速率快:TCP必须建立连接,而UDP是一个非连接的协议,以是UDP更快;
占资源少:UDP的数据报头部只有8个字节,而TCP数据报头部是20个字节;
3. TCP与UDP的差异?答:1 基于连接和无连接;
2 TCP是可靠,担保数据精确;UDP不可靠,不担保数据精确;
3 TCP担保数据顺序到达;UDP不担保数据顺序到达;
4 TCP速率慢,由于TCP必须创建连接;UDP速率较快,不须要建立连接;
5 由于上述开销,TCP是一个重量级协议;UDP是一个轻量级的协议;
6 一个TCP数据包报头的大小是20字节;一个UDP数据报报头是8个字节;
7 TCP有流量掌握和拥塞掌握;UDP不能进行流量掌握;
8 TCP面向字节流;UDP面向报文;
9 运用处景不同,TCP适宜对效率哀求相对低,但对准确性哀求相对高或者是有连接的场景,TCP一样平常用于文件传输(HTTP,HTTPS,FTP等协议),邮件(POP,SMTP等协议),远程登录等场景;UDP更适宜对效率哀求相对高,对准确性哀求相对低的场景,UDP一样平常用于即时通信(QQ谈天),在线视频(rtsp流速率一定要快,偶尔丢包没紧要),网络语音电话等场景;
4. TCP四次挥手讲下?为什么有TIME_WAIT?答:
1. A不能担保末了的ACK能达到B,如果末了的ACK丢失, 那么B显然收不到, B于是发起了重传FIN的操作, 此时如果A处于CLOSED的状态, 就没办法给对端发ACK了,以是A该当等一段韶光,这段韶光便是所谓的TIME_WAIT。
2. 担保新旧四元组互不滋扰,假设tcp连接是:A(1.2.3.4:8888)------B(6.7.8.9:9999), 这便是一个tcp四元组。
当tcp连接关闭后, 四元组开释。 后面的新连接可能会重用到这个四元组(有这个可能性), 那么问题就来了: 新四元组和旧四元组完备同等, 他们的网络包会混乱吗?
以是,可以考虑这样一个机制:让旧四元组对应的所有网络包都消逝后(等一段韶光),才许可新四元组建立,颇有点锁的味道。这个等一段韶光便是2MSL。
5. TCP比UDP多花费哪些系统资源?答:TCP建立连接时三次握手,断开连接时四次挥手;TCP数据包头部20字节,UDP数据包头部8字节;TCP有流量掌握和拥塞掌握。
6. UDP在内网下有几种NAT办法?答:NAT(Network Address Translation)即网络地址转换,NAT能将其本地地址转换玉成球IP地址。 考虑到UDP的无状态特性,目前针对其的NAT实现大致可分为Full Cone、Restricted Cone、Port Restricted Cone和Symmetric NAT四种。
7. 你理解DDoS攻击吗?答:谢绝做事攻击(简称DoS攻击),亦称大水攻击,其目的在于使目标打算机的网络或系统资源耗尽,使做事暂时中断或停滞,导致其正常用户无法访问。
当黑客利用网络上两个或以上被攻陷的打算机作为“僵尸”向特定的目标发动“谢绝做事”式攻击时,称为分布式谢绝做事攻击(distributed denial-of-service attack,简称DDoS攻击)。
8. Nginx理解吗,讲一下?答:Nginx 采取的是多进程(单线程) & 多路IO复用模型。
事情模式:
(1)、Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程。
(2)、吸收来自外界的旗子暗记,向各worker进程发送旗子暗记,每个进程都有可能来处理这个连接。
(3)、master 进程能监控 worker 进程的运行状态,当 worker 进程退出后(非常情形下),会自动启动新的 worker 进程。
9. Nginx中master进程和worker进程是怎么通信的?答:nginx的进程通信分为三种种别:linux 系统与nginx 通信(旗子暗记),master 进程与worker进程通信(套接字),worker进程间通信(共享内存)。
(1) linux 系统与nginx 通信
答:linux 系统与nginx是通过旗子暗记进行通信的,通过旗子暗记掌握nginx重启、关闭以及加载配置文件等。比如:./nginx –s quit 向master进程发送旗子暗记。
(2) master 进程与worker进程通信
答:master进程与worker进程通过频道(channel)进行通信。创建频道,实在便是socketpair,在启动worker进程时创建频道;
发送,master进程通过ngx_signal_woker_processes向worker进程发送;相应,worker进程通过ngx_read_channel读取消息,然后根据command判断是什么。
(3) worker进程间通信
答:worker进程间则是通过共享内存进行通信。它通过 mmap 或者 shmgat 系统调用在内存中创建了一块连续的线性地址空间,而通过 munmap 或者 shmdt 系统调用可以开释这块内存。
利用共享内存的好处是当多个进程利用同一块共享内存时,在任何一个进程修正了共享内存中的内容后,其他进程通过访问这段共享内存都能够得到修正后的内容。
10. 为什么worker进程数和CPU数同等?答:一是Nginx一样平常只做高并发代理,基本没用IO操作,算是CPU密集型操作,以是在处理时基本是瞬间完成的,很少涌现IO壅塞。
二是进程与CPU调度的关系,单个核心处理多个进程的时候,是排队处理的,以是将worker进程数量设置超过核心数会造成不必要的高下文切换。
11. 多进程高下文切换讲下?答:高下文切换:为了掌握进程的实行,内核必须有能力挂起正在CPU上运行的进程,并规复以前挂起的某个进程的实行。这种行为被称为进程切换。
因此可以说,任何进程都是在操作系统内核的支持下运行的,是与内核紧密干系的。 从一个进程的运行转到另一个进程上运行,这个过程中经由下面这些变革:
1. 保存处理机高下文,包括程序计数器和其他寄存器。
2. 更新PCB信息。
3. 把进程的PCB移入相应的行列步队,如就绪、在某事宜壅塞等行列步队。
4. 选择另一个进程实行,并更新其PCB。
5. 更新内存管理的数据构造。
6. 规复处理机高下文。 注:总而言之便是很耗资源。
12. 讲一下同步,异步,壅塞,非壅塞,多路IO复用?答:当一个同步调用发出后,调用者要一贯等待返回(结果)关照后,才能进行后续的实行;当一个异步过程调用发出后,调用者不能急速得到返回(结果)。
实际处理这个调用的部件在完成后,通过状态、关照和回调来关照调用者。壅塞调用是指调用结果返回之前,当前哨程会被挂起,一贯处于等待关照,不能够实行其他业务。
非壅塞是指在不能急速得到结果之前,该函数不会壅塞当前哨程,而会急速返回。
13. Nginx属于以上哪种类型?答:Nginx采取异步非壅塞的事宜处理机制,由进程循环处理多个准备好的事宜,从而实现高并发和轻量级。
14. 讲一下epoll?答:epoll是在2.6内核中提出的,是之前的select和poll的增强版本。
相对付select和poll来说,epoll更加灵巧,没有描述符限定。epoll利用一个文件描述符管理多个描述符,将用户关系的文件描述符的事宜存放到内核的一个事宜表中,这样在用户空间和内核空间的copy只需一次。
15. 讲下epoll和select的差异?答:1.select单个进程能够监视的文件描述符数量一样平常是1024,有数量限定,可以通过修正宏定义乃至重新编译内核来修正,但是会造成效率的降落。
epoll监视的描述符数量不受限定,支持的FD是最大可以打开文件数目。在1GB内存的机器上大约是10万旁边。
2.select每次调用都会对socket凑集中所有的socket,如果socket凑集较大,效率就会线性低落;
epoll不存在这个问题,epoll只会对“生动”的socket进行操作,
每个fd上有个callback函数,只有“生动”的socket才会主动去调用callback函数,其他idle状态socket不会。
3.epoll利用mmap加速内核态与用户态的通报;Epoll是通过内核与用户空间mmap处于同一块内存实现的。避免了不必要的内存拷贝。
两个编程题:1 给一个有向图,判断有向图中是否有环,如果有环,环的数量是多少?
2 给一个大小为n的数组,探求比k小的最大数的位置。
口试履历总结建议:
1 简历上的东西一定要非常熟习再熟习;
2 算法题一定要多刷再多刷;
到此这篇关于字节跳动后端开拓视频架构面经总结的文章就先容到这了,更多干系视频架构口试内容整理了 1000 道 2020年多家公司 java 口试题 400 多页 pdf 文档,还有几百页的Java核心知识点PDF。
关注私信【555】获取,还可领取更多Java口试题资料