• 哔哩哔哩面试经验分享


    一场突如其来的疫情席卷了上海,招聘季的金三银四也不复往年荣光。疫情,战争,坠机……2022年越来越魔幻了。今年的职场,旁人我不知道,身边的朋友都是求稳,同事也鲜有跳槽的。作为一名面试官,今年收到的简历总体质量也不如去年那么好。说了很多年的凛冬将至,现在是真的感受到了一丝寒冷。

    不过虽是寒冬,另一方面看其实竞争压力也相对小了些。风险之中也有机会,分享一次去年年底在B站面试的经验吧,准备跳槽的朋友或许用的上。

    那是一个没有疫情的上海,那天我闲来无事,刷刷Boss直聘,偶然弹出一条Bilibili的招聘信息,说道:

    不好意思放错图了。

    于是跟Bilibili的面试官来了四轮隔着屏幕的亲密接触。因为没打算在年底跳槽,而这个岗位又是急招,于是不了了之。但前三轮技术面还是很有参考价值的,给各位想社招进大厂的朋友一点参考。

    个人概况:本人普通双非本科毕业,工作四年半。

    职位概况:哔哩哔哩C++音视频流SDK岗。

    一面  纯技术

    1-自我介绍,项目经历

    这个大家各不相同,以一个流利但不失亮点,响亮又不失文雅的方式介绍一下自己就好。不过据我了解,面试官一般会利用这段时间看一下你的简历,因为一般顾不上提前看。且职位越高的面试官出现这种情况的概率越高。

    2-根据项目经历开始问细节

    同样因人而异,主要是根据简历上提到的技能和项目经历发问。我这里大概问了我GPU和CPU的区别,Zigbee的带宽,AD的采样精度,硬盘存储速度,消息订阅发布的机制等等。这个环节大概就是确认一下过往项目经历的真实性。

    3-看看代码

    来,先看看这段代码哪里有问题?

    1.  void getMemory(char *p,int size){
    2.     p=(char*)malloc(size);
    3.  }
    4.  int main(){
    5.     char* str=NULL;
    6.     getMemory(str,10);
    7.     strcpy(str,"hello");
    8.     printf(str);
    9.     free(str);
    10.     return 0;
    11.  }

    这个环节就是考基础了。这里大家应该能很快看出来getMemory这个函数用了值传递而非址传递,因此指针str一直是NULL。那么对str做的strcpy操作会使程序发生段错误,是一道很基础的C语言面试题。

    而通常这种代码题不会答完一个答案就结束了,面试官一般会根据你的回答刨根究底的追问,看你能不能抵挡住。

    于是面试官接着又问什么情况会引起段错误,答内存溢出,访问非法地址,二进制目标格式不兼容等。

    面试官接着问类似的内存泄漏是如何引起,最终会导致什么后果。答未释放申请的内存,程序最终会不断占用内存直至崩溃。

    4-手撕代码

    来,链表反转。

    大家上网一搜一堆的。这里我用了头插法。面试官让换一种方法,于是换了尾插法。

    再来,斐波那契数列获取指定序号对应的值。这里我用了递归实现。

    1. int func(int num){
    2.     if(num==0){
    3.         return 0;
    4.     }else if(num==1){
    5.         return 1;
    6.     }else{
    7.       return func(n-1)+func(n-2);
    8.     }
    9. }

    然后面试官便问我不用递归如何实现。答不用递归就用循环,于是吭哧吭哧写了个斐波那契数列的循环生成放到了vector里。

    然后面试官继续问,假如我要获取第4G个数据的值,那你这个vector不就撑爆了,如何优化?

    哦对,好久没刷过题,犯了低级错误。答不用存这么多,只存2个数就够了(斐波那契数列中第三个数开始,每一个数都是前两个数的和)。

    5-tcp/udp的区别?

    基础题了。tcp基于连接,三次握手,四次挥手,保证可靠,udp可以广播,不用连接,不保证可靠之类的说了一大堆。

    抓住不丢包这个点问为什么不丢包?答有ack确认。

    丢包了怎么办?

    丢包用包号连续性确认,根据需求重发或忽略。粘包问题则用包长度解决。顺便聊了聊mqtt的发送级别。

    6-智能指针的作用是什么?

    C++基础题了。用RAII的思想,将资源用对象的方式处理,在析构函数中释放资源。unique_ptr保证独占,没有拷贝构造函数,shared_ptr有引用计数,weak_ptr不参与引用计数,可以解决循环引用的问题。

    7-const的作用

    const int func(const int& arg)const{} 这三个const的作用?

    第一个是返回值不许被修改,第二个是入参不能被修改,第三个是类内非静态成员变量不许被修改。

    接着问,如果想修改需要怎么做?答mutable关键字。

    接着问,什么时候会用mutable关键字?

    我这儿有点没明白他的意思,这谜底不就在谜面上吗?但我还是乱七八糟扯了几句,说有可能这个函数要对上层隐藏实现细节,或者需要被修改的这个成员变量需要更新但不影响对象的状态等等。面试官听完也没说什么。

    8-编译原理底层知识

    面试官问我最近在开发什么项目,我说在写编译器。他就说你给我讲讲编译流程,我说预处理,词法分析、语法分析、中间代码生成、中间代码优化、生成目标代码等等。

    他接着问编译和链接的区别是什么?这个问题我没看过官方回答,根据自己的理解说编译就是将源文件编译为目标文件,链接就是将这些目标文件链接起来变成一个最终的可执行文件(后来面试完上网搜答案,跟我自己临时想出来的说法一模一样)。

    一面过。

    二面  纯技术

    1-先做个自我介绍

    于是面试官趁我自我介绍的时间快速看了一遍我的简历。

    2-手撕代码

    二叉树反转。

    我用了递归实现。

    1. void Mirror(TreeNode* root) {
    2.     if(root == nullptr)
    3.      return nullptr;
    4.     TreeNode* node = root->left;
    5.     root->left = root->right;
    6.     root->right = node;
    7.     Mirror(root->left);
    8.     Mirror(root->right);     
    9. }

    接着问,这中间镜像部分代码封装成一个函数试试。又考察址传递和二级指针的知识点。

    接着问,二叉树中间再加个mid节点,如何反转?

    这里递归的语句里加一句Mirror(mid)就好。

    3-编译器底层知识

    cpp返回对象时,编译器会做哪些优化?

    正好最近看过这个相关的书。答主流编译器都对直接返回对象做了优化,可原地构造,比使用std::move还要省一次移动构造过程。

    4-平常遇到新项目或新技术会怎么学习?

    答通过开源项目、经典书籍、网课等。

    5-简历上的项目经历细节

    这里问的我想不起来了,就是根据简历上提到的项目开始问细节,问设计细节,问技术细节,问实现细节。反正全是我简历上项目涉及到的知识点,都在射程范围之内。

    一般面试官都会盯着简历找点发问,所以大家简历上写的内容一定要准备充分。

    二面过。

    三面  技术主管

    这里开始就没手撕代码了,大佬上来先介绍了哔哩哔哩的福利,落户啊之类的。然后开始聊人生,聊理想,聊规划,聊目的,聊愿景。

    1.你和你的领导有了分歧怎么办

    2.用过哔哩哔哩App吗

    3.关注了哪些up主吗

    4.为什么要投我们公司

    5.个人未来的打算和规划

    6.我感觉你们领导对你也挺重视的,挺重用你的,你为什么会想这个时候跳槽呢?

    这些问题就如实回答吧,第一题考察你好不好管理,第二题看你对公司产品印象如何,第三题看你的兴趣爱好,第四第五第六看你的思路、规划。

    7-你现在工资多少?

    我故意往高了说,然后依然被鄙视了:你们芯片行业确实穷啊。

    我说芯片行业老板对硬件工程师比较重视,软件的地位相对差一些。

    他说确实,他当年也是从嵌入式单片机行业转到互联网的。然后巴拉巴拉聊了些人生感悟,相谈甚欢。

    8-你有什么要问我的吗?

    那会儿爱奇艺裁员还在热搜上挂着呢,于是我问了爱奇艺裁员对中长视频行业有没有影响,尤其是您公司。

    他说影响肯定有,不过B站是UGC(用户生产内容)的模式,跟爱奇艺这种买剧或者跟娱乐圈有深度绑定的模式还是有差别,况且最近娱乐圈在整顿清朗,所以爱奇艺们会受影响。B站总体而言影响不大。

    我接着问了这个岗位具体的工作内容,然后结束三面。

    三面过。

    四面  HR面

    HR面就比较常规了,依旧是聊履历,聊规划,聊人生。这里回答得体就好,准备一些官方回答,一般不会出差错。

    不过她想让我年前入职,说年后不一定有HeadCount。我说年前估计不行,我年终奖还挺多的。前面聊人生的环节我就有意暗示出我其实没想在年底跳槽的想法,主管大大也是慧眼如炬,基本上大家就心知肚明,心领神会,心照不宣的明白了。后面大家客套一番,结束四面。

    总的来说这个岗位偏C,音视频流也不是我想从事的方向,但哔哩哔哩各位面试官人都很nice,我面试的时候都是前脚还在公司开会,下一秒就拎着电脑参加面试了,啥都没准备,面试官也没有在意说你怎么题都不刷就来面试了,我都是临场现想的,耗费了挺长时间,但人家也没说啥。对B站这个公司印象非常好,没能合作只能说缘分未到,也许来日方长。

    祝大家都能找到理想的工作。

  • 相关阅读:
    上市公司财务报表精讲系列一:黄山旅游
    线路质检用的到底多不多?
    Android 11.0 默认开启开发者模式和开启usb调试模式
    梯度下降优化算法综述,梯度下降法 神经网络
    特拉斯成为英国首相后 “英镑危机”的风险正在上升
    数据库总结
    电脑复制和粘贴的时候会出现Hello!
    opencv学习笔记二——图像基本操作
    2024华为OD技术面真题-座位预约管理系统
    因特网采用的标准网络协议是什么
  • 原文地址:https://blog.csdn.net/qq_38639426/article/details/125441763