昨天翻招聘软件,看见个安卓岗开价挺高,想着试试水。结果连着面了三家,全栽在同一道题上。瘫沙发上复盘的时候才咂摸出味儿来:这帮人现在不考八股文,专挑实操环节挖坑!
踩坑实录
头两家问的都是“怎么防止快速点击触发多次事件”。我张嘴就背答案:“加个时间戳判断嘛”人家直接冷笑:“2010年的老黄历还拿出来?你试试快速划列表还卡不卡?”第三家更狠,甩过来一台测试机:“现场写个防抖我看看。”结果手一抖按了五次按钮,界面直接卡成PPT。
- 第一次尝试:哗哗敲了个判断时间差,测试机当场表演闪现消失
- 第二次挣扎:换成RxBinding搞节流,面试官指着内存监控问我:“这项目要是老人机你赔?”
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
厨房里的顿悟
晚上切菜时候突然拍大腿!这破题就跟控制水龙头流速一样嘛
1. 疯狂抖腿型:得用Handler延时发消息,跟煮泡面计时似的,前一次没执行完直接清空消息队列
2. 暴力点按型:给按钮套个,界面消失自动取消回调,比关煤气灶还利索
3. 高端玩家型:上协程channel限流,跟高压锅泄压阀似的,超出负荷自动抛弃事件
当场摸出手机写了个测试版:
kotlin
* {
setOnClickListener {
// 模仿高压锅放气阀
if (*() – lastClick > 500) {
CoroutineScope(*).launch {
doSomething()
lastClick = *()
今早的实战验证
特意找了台红米9A(懂的都懂),开了开发者选项里的指针位置显示。手指在屏幕上疯狂抽搐:
- 500ms内连戳20次:界面只响应1次
- 快速滑动列表:帧率稳如老狗
- 跳转到其他界面:回调自动注销不泄露
最绝的是,用协程方案比Handler省了整整3行代码!内存占用始终卡在12.7MB不动弹。
下午复试直接带着这台红米去的。当面试官又掏出那道题时,我把手机往桌上一拍:“您随便点,卡顿一次我现场删APP!”那哥们手指头在屏幕上都快擦出火星子了,界面愣是没抖一下。
临出门前听见HR小声嘀咕:“这破防抖题卡了半个月人,今天算遇上硬茬了…”
(正在啃苹果的老婆突然插嘴:“你去年给人写bug赔的五千块,是不是该用offer补上了?”)