2023小红书Android面试之旅

一面

  • 自我介绍

  • 看你写了很多文章,拿你理解最深刻的一篇出来讲一讲

    讲了Binder相关内容

  • Binder大概分了几层

  • 哪些方法调用会涉及到Binder通信

  • 大概讲一下startActivity的流程,包括与AMS的交互

  • 全页面停留时长埋点是怎么做的

    我在项目中做过的内容,主要功能是计算用户在每个Activity的停留时长,并且支持多进程。这里的多进程支持主要是通过以ContentProvider作为中介,然后通过ContentResolver.call方法去调用它的各种方法以实现跨进程

  • 动态权限申请是什么

    详见 Android动态权限申请从未如此简单 这篇文章

  • 你做的性能监测工具,FPS是怎么采集的

  • 性能监测工具用在了什么场景

  • 有没有通过这个性能监测工具去做一些优化

  • 图片库,例如Glide,一般对Bitmap有哪些优化点

  • 过期的Bitmap可以复用吗

  • 有没有基于ASM插桩做过一些插件

  • 讲了一下当时做过的一个个人项目 FastInflate

    这个项目没能达到最终的目标,但通过做这个项目学习了很多新知识,比如APT代码生成、阅读了LayoutInflater源码、AppCompatDelegateImpl实现的LayoutInflater.Factory2会极大的拖慢布局创建的速度等

  • 怎么优化布局创建速度

    提示了预加载,但我当时脑抽在纠结xml的缓存,没想到可以提前把视图先创建好

  • 说一下你觉得你最擅长或者了解最透的点

    我回答的自定义View

  • 解决过View的滑动冲突吗

  • 讲解了一个之前写过的开源控件 SwipeLoadingLayout

  • 一般遇到困难的解决方案是什么

  • 算法题:反转链表

  • 反问阶段

    • 咱们组主要负责哪些内容

    • 主要使用Java还是Kotlin

      Kotlin

    • 小红书的面试一般是怎么个流程?多少轮?

      一般三轮技术面,一轮HR面

    • 面试完一般多久会给到结果

      比较快,一两天的样子

二面

  • 自我介绍

  • 为什么这个时间节点想要出来换工作呢

  • 在B站这些年做了什么

  • 做了哪些基础组件

    讲解了一下之前写的 SwipeLoadingLayout

  • 介绍一下Android的事件传递机制

  • 你写的这个分享模块是如何设计的

    对外采用流式调用的形式,内部通过策略模式区分不同的平台以及分享类型,给每个平台创建了一个中间Activity作为分享SDK请求的发起方(SDK.getApi().share())以及分享结果的接收方(onActivityResult),然后通过广播将分享的结果送入到分享模块内进行处理,最终调用用户设置的分享回调告知结果

  • 看你之前在扇贝的时候有开发过一些性能监测工具,那有做过性能优化吗

  • 你是如何收集这些性能数据的

  • 有没有对哪方面做过一些针对性的优化

  • Android系统为什么会触发ANR,它的机制是什么

  • 有解过ANR相关的问题吗?有哪几种类型?

  • 算法题:二叉树的层序遍历

  • Queue除了LinkedList还有哪些实现类

  • 现在还在面其他公司吗?你自己后面职业生涯的选择是怎么样的?

  • 给我介绍了一下团队,说我面试的这个部门应该说是小红书最核心的团队,包括主页、搜索、图文、视频等等都在部门业务范畴内,部门主要分三层,除了业务层之外还有基础架构层以及性能优化层

  • 反问阶段

    • 部门分三层的话,那新人进来的话是需要从业务层做起吗?

      不是这样的,我们首先会考虑这个同学能干什么,然后会考虑这个同学愿意去做什么,进来后,有经验的同学也会来带你的,不会一上来就让你抗输出,总之会把人放到适合他的团队里

    • 小红书会使用到一些跨端技术吗?

      会,之前在一些新的App上使用的Flutter,现在主要用的是RN,还会使用到一些DSL,这个不能算跨段。为什么在小红书社区App中跨端技术提及的比较少,是因为小红书App非常重视用户体验,对性能的要求比较高

三面

  • 自我介绍

  • 介绍一下目前负责的业务

  • 工作过程中有碰到过什么难题,最后是怎么解决的

    一开始脑抽了没想到该说什么,随便扯了一个没啥技术含量的东西,又扯了一个之前做的信号捕获的工具,后来回忆起来了,重新说了一个关于DEX编排的东西(主DEX中方法数超过65535导致打包失败,写了个脚本将一部分Class从主DEX中移除到其他DEX中)

  • 如何设计一个头像的自定义View,要求使头像展示出来是一个圆形

  • 介绍一下Android事件的分发流程

  • 如何处理View的防误触

  • 怎么处理滑动冲突

  • ActivityonCreate方法中调用了finish方法,那它的生命周期会是怎样的

  • 如果我想判断一个Activity中的一个View的尺寸,那我什么时候能够拿到

  • RecyclerView如何实现一个吸顶效果

  • JavaKoltin你哪个用的比较多

  • 有用过Kotlin的协程吗

  • Kotlin中的哪些Feature你用的多,觉得写的好呢

  • 你是怎么理解MVVM

  • 你有用过Jetpack Compose

  • 有用过kotlin中的by lazylateinit

  • kotlin中怎么实现单例,怎么定义一个类的静态变量

  • 算法题:增量元素之间的最大差值

  • 你这次看机会的原因是什么

  • 反问阶段我感觉之前问的差不多了,这次就没再问什么问题了

HR面

  • 现在是离职还是在职状态

  • 介绍一下之前负责的工作

  • 用户量怎么样

  • 这个项目是从0到1开发的吗

  • 这个业务有什么特点,对于客户端开发有什么挑战与困难

  • 团队分工是怎样的

  • 这个项目能做成现在这个样子,你自己的核心贡献有哪些

  • 这个事情对你来说有什么收获吗

  • 在B站的工作节奏是怎么样的

  • 离职的原因是什么呢

  • 你自己希望找一个什么样的环境或者什么阶段的业务

  • 你对小红书有什么了解吗

  • 未来两三年对于职业发展的想法

  • 你觉得现在有什么限制了你或者你觉得你需要提升哪些部分

  • 反问阶段

    • 问了一些作息、福利待遇之类的问题

总结

小红书面试总体而言给我的体验是很好的,每轮面试后基本上都是当天就能出结果,然后约下一轮的面试。最终从一面到HR面结束出结果,一共花了9天时间,还是挺快的。二面结束后,一面的面试官加我微信说小红书目前很缺人,感兴趣的同学也可以来试试。

相关推荐
后端码匠4 小时前
MySQL 8.0安装(压缩包方式)
android·mysql·adb
梓仁沐白5 小时前
Android清单文件
android
董可伦7 小时前
Dinky 安装部署并配置提交 Flink Yarn 任务
android·adb·flink
每次的天空8 小时前
Android学习总结之Glide自定义三级缓存(面试篇)
android·学习·glide
恋猫de小郭8 小时前
如何查看项目是否支持最新 Android 16K Page Size 一文汇总
android·开发语言·javascript·kotlin
大学生小郑9 小时前
Go语言八股之Mysql基础详解
mysql·面试
flying robot10 小时前
小结:Android系统架构
android·系统架构
xiaogai_gai10 小时前
有效的聚水潭数据集成到MySQL案例
android·数据库·mysql
鹅鹅鹅呢11 小时前
mysql 登录报错:ERROR 1045(28000):Access denied for user ‘root‘@‘localhost‘ (using password Yes)
android·数据库·mysql
在人间负债^11 小时前
假装自己是个小白 ---- 重新认识MySQL
android·数据库·mysql