bilibili视频云技术部面经(社招)


数个月以前有幸经介绍面试b站,当然自己也是特别期待,那至于公司规模什么的相信大家多少有数,套路少, 直接现场面试。此次一共3轮技术面,本人在第三轮不幸被淘汰,如果只想看通过面试的小伙伴可以不用继续看了(:з」∠)

这次没有具体面试的岗位,视频云技术部服务端主要业务是视频流处理,主要使用c语言,本人这方面只是对ffmpeg略知一二,因此面试官没有过多提出这方面问题。另外需要说明的是,此次面试是社招面试,套路可能有些许不同。不用过分纠结某些细节。

我先前实习的公司,主要做PHP相关的项目,有一部分通过golang实现,基本上golang这一块我是自学,另外掌握一些java,就是当时我的水平。上来先让我描述一下自己的项目。说了一通。我认为公司的技术选型有问题,日志系统硬上mongodb,这些我在简历里面体现了,典型给自己挖坑。后面我会说一下我本人给自己挖的坑,希望小伙伴不要和我犯同样的错误。我向面试官描述了我的业务场景,面试官问我为什么不用hbase,我不会hbase,后来查阅资料,其实我的需求这两个都不需要用,略过。然后还问了一些常用的开源软件,zk等,用过会,没用过自然不会。这里多说一句,如果你曾经用过某个开源软件,但是太久忘了,那么面试前最好的方式是,了解它怎么配置,一来比较能体现你用过,再来如果请你分析开源软件是否适合某个业务场景,你通过配置文件往往能快速了解该软件的特性,以便做出判断。当然,最好的方式还是勤做笔记,国内互联网就是这样,大部分工作靠勤,而不是智商。

然后开始问算法,快排,基数,堆排,计数,时间复杂度空间复杂度,非常熟练。单链表反转,深度优先遍历。熟练。

又问了一些php的问题,写闭包的时候怎么使用闭包外的变量?use关键字。说几个魔术方法,都是干什么用的?说include和require的区别?array_*()函数系列,几个常用的,都干嘛的?8大内置数组?PHP各个版本之间区别,PHP7特性,PHP的内存泄漏问题(鸟哥博客有说)我接触过swoole,也问了一些使用swoole过程中踩的坑,对swoole的看法等等,这部分比较发散。

接下来是二面,top命令,每一列都是啥意思,netstat,iostat,cpuinfo。问了redis, 这方面问很多,集群化配置,我用过tweproxy。SET命令执行流程,基本数据结构(string,list,hash,sorted set,set),redis INFO命令,说一下一致性hash算法(集群化常用到这个,建议掌握)。redis主从策略,不同场景下策略的选择。

nginx部分,先问了个小技巧,怎么让nginx崩溃,实在不会,不知道小伙伴有没有想法。然后说说nginx启动流程,事先准备过。然后问配置问题,怎么根据cpu数量做配置,譬如默认多少个worker进程,work process 怎么设置,nginx和php通信问题?fast-cgi。有什么坑?

网络方面,长短连接区别,socket通信原理。

三面是部门技术总监面试,上来给出场景,怎么统计当前某个直播房间的观看人数,并在网页上显示给这个房间的观众和主播,要求尽可能高的实时性。我的想法是直播间都有附带一个基于websocket的聊天室,我们只需要去数当前server端的fd数量就可。我认为可行,但是总监不太满意,毕竟有一个前提条件是,你得有一个聊天室。后来我问了了解直播技术的同学,他说rtmp服务器推流的时候,可以统计当前接收这个流的客户端数量,这个实在不会。

还有一个问题是敏感词过滤,也是b站重点需要做的一项业务。我当时对kmp掌握不熟,坑了,循序渐进,继续问怎么对next数组优化,不会。然后,总监说了一个喷泉算法,我从来没听过,网上没找到过详细说明的博客,有小伙伴会吗。这里说一下,当天总监在开会,二面三面之间过了很久,有点疲劳,三面还没有发挥好,不过主要还是不够扎实。

关于简历,其实老实说,我简历上说的实习项目有部分夸大实际,这夸大的部分其实是我自学的,有这些固然好,但是应届生最终看重的还是基础,当然如果深入了解某些热门的开源软件,肯定是没有坏处。即可以从中学习巧妙的设计,又扩展知识。关于坑自己,本人觉得倒可以假装自己是面试官,我看到你的简历写着你会redis,我想问什么?如果我也在用,可能问的比较多的,特性,配置,性能优化,业务场景,这些属于与代码不沾边的,完全可以网上搜搜博客就对答如流,至于源码,不要过多纠结,特别不要在简历上装x,也许你会碰到特别熟悉源码的大神,那你看的那点源码的皮毛,你的理解能力,就给面试官一种很菜的感觉了。

全部评论
牛牛牛
点赞 回复 分享
发布于 2016-09-29 00:08
我加有HR微信,没有校招必须实习
点赞 回复 分享
发布于 2016-09-27 21:00
b站这么火
点赞 回复 分享
发布于 2016-09-27 18:53
楼上都是逗逼么,官网最下面“加入我们”,还有拉勾网有注册。。。
点赞 回复 分享
发布于 2016-09-27 18:44
楼主怎么投的
点赞 回复 分享
发布于 2016-09-27 18:44
b站我的dream公司
点赞 回复 分享
发布于 2016-09-27 18:43
楼主怎么投的
点赞 回复 分享
发布于 2016-09-27 18:41
楼主怎么投的!
点赞 回复 分享
发布于 2016-09-27 18:41
楼主怎么投的?
点赞 回复 分享
发布于 2016-09-27 18:30
楼主怎么投的?
点赞 回复 分享
发布于 2016-09-27 18:23
楼主怎么投的
点赞 回复 分享
发布于 2016-09-27 18:18
b站校招么???????
点赞 回复 分享
发布于 2016-09-27 18:15
怎么投的+10086
点赞 回复 分享
发布于 2016-09-27 18:14
楼主怎么投的
点赞 回复 分享
发布于 2016-09-27 18:10
求路子
点赞 回复 分享
发布于 2016-09-27 18:07
楼主怎么投的
点赞 回复 分享
发布于 2016-09-27 18:03
楼主怎么投的
点赞 回复 分享
发布于 2016-09-27 17:43
楼主怎么投的?
点赞 回复 分享
发布于 2016-09-27 17:42
楼主怎么投的?
点赞 回复 分享
发布于 2016-09-27 17:40
楼主怎么投的
点赞 回复 分享
发布于 2016-09-27 17:40

相关推荐

我知道自己这个念头不好,但是真的很羡慕😭大家的父母长辈都能帮到自己吗?
大飞的诡术妖姬:父母都是普通打工人,身体也不好,能供我读到本科毕业很不容易,毕业以后帮衬心里会有罪恶感。虽然可能会错过很多风景,但还是想活的心安理得。
点赞 评论 收藏
分享
面试官人很好,态度和蔼可亲,没答出来时也会引导你去思考。由于是晚上面的,导致我白天一天都有点紧张,面的时候状态也不是很好,正常可能面试官提问完应该思考几秒再答,而我就像抢答一样一口气把所有会的都说出来,这样就导致逻辑比较混乱,东一句西一句的。首先是自我介绍,先把会的技术大致讲一下,由于我八股背的多所以着重讲了一下,Java,go,jvm,MySQL,Redis,计网,操作系统这些,然后一小部分闲聊,然后先问了一下项目,面试官问我这个项目是否落实之类的,直接坦言说是写的练手的,包括之前也写过IM通讯,外卖之类的。然后面试官就把提问的重点放在了八股上。先问了Java:类加载器(答:3种+自定义类加载器、tomcat、原因+双亲委派+好处)JVM参数(答:xmx,xms,newsize这些,问我是如何设定的,我回答是把内存分一半给堆,再把堆分一半给新生代,这方面确实不太了解)然后问了一下并发相关的:线程池(答:线程池的7个参数(忘了线程工厂和阻塞时间了),3个重要参数,还有线程如何启用,为什么要设计最大线程数之类的,提到Java栈默认分配1MB运行时不可以更改)AQS(答:先讲clh是自旋锁+list,然后是AQS在这个基础上做的两个优化,然后举了一下reentrantlock根据state如何获取资源)CAS(答:使用三个字段,aba问题,然后将通常搭配自旋锁实现,面试官问通常会自旋多少次,这个不太了解,答的100,然后问100次大概多少秒,回答微秒级,然后面试官讲了一下怎么做资源可能没用完,意识到可能还需要进行阻塞操作)然后考虑一下Linux命令(top,ps,如何使用管道符过滤线程和使用Linux启动线程没答出来)然后问Redis:持久化机制(答:三种aof,rdb,混合,aof的三个参数刷盘策略,rdb以快照保存,使用bgsave会使用子线程来保存不会阻塞,而aof虽然会阻塞但是只在写完数据后追加一条命令,不会太影响,然后是他俩的优缺点,还有混合是怎么保存数据的)集群模式(答:三种,主从复制到缺点再到哨兵机制,正常使用三个哨兵互相监督,主节点挂了投票选主哨兵然后选主节点,然后额外讲一下脑裂的问题,主节点进行数据更新然后把命令写入aof来同步从节点,最后cluster集群,如何实现,使用16383个哈希槽(艹答成16384了),先根据哈希码取余,再根据节点数取余决定放在哪个节点上,然后问了一下我会怎么选集群模式,首先是cluster的问题,会让管道操作之类的失效,然后哨兵会导致整个集群结构变得复杂,使用小项目可能会考虑哨兵,大的考虑cluster,然后考了一下cluster如果一个节点挂了怎么办,根据节点数重新取余然后数据转移,面试官说这么转移比较慢,有没有别的办法,我隐约记得使用一个类似环形数组的方式,想不起来了)然后考了一下MySQL的b+树(这方面的知识点太多了,导致我什么都想讲逻辑就比较乱,讲了一下聚簇索引,树的叶子节点对应着一张页16KB,MySQL有一个区的概念,把这些页放在同一个区中,这样叶子节点的双向链表遍历时速度更快,然后b+树的扇出比较大(非常二,说成扇度之类的,面试官以为说的是扇区)这样层数就比较小,一行1kb数据的话3层可以放心2000w数据)其他的暂时想不起来了算法是lru,面试官问要不要提示,我说写个,然后写了10分钟左右,说大概写好了,但是面试官指出了2个小错误,第一个马上就改回来了,第二个一直没看出来(大脑这时候已经停止工作了)反问:问学习建议,说根据实际的项目进行深入,考虑应该怎么做,还问了一下组里面是做Java的吗?面试官说他是做go的,组里什么语言都有,语言影响不大,连忙补充了一句我对go的底层有深入源码的学习)结束。总体感觉答得不太好,没有太体现出深度,细节也不够全面。
下一个更好呗:佬,我投完云智一直没消息,多久约的一面啊
查看14道真题和解析
点赞 评论 收藏
分享
评论
7
22
分享

创作者周榜

更多
牛客网
牛客企业服务