首页 运维干货备战25届实习:B站视频技术部面经

备战25届实习:B站视频技术部面经

运维派隶属马哥教育旗下专业运维社区,是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai
领取学习更多免费Linux云计算、Python、Docker、K8s教程关注公众号:马哥linux运维

今天分享一篇哔哩哔哩视频云网络研发实习生的面经。

本篇面经偏向对计算机网络算法go语言的考察。

面试部门视频云技术部,主要负责网络优化等,主要技术栈为go。

为了助力25届暑期实习和校招,分享小伙伴们提供的面经,和我之前对面试的题目总结,同时提供一份答案,文末有,一定要收藏好哦!

互联网大厂简介之哔哩哔哩:哔哩哔哩,英文名称:bilibili。该网站于2009年6月26日创建,是中国年轻一代的标志性品牌及领先的视频社区, 被网友们亲切地称为“B站” 。2018年3月28日,哔哩哔哩在美国纳斯达克上市。2021年3月29日,哔哩哔哩正式在香港二次上市。主要工作地在上海

先来写一段代码吧,题目是:


将"I am a boy"变成"boy a am I".

题目很简单,主要的思路是,将字符串按照空格分割,然后存入一个切片中,将切片内元素倒序输出,再拼接成字符串即可。时空复杂度都为O(n)如果你能想到更优的解法,欢迎评论~


// 将"I am a boy"变成"boy a am I". 
package main

import (
    "fmt"
    "strings"
)

func StringTrans(s1 string) string {
    // 首先将字符串按照空格分割
    words := strings.Split(s1, " ")
    s2 := ""
    for i := len(words) - 1; i >= 0; i-- {
        s2 += words[i]
        s2 += " "
    }
    return s2
}

func main() {
    s1 := "I am a boy"
    fmt.Println(StringTrans(s1))
}

说说HTTP和HTTPS的区别。

HTTP即超文本传输协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTP和HTTPS的区别在于:

(1)http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

(2)https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

(3)http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

(4)http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

交换机和路由器的区别。

交换机主要工作在OSI模型的第二层(数据链路层),使用MAC地址来转发数据包,适用于局域网内的数据通信和网络资源共享。它们通常用于连接多个计算机、服务器和其他网络设备。交换机能够高速、低延迟地转发数据包,但缺乏跨网络的路由能力。

路由器则主要工作在OSI模型的第三层(网络层),使用IP地址来路由和转发数据包,支持跨网络的路由选择和流量控制。路由器能够连接不同的局域网、广域网和互联网,具有跨网络的路由能力,能够进行网络地址转换(NAT)、配置防火墙、负载均衡和虚拟专用网络(VPN)等高级功能。

此外,交换机通常在同一时刻进行多个端口之间的数据传输,每一端口都可视为独立的物理网段,连接在其上的网络设备可以独自享有全部带宽。而路由器则具有分割广播域的功能,可以防止广播数据在不同网络之间传递。

网络层通过IP协议来选择路线

接收到来自传输层的数据段之后添加IP首部封装成数据包,加入源IP地址和目的IP地址。

IP协议所处的网络层规定:数据报通过怎样的路径才能到达对方计算机,并传送给对方。

数据链路层借助ARP协议凭借MAC地址通信

数据包还要封装成帧,加入CRC校验位,源Mac地址和目的Mac地址

物理层传输比特流

服务器响应请求

服务器接收到比特流之后,将比特流转换成帧,比对目的Mac地址,拆包,上传到网络层,网络层比对IP地址,拆包上传到传输层,传输层对数据段进行确认,按照TCP首部的序号以原来的顺序重组HTTP请求报文,保证数据传输的可靠性。最后传给应用层。生成一个对应请求的响应报文,报文的主体就是一个HTML页面

服务器将其按照上述流程传回浏览器

通过传输层、网络层、数据链路层的层层封装,最终将响应报文封装成二进制比特流,并转换成其他信号,如电信号到网络中传输 , 反向传输的过程与正向传输的过程类似,就不再赘述 。

断开TCP连接

通过四次挥手机制断开TCP连接

浏览器显示界面

浏览器拿到资源后,对页面进行加载、解析、渲染,最后呈现给用户。

 怎么找到服务器的IP地址?

可以从这个角度回答:浏览器会调用socket库中的getHostByname程序并把对应域名填写到参数中,之后发起请求,DNS服务器会返回具体的IP地址,操作系统把这个IP地址写入到浏览器指定的内存地址中。当浏览器访问的时候从这块内存中取出IP地址并和请求信息一并交给操作系统处理。

给你一个图,有很多节点,怎么样找到最短路径?

寻找最短路径一般有四种算法:

(1)DFS寻找单源最短路径;

(2)弗洛伊德算法,寻找多源最短路径;

(3)迪杰斯特拉算法;

(4)SPFA队列优化等。

介绍一下go的协程。go的协程是一种轻量级线程,与线程相比,不受操作系统调度,协程调度器由用户应用程序提供,协程调度器按照调度策略把协程调度到线程中运行。在go中启用一个协程,使用关键字go

为什么go协程是轻量级的?(1)go协程调用跟切换比线程效率高(2)go协程占用内存少,执行go协程只需要极少的栈内存,大概是4-5KB,默认情况下,线程栈的大小为1MB。

介绍一下管道,它有什么用?

channel一般用于协程间的通信,也可以用于并发控制。比如主协程启动N个子协程,主协程等待所有子协程退出后再继续后续流程。如果没有管道来控制并发,主进程在还没有等到子协程启动完毕就已经结束了。

管道还可以用来进行超时控制等。

你知道什么是跨域问题吗?

跨域问题主要是由于浏览器的同源策略造成的,是一种安全限制,防止恶意网站窃取数据。

跨域问题发生在不同的网站之间进行通信时,例如,当一个网站的页面尝试使用Ajax或JavaScript去请求另一个不同源(即协议、域名或端口不同的网站)的资源时,浏览器就会阻止这种跨域请求。跨域问题本质上是浏览器的一种保护机制,旨在保护用户数据的安全。解决跨域问题通常需要服务器端的配合,通过设置HTTP响应头来允许跨源请求,或者使用代理服务器在同源环境下进行数据请求和处理。

有读者反馈说面试考到了原题,推荐你看!

近两年,很多小伙伴都会选择go作为主语言参加招聘,然而市面上有关的资料零零散散,质量也残次不齐,让人十分头疼。如何系统学习go语言,快速达到大厂的招聘要求,这是很多小伙伴的核心诉求,于是乎,八股文来了!

笔记一共134页10个大章节,涵盖Go八股文、kafka八股文、redis八股文、计算机网络、操作系统、数据结构、容器技术、MySQL、微服务等。

备战25届实习:B站视频技术部面经插图

3正文

笔记图文并茂,很是详细,代码也十分清晰,而且和文字一样均可复制,很适合最近有准备面试的朋友观看。

备战25届实习:B站视频技术部面经插图1
备战25届实习:B站视频技术部面经插图2
备战25届实习:B站视频技术部面经插图3

资料源自网络,版权归原作者所有,如有侵权请联系删除

如何获取上述资料?

扫描下方二维码

扫码免费领👇

备战25届实习:B站视频技术部面经插图4

根据提示 无偿秒发

本文链接:https://www.yunweipai.com/45157.html

网友评论comments

发表回复

您的电子邮箱地址不会被公开。

暂无评论

Copyright © 2012-2022 YUNWEIPAI.COM - 运维派 京ICP备16064699号-6
扫二维码
扫二维码
返回顶部