赞
踩
笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《bilibili Android一二面凉经(2024)》。
面试职位: 高级Android开发工程师(播放业务)
是的, c++层是在ijk内核做的。ijk负责解码。但是播放有什么问题, 或者介入新的播放能力都要经过我们。
现在单端5个。去年优化了一波。
20+
不同的端分组。
我不面
三轮(两轮技术+一轮hr)。
二次元氛围浓郁。有个别小朋友(应该是指年轻的同事)二次元属性比较厉害。
每层楼都有猫咪常驻。每次过节都有cosplay, 比如圣诞节什么的。之前有好多女装大佬。
社团: 汉服社、萝莉社。
个人独特爱好包容性比较强。
我们在横向比较候选人, 匹配度最高的那个候选人也在横向对比他的offer。整体时间久拖得比较久。
不多。所以才会横向对比, 优中选优。HC多的话就直接发了嘛。我们也担心白折腾。
Native占绝对的主导地位。
跨端: 一部分是c/c++(播放器、弹幕), JSRuntime来做。业务层跨端用KMP。
对。我们考量下来, UI在各端上面去做跨端的话, 可能后续还是去用compose做UI的跨端。
目前来讲, 复杂逻辑的跨端和基础组件的跨端可能对我们来说更有意义。因为UI变化太频繁了, 很多跨端方案的UI实现方式不能一比一复刻平台的效果。
1 复杂逻辑的跨端和基础组件的跨端可能对我们来说更有意义。
2 UI变化太频繁了, 很多跨端方案的UI实现方式不能一比一复刻平台的效果。
Flutter: 平台差异诟病多。
RN: 转成原生性能差。
KMP+compose: 转换成平台可执行的代码, 性能好。缺点是: 逻辑和UI的跨端不是一并兼容, 需要分开做。
Flutter和RN都做过。
漫画业务在用Flutter, 团队人少, 交付更重要(Ps: 我理解面试官这里表达的是省人力, 快速交付的意思)。
主站对性能要求高, 大部分场景还是原生。
它确实天然对Android友好, 因为使用kotlin嘛。不过iOS也在学。
要求: 主要看技术基础 + 对播放器有一定的了解(不是完全小白的, 比如说播放器怎么播起来都不知道的那种)
招聘岗位主要是面向于业务开发 + 技术优化为主。
播放业务复杂度特别高。比如播放页的框架是用依赖注入(Dagger)+协程scope抽象出来的一套框架。它需要对依赖注入和各种协程理解比较到位才可以。
没有使用依赖注入的经验也不用太担心, 因为我们同组的同学刚开始也不会写, 会了以后就轻松了。
有基础架构团队。有负责CI/CD, 以及移动端基础建设。比如说网络库, 埋点上报, APM, APM后台。编译、流程都有。
播放: 我们会建立自己的业务指标和技术指标。合作比较密切的播放内核组。他们会和我们的指标双向验证。
首帧、页面打开速度、卡顿率、错误率、带宽(CDN)。
HR面
就只有二面的几个。
在做。我们一开始也想用C, 但我们没有那么多会C的同事。没有HC, 因此没法招更多会C的同事。
公司氛围比较多元化, 不仅仅有二次元, 公司内部也有许多社团, 对有独特爱好的人群也有非常强的包容性。
B站Android(播放业务)面试以音视频播放+性能优化为主, 也会考察候选人对目前B站工程中在使用的技术(Flow、Compose、KMP、Dagger等)的熟练度。
B站整体的HC比较少, 面试周期比较长。如果真的应聘这个岗位, 那就要非常高的匹配度。我总结了以下几项技术/经验来提升岗位匹配度(但有可能已经招到人了):
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。