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
的防误触怎么处理滑动冲突
Activity
在onCreate
方法中调用了finish
方法,那它的生命周期会是怎样的如果我想判断一个
Activity
中的一个View
的尺寸,那我什么时候能够拿到RecyclerView
如何实现一个吸顶效果Java
和Koltin
你哪个用的比较多有用过
Kotlin
的协程吗Kotlin
中的哪些Feature你用的多,觉得写的好呢你是怎么理解
MVVM
的你有用过
Jetpack Compose
吗有用过
kotlin
中的by lazy
和lateinit
吗kotlin
中怎么实现单例,怎么定义一个类的静态变量算法题:增量元素之间的最大差值
你这次看机会的原因是什么
反问阶段我感觉之前问的差不多了,这次就没再问什么问题了
HR面
现在是离职还是在职状态
介绍一下之前负责的工作
用户量怎么样
这个项目是从0到1开发的吗
这个业务有什么特点,对于客户端开发有什么挑战与困难
团队分工是怎样的
这个项目能做成现在这个样子,你自己的核心贡献有哪些
这个事情对你来说有什么收获吗
在B站的工作节奏是怎么样的
离职的原因是什么呢
你自己希望找一个什么样的环境或者什么阶段的业务
你对小红书有什么了解吗
未来两三年对于职业发展的想法
你觉得现在有什么限制了你或者你觉得你需要提升哪些部分
反问阶段
- 问了一些作息、福利待遇之类的问题
总结
小红书面试总体而言给我的体验是很好的,每轮面试后基本上都是当天就能出结果,然后约下一轮的面试。最终从一面到HR面结束出结果,一共花了9天时间,还是挺快的。二面结束后,一面的面试官加我微信说小红书目前很缺人,感兴趣的同学也可以来试试。
来源:juejin.cn/post/7304267413637333029