百度网盘Android一二面凉经(2024)

baidu_net_disk.jpg

笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《百度网盘Android一二面凉经(2024)》。

面试职位: 网盘主端研发组_Android高级研发工程师

1h = 非算法题(41min)+算法题(11min)+反问(15min)

技术一面

  • 面试时长: 65min(提问40min + 代码10min + 反问15min)
  • 代码考核: 三线程交替无限循环打印"a"、"b"、"c"

面试问题(40min)

  • 自我介绍
  • 颜色拾取器
    • HSV面板是怎么绘制的?
    • HSV和RGB是什么关系
  • 播放优化
    • 优化前是把整个播放列表都传过去吗?
    • 已加载的播放列表比较大, 超过binder传输限制怎么办?
    • fd是指向一个文件吗?
    • 为什么Binder要限制最大的传输大小?
    • Binder的数据交互的流程, 了解过吗?
  • 组件化
    • 什么工具或什么框架实现的组件化? 组件之间怎么解耦? 怎么进行跨组件的调用?
    • 路由框架实现的原理。怎么通过url/path找到对应的组件/接口?
  • Kotlin协程
    • 在哪些场景下用呢?
    • 并发请求, 一个父协程里面多个子协程。其中一个子协程发生异常是否会影响其他子协程?
    • 并发请求三个接口, 并发写入数据库, 三个接口一个失败,就全取消, 不要影响数据库的写入。
  • 数据库
    • 用到的多吗?
    • 你们app中对数据库的使用体量大吗?比如好友、IM等场景会使用本地数据库吗?
    • xx表很大, 如果有几十万的数据, 想优化查询时间, 该怎么做?添加日期去查询某一天。
    • 索引的原理。索引会带来什么问题, 需要再哪些场景去特别关注它的正确使用?
    • 本地表建索引对哪些字段去建立索引?
    • 线上有没有发现什么问题?字段比较多, 占用内存比较大。OOM、CursorWindow过大这样的问题。
    • 我关注的是, 索引不是随便地用, 不符合场景的使用可能造成内存, 插入删除数据操作耗时比较多的问题。每次插入或删除会对索引进行修改。你遇到过吗?
    • 数据库的视图(view)
    • 数据库的升级/降级
    • 数据库降级问题是怎么发现的呢?
  • ViewModel和协程scope
    • 协程需要一个作用域启动? 怎么获得一个作用域?
    • activity的lifecycleScope的生命周期是怎样的?
    • activity重建的话, activity的scope协程是什么状态?
    • 如果在Activity中使用activity的scope, 就会有一些边界情况发生, 有没有遇到过? 用户切换了系统语言, 或者横竖屏切换了?
    • 如果在viewModel的scope启动协程后, 要是有一个持久化信息写入, 不应该受生命周期影响的, 应该怎么做?
  • 流量统计
    • Http的流量统计怎么实现的?
    • 怎么实现对request/reponse对象的获取?

代码考核(20min)

同时启动三个线程。第一个线程无限打印a,第二个b, 第三个c。要求输出"abcabcabc..."这样的无线循环。 有点类似leetcode的这道题 - 1115. 交替打印 FooBar, 只是变成了三线程。

// 用了volatile+自旋。当时现场还编译过了, 有点小激动。
public class Main {

    private static volatile int flag = 0;

    public static void main(String[] args) {
        new Thread(() -> {
            while (true) {
                while (flag != 0) ;
                System.out.print("a");
                flag = 1;
            }
        }).start();
        new Thread(() -> {
            while (true) {
                while (flag != 1) ;
                System.out.print("b");
                flag = 2;
            }
        }).start();
        new Thread(() -> {
            while (true) {
                while (flag != 2) ;
                System.out.print("c");
                flag = 0;
            }
        }).start();
    }
}

面试反问(15min)

招聘岗位候选人的技能图谱, 需要有哪些专精?

  • 数据库算是一块。了解基本使用, 你基本满足我们技术栈的要求。
  • Kotlin+协程
  • 项目经验(整体上、组件化、项目结构)相差不大。网盘属于工具类应用, 你们的app其实跟工具类差不多。歌曲列表在网盘就类似于文件列表, IM好友之类的都差不多。

应聘岗位未来是负责什么业务? 我对于自己欠缺的能力, 想办法去加强一下。

相册业务(面试官所在业务线)。百度网盘的相册服务。一刻相册(专注于图片备份)。

对招聘岗位候选人的资深程度, 职级?

T3~T5, 也考虑高潜(年轻但有培养价值)。

百度网盘技术团队/Android人

相册 + 基础(文件传输、文件列表) + 企业/商业 + 其他的(边缘业务) = 40人(Android)。

应聘岗位所在组多少人

5~6个人。HC有两个。

你在团队里的角色?

迭代负责人。负责百度网盘相册。

百度网盘有哪些跨端方案?与Native的占比。

原生为主, 还引入了flutter, 但仅有这一个跨端方案。只用在了独立的、耦合性较低的模块。
但没有继续推进flutter的打算, 原因是开发成本降不下来, 与其他模块还是存在一些耦合, 没有找到降低成本的好方案。

fluter的动态化(免发版)支持并不好, 不会打算引入动态化的跨端方案吗? 比如RN?

技术路线确实不打算接入RN。

有专门的技术设施建设的组吗?打包编译、内存、性能、功耗监控和优化。

有一个基础架构组, 只做工程提效。其他内容, 每个业务组都可以做, 没有独立的架构组或性能组做这样的事。

目前有两个HC, 出现空缺是因为有同学离开, 业务扩展?

有同学离开。跟iOS人力没对齐。

人员流动不大?缺失了才补?

是的。

几轮面试?

技术3轮。后面是一个高工的面试+老板(实线Leader)的面试。最后再是HR的面试。

技术二面

  • 面试时长: 60min(提问60min + 反问5min)
  • 代码考核: 无

面试问题(60min)

  • 自我介绍
  • kotlin
    • 空安全的理解
    • 协程和线程的区别
    • 在界面里执行一个死循环的函数, 界面退出的时候, 死循环会退出吗?
    • 协程怎么切线程?
    • 已经在跑的任务怎么取消?
    • delay函数怎么实现的?
  • 持久化工具(DB)
    • 数据库怎么做并发?
    • 你们的数据库里有多少张表
    • 是否有组联内联操作?
    • 怎么优化视图查询效率?
    • 本地搜索
  • Jetpack Compose
    • 优点
  • 架构MVVM
  • LiveData
    • 什么生命周期可以收到通知, 什么生命周期收不到?
    • 为什么LiveData更新数据都要在UI线程?
    • 子线程如何通知livedata更新?
  • Gson的性能瓶颈? -> 可以参考《抖音 Android 性能优化系列:启动优化实践》里关于Gson的内容
  • 为什么fastjson比gson快?-> 可以参考《FASTJSON2提升Java字符串编码解码性能的技巧》
  • okhttp有几级缓存?
  • 除了在日常中使用, 有做过什么优化吗?
  • 谈一个在过去项目过程中, 最有挑战的项目。背景、难点、技术手段。(说了RN页面打开速度优化)
    • 初始化引擎, 初始化网络请求?优化多少?
    • 耗时怎么判断?
    • 页面展示时机?哪个回调?
    • 线下看, 还是线上有监控?
    • 最终的优化方案是视图预热?这块页面提升有多少?
    • 你为什么选择这个项目?是因为这个项目涉及的技术栈比较多, 比较复杂吗?
    • 在这个项目里, 你个人得到什么收获?
    • 使用RN真的能提升双端开发效率吗?有哪些地方会发现它的提升并没有这么好?
    • 这个方案有规划推广到你们app的所有页面吗?
  • 个人与团队相关
    • 所在组团队多少人?
    • 你在团队里负责什么内容?
    • 你们公司所有Android开发人数?
    • 你在组里的定位?是某个业务的负责人吗?
    • 离职原因

反问问题(5min)

这个岗位做的工作?

网盘相册。一刻相册(单独做一些图像的玩法, 如果做在网盘里会显得太臃肿)。
相册垂类, 主打图像相关的场景, 存储+玩法。

技术栈

工程年限长, 用户量大。技术选型求稳。
一刻比较新。无跨端方案。H5除外。

数据库操作

很多app的业务场景用文件或者sp就够了。但是云存储相关的, 用户储存的文件, 极端的有几个T。数据库量级巨大。

面试流程

后面: 理论上2轮, 基本上就一轮(经理), 一轮HR。

总结

  • 第一次面试百度, 虽然最终没有通过, 但是面试体验很不错。在回答问题卡壳的时候, 面试官会耐心地引导。
  • 百度网盘Android整体技术方向以Native为主, 有少部分flutter业务。
  • 百度网盘对数据库相关知识的考察会比较多, 反问环节也说到本地数据库的量级会非常大。如果想加入百度网盘的话, 建议加强一下数据库相关的知识:
    • 数据库组联内联
    • 数据库升降级
    • 数据库索引使用与常见问题
    • 数据库视图使用与性能优化
    • 数据库并发
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容