首页 > 抖音快手 > 今天大佬告诉你B站崩溃的背后b站高可用架构到底是怎么样的
2022
09-16

今天大佬告诉你B站崩溃的背后b站高可用架构到底是怎么样的

  1、自我介绍(工作情况、项目概况、用哪些技术、自己负责什么、擅长什么、优势是什么) 答:领导你好我叫**16年本科毕业于****大学毕业后在合肥卫宁一家医疗软件公司工作技术上前后端、数据库包括项目部署都做属于全栈开发18年来到上海入职京东一直到现在做的是线下商场的后台及接口开发;老的项目还是mvc新项目都做了前后端分离前端用到H5、小程序JQuery、EasyUI、VUE、Angular后端用到Framwork 4.5,4.6 、NetCore、Java数据库用到SQLService、Mysql、MongoDB、Redis中间件用到RabbitMQ消息队列在公司是核心开发的角色负责老项目的维护及二次开发和其他开发相比我的优势在于沟通交流能力比较强还有我的责任心和学习能力也是比较强的如果有幸加入B站我相信我能快速融入团队快速掌握公司相关的技术谢谢领导。 2、介绍下你做的项目及你在工作中的定位 答我负责一些老项目的维护像商场、商户的后台、内容管理、广告、推荐位后台、游戏的后台和接口对外的开发平台接口新项目包括应用插件、勋章等项目老项目是主要开发的角色新项目一般是项目负责人的角色负责项目的表结构设计、任务的安排及分配夸部门之间的协作调度。 3、离职的原因 答1、目前工作5年了技术上也遇到了瓶颈目前的公司做的事情大部分都是重复的增删改查希望换个环境拓宽下技术和视野也希望学习更多更新的技术  2、目前在职级上虽然晋升了但是在上很难晋升因为公司的领导都是6、7年的老员工我自己也希望做管理开发岗  基于以上两个原因想换一个平台。 4、未来的规划是什么 答1-2年内花半年左右的时候熟悉公司的技术栈业务再花一年多时间沉淀深入的学习所用的技术且时刻关注学习新技术2年以后如果有机会我希望可以做开发管理岗自己带团队。 5、结婚没、住哪现在的公司在哪 答已结婚定居上海现公司在上海北外滩。

  1、设计表结构的时候要考虑哪些问题 答我们目前用的数据库是MongoDB (1)设计表的时候首先要关注表字段的可扩展性例如性别这个字段正常可以用bool类型,true为男false为女但是如果是未知呢所以尽量避免用bool类型可以用int类型或者枚举类型代替 (2)其次需要考虑表的可维护性及可读性例如主表里有奖品信息的字段如果奖品有多种类型呢甚至对应多个奖品的情况我这边选择独立一张表出来通过字段关联存放奖品信息而不选择放在主表字段里

  2、关系型数据库和非关系型数据库有什么区别你们现在用的是哪个数据库为什么 答关系型数据库包括SqlServe、MySql、Oracle非关系型数据库有MongoDB、Redis (1)nosql的存储格式是key,value形式、文档形式、图片形式等等所以可以存储基础类型以及对象或者是集合等各种格式而数据库则只支持基础类型 (2)nosql数据库将数据存储于缓存之中关系型数据库将数据存储在硬盘中自然查询速度远不及nosql数据库 (3)关系型数据库可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询 (4)关系型数据库支持事务安全性高 我们存储的会员数据量比较大且每个月都产品过亿的订单及日志数据所以选择非关系型数据库MongoDB

  3、数据库查询优化了解吗说说怎么优化(索引相关) 答可以先在查询分析器中查看执行语句的时间分析语句是否用到了索引索引是否生效  (1)尽量避免select*需要哪些字段就查询哪些字段  (2)一些公用的数据可以先拿到内存里后面要用直接拿而不是每次用到的时候重新去数据库取主要是减少数据库交互提供性能

  4、说说索引(聚集索引、非聚集索引联合索引、最左匹配原则、非聚集索引要回表查询)

  答索引分为聚集索引和非聚集索引用非聚集索引查询一般需要再次回表查询因为非聚集索引存储的是主键ID聚集索引查询就好似书的目录用索引可以快速定位某一块区域数据如果不用索引就需要全表扫描还有多个字段组成联合索引一般要符合最左匹配原则 in or 关键字就不走索引like模糊匹配前通配不走索引后通配走索引

  答如果只查询ID用非聚集索引就不用回表因为非聚集索引上就存的是ID

  6、为什么使用索引后查询效率高呢 答这个就涉及到索引和数据的结构了类比书籍的目录页索引通过B树的结构存放数据横向数据越多纵向的高低越低和磁盘的交互就越少查询得速度就越快

  7、有用过redis吗你项目中使用场景是什么说说你对redis的理解 答:我们项目中用到的redis场景不多一般用于存储计算的数据我们有些通过BI统计计算的数据每次计算耗时比较长这些数据可以存放到redis中设置一天有效期后面访问的时候就比较快了 redis的类型有string类型hsah可以用于购物车的场景List朋友圈展示set共同好友zset 排名 redis因为数据都在内容中所以查询起来非常快但是它会通过RDB和AOF持久化数据到磁盘里去 RDB是在指定的时间间隔内生成数据集的时间点快照它保存了 Redis 在某个时间点上的数据集 AOF 文件是一个只进行追加操作的日志文件 一般当redis挂了数据恢复时会组合来用先用RDB恢复某个时间节点的数据后面一部分丢失的数据再用AOF数据去恢复

  8、java项目做过了多久时间能自己独立搭一个java项目吗 答目前刚接触java相关项目用了2个月左右参考其他项目框架由架构师搭好我们主要还是写的业务代码目前还不能自己独立搭一个java项目但是我相亲给与一定的时候学习是可以独立完成项目的搭建的。

  9、你有什么想问的吗(问了开发语言、项目概况) 答1、我想了解下咱们的项目大概是做什么的(内部的一些库存盘点等系统)  2、咱们用的开发语言是什么(主要用java、也会有一些go语言相关的)

  三面(项目) : (三天后通知四面) 1、介绍下你现在的研发团队的情况(产品、运维、前端开发、后端开发、测试) 答8个左右产品3个运维1个DB10个前端25个左右后端10个左右测试 2、现在这家公司做什么业务你负责哪些项目 答做的是线上商场的系统用户端主要是H5和小程序会给商场提供一些功能包括商户的活动优惠团购等提供发优惠券、问卷、一些游戏等功能我主要负责的项目有后台商场商户的维护二次开发、内容管理、插件整合后台售卖游戏的后台对外的开放平台接口等、 3、说说你从0到1的一个项目你在项目中承担什么角色 答前端时间做的勋章的项目功能大概是会员消费一定金额后完成任务后点亮对应的勋章并发放奖励用户端用小程序后台页面用VUE后台接口用java我承担的是项目负责人的角色 (1)根据产品提出的需求及UE设计项目的表结构 (2)根据需求细分任务到具体责任人整体把控项目的周期(1个半月左右) (3)基础控件数据的提供核心业务逻辑的开发vue页面、java接口的demo页开发 (4)跨部门协调以及项目的部署 4、如果让你重新做一次你举得可以改进的项目你觉得有哪些点可以优化的 答我的一个客户经理项目需要跨表查询当时领导提供的方案是在MongoDB上建视图MongoDB4.6及以上版本才支持视图且查询效率慢如果重新做我觉得可以换成Mysql关系型数据库因为可以多表关联查询 前端用框架这个项目的前端用的html原生js这里的动态查询写了几百行的DOM元素操作费时费力。 5、一个数组如果让你找到最大数你会怎么弄 答减少空间的话可以用冒泡排序找减少时间的话可以用二分法或者分段找到每一块最大的再继续找。 6、如果我们现在要做一个库存盘点的系统你怎么设计表结构设计哪些表 答库存表包含的字段有 物品的类别名称、编号、初始数量、剩余数量等信息  分配表包含的字段有 人员信息包含手机号微信号名称等、物品类型、物品名称、编号  还有一些分配记录表日志表记录分配和修改的信息方便后面做库存盘点统计用 7、公司采购一批电脑新员工入职领电脑后本人扫码确认领取这块代码你如何实现(后台设置领取人信息、微信扫码确认获取微信相关信息和后台设置的人员信息比较如果一致则确认本人已领取) 答可以结合微信小程序员工入职分配电脑后台录入相关人员相关人员拿到电脑后扫码确认领导电脑扫码后微信授权获取人员相关信息与后台录入的信息比较(姓名、手机号、微信号等)如果一致则修改后台确认字段参数如果不一致做出提示并通知相关人员 8、你有什么想问的吗(问了团队的人员情况) 答咱们目前的团队有多少还准备招几人呢咱们的内部项目已经启动了吗

  1、说说你们公司的人员结构和你的位置及承担的角色 答见3面1 2、项目中遇到的难点如何解决以后怎么避免 答在去年疫情刚开始的时候刚来上海的前两个星期在家办公我做的客户经理项目要上线c;当时测试环境测得差不多了发到线上测试的时候发现数据只能读不能写因为测试环境数据库是单台的线上是主从多台的因为是新项目、4.6以上版本才支持MongoDB视图MongoDB的驱动升级到了最新网上资料也很少查阅了相关资料和问同事最后阅读了相关源码后发现需要加一个参数才可以写到主库里中间时间大概花了3天左右但是上线一个星期后另外一个部门的领导告诉我们MongoDB官网又升级了驱动现在直接可以用了不用加那个参数了我可以认为刚好那几天我们升级的最新驱动是官网发布的有问题的驱动一周后他们解决后又发布了最新驱动;这是我遇到比较坑的一个难点吧。 后续想要避免这样的问题我们得把现在稳定运行的驱动打成自己的Nuget包并将此次问题上传公共文档(wiki)后续有其他部门同事也需要使用MongDB驱动的时候可以用我们内部打的驱动避免不可预知的意外同时我们测试环境的生产环境尽量保持一致避免某些问题上线、在项目中如何对接(对接前端第三方其他后端应用) 答(1)大部分项目已经做了前后端分离我们作为后端开发写完接口提供swagger文档给前端开发里面有具体的接口地址入参出参其他不清楚的地方在单独沟通下  (2)对接第三方我们提供对外统一的文档地址里面提供了接口地址、加密方式demo、客户端dll、调用示例python等)入参出参等  (3)对内调用其他后台接口一般对方提供Nuget客户客户端里有入参返回值如果没有客户端需要自己这边根据对方提供的入参返回值调用接口 4、平时怎么跟同事沟通交流 答我觉得工作中除了责任心工作能力之外最重要的就是沟通能力这取决于人的性格、更取决于沟通的技巧  (1)不要抱着有事我找你没事我都不认识你的态度去交流平时需求对接正常沟通交流人家有事找你即使不是你负责的在不耽误其他事的情况下帮忙解答一下早上上班的见面了打个招呼吃饭的时候聊聊天或者经常跟自己组的人或者关系比较好的人一起吃饭聊天遇到不熟的也可以聊聊这样你后面沟通的时候很轻松而且作为程序员人脉也很重要以后不在一个公司了技术问题可以相互交流后面想跳槽也可以相互内推  (2)多分享分享可以是工作中的经验也可以是掌握的技术知识点当然人际关系更多的是物质的分享作为程序员工资也不低不在乎那几十块钱吧平时买点零食、水果之类的啊边上的人发一发俗线c;不管怎么样人家心里觉得你这个人不错前段时间我第一次做java要接消息队列没弄过不会弄我找java架构师他比较忙总是敷衍一下或者发些链接资料让我看我还是搞不定啊等下班晚上看他在吃外卖的时候我买了瓶饮料过去“春哥喝瓶饮料顺势说我接的队列的还有问题有时间了帮我看下呗”果然第二天写了个demo给我到我电脑前帮我运行起来了搞定。 5、以后的规划 答我想1-2年内在掌握现有业务技术的前提下学习更多更新的技术后面有机会的话也是希望做开发管理岗位俗话说不想当将军的小兵不是好小兵后面如果有机会也会去独立带团队。 6、离职的原因 答(1)目前用的技术并不新且在公司呆了3年左右现在大部分都是业务代码重复的增删改成现在想去换个环境接触下不同的技术及业务学习更多的东西  (2)目前的同事在公司的年限比较久稳定性也比较高目前我想做开发管理岗在现公司的几率也不大也希望在新公司掌握现有业务后如果有机会也是向上升吧 7、现在的薪资多少 答 N*14 8、你有什么想问的 答咱们的主要开发语言是java吗因为我是做.net的中间有过度学习期吗

  1、说说你最值得说的项目场景是什么周期多久 答我做的勋章项目吧会员消费一定金额后会点亮一些勋章并且在勋章墙里可以看到一些勋章的点亮进度比如我今天购物结束准备回去了看到我的勋章墙里有一个勋章显示990/1000再消费10元就能获得这个勋章了那我再买个10块钱东西吧可以促进会员消费 这个项目的背景是销售已经做了ppt把这个项目卖出去了好几家已经跟公司签了合同了所以需要我们紧急开发周期在一个半月左右我是项目负责人 2、后面的规划是什么 答:见四面5 3、你和那些晋升特别快的人比起来有哪些不同(学习能力的不同但是勤能补拙) 答:我觉得咱们大部分人的智商、学习能力都差不多但是总有那些厉害的人学历高学习快能力强晋升快我和他们比起来肯定有差距但是我觉得这些固然是你的资本但是我们学历能力也还可以加上我们肯学我们在某个方向或者某块技术也能成为天花板的存在最近流行一个字词躺平我不赞同我觉得现在的人尤其是我们程序员即使不能成为某个技术某个时代的引领者也要成为这些最新技术的学习者跟上时代的脚步不停的学习这样才能提高你的价值。 4、期望薪资是多少近一年的工资流水发我下 答期望薪资28K 5、以前都是远程面今天过来主要是看下工作环境熟悉下路线c;本着双方都负责的态度见面下加下微信 最终历时一个多月2021.6.28我拿到了B站的offer 虽然卡我薪资了没达到我预期但是也可以接受吧因为我去年年底晋升加薪了说我才涨薪半年原来是14薪现在是15总包涨幅30%左右试用期6个月每天15餐补8点半以后有加班餐 转正后每个月多1000补贴

  面试准备 1、前面找一些小公司面试练练手,找找感觉,总结统计下不会的问题,然后再去找相关资料学习相关知识点,我这2个月大概面试有近10加公司吧,一共拿了3家offer,前面很多都没过,但是为后面拿更好的offer做准备 2、我是如何准备的呢 (1)首先就是简历,关注三太子敖丙里面有简历模板,参考下,我是参考了里面的模板修改了,然后在脉脉里找了字节的内推人员,他再帮我简历的一些问题给出了建议 (2)投简历,我用的是Boss直聘,大家也可以用智联招聘、脉脉内推等 (3)学习知识点,我下载了CSDN,关注了一

  总结. 约329个Go服务, 历史约170人左右贡献过Go代码. 代码和目录规范性比较好, 代码生成工具建设比较好, 大家可以借鉴一下. 对于一个Golang开发者来说, 入职

  3天就可以copy&&paste开始贡献业务代码了. 其他语言开发者, 3

  编辑IT大咖说阅读字数: 2672用时:8分钟本文内容来源于任伟在【沪江技术沙龙】

  IT大咖说为沪江技术沙龙独家视频知识分享平台。 内容摘要Bilibili作为一个大型弹幕视频网

  并发原则无状态拆分服务化消息队列数据异构缓存银弹并发化降级限流切流量可回滚防重设计幂等设计流程可定义状态与状态机后台系统操作可反馈后台系统审批化文档和注释备份。...

  希望做到最小化用户请求延迟。将用户流量最优地分布在多个网络链路上、多个数据中心、多台服务器上

  效果。 数据分片:垂直分片(按功能分) 水平分片 nosql非关系性数据库 API

  员工, 被上传至Github. 本文我们不讨论安全, 法律, 去恶意攻击或者获利

  Golang生态建设, 代码规范, 工具建设, 技术栈选择, 对于Go在部门或公司

  缓存?看看维基百科怎么说: “In computing, a cache is a hardware or software component that stores data so that future requests for

  因素之一。当多个进程或线程同时(或着说在同一段时间内)访问同一资源时会产生并发问题

  小型机、Oracle数据、EMC存储设备)系列。而一般互联网公司更多地采用PC级服务器(x86)

  Python打造最强告白代码,世界这么大,你的那个他总会遇见的(源码可直接运行)


本文》有 0 条评论

留下一个回复