2020-09-10美团

1面记录:

1.最近的最有成就感的项目
答:金币系统,整体上的架构、实现需要整理一套说辞
小问:为什么选用mvvm架构,比起mvc有什么优势
答:没回答上来,面试官跳过了
2.假设一个场景:activity栈有 a->b->c三个实例,a在栈底b在栈顶,以singleTask方式启动b,栈会变成什么样子
答:假设启动b的时候没有设置taskaffinity或者taskaffinity和当前栈一致:c会被弹出,然后b调用onnewinstance
小问:这种情况 b、c的生命周期回调是怎么样的
答:想了半天,回答 c.onPause->b.onNewInstance->b.onResume->c.onStop 。然后面试官就跳过了
3.说一下view的绘制流程
答:正常答了,但是描述的不流畅
小问:参照美团搜索框下的一个layout,说一下该怎么自定义view
答:没有回答上来,跳过了
4.说一下touch事件传递吧:
答:dispatch的返回没记清,描述的时候漏掉了onInterceptTouchEvent方法。整体上说出来了
小问:场景一,一个layout,想自己处理所有事件,该怎么实现
答:不让父view拦截,需要设置某个flag。然后两种方式1.dispatch返回false 2.intercept返回true
小问:场景二,自己不处理,子view也不处理,怎么做
答:dispatch返回false,然后说上一个问题可能想错了,说上一个dispatch需要返回true
5.HashMap说一下你的了解
答:数组+链表 ,1.8 链表足够长后换成红黑树,有初始长度,0.75的扩容阈值,扩容时,桶的数量翻倍,然后rehash
小问:为什么两倍而不是三倍
答:翻倍多占用空间大,开销大,有可能多余的桶永远用不到。然后就被面试官跳过了
6.写一个双重检查锁的单例
答:漏了2条细节,总体上写出来了。。。syncronize锁谁写错了
小问:volatile关键字什么作用
答:防止new的三条指令的指令重排。
小问:为什么用syncronize关键字,为什么判断两次?
答:利用两个线程几乎同时获取实例的例子回答
小问:为什么会出现以上的情况?
答:没答上来 ->又问,这是因为java内存模型,问 了解过么
答:没想起来java内存模型是哪一块。。
7.设计模式用的多么?说一个
描述了一个装饰者模式

紧接着是2面

1.项目架构
答:lib库共享代码,功能分模块。模块分布于共享库和本地代码
2.描述一下最近的一个需求
答:网赚模块,还是没描述很清楚
3.retrofit原理
答:使用动态代理,反射拿到我们定义的接口的实例
小问:了解过动态代理的原理么?
答:没看过
小问:怎么处理 http请求的异常,使用过拦截器么?怎么打log?
答:retrofit 实例需要 okhtpclint实例,这个实例上加过拦截器,实现每个接口都增加两个header
log的话有一个level,可以打出log。异常的话,retrofit做了处理,我们没太管,不过我们通过
looper的机制,会拿到所有主线程crash进行处理
4.技术负责人,有带人么?app指标怎么确保的?
答:没有待人 , 我们基本上只看crash,然后新版本crash都要处理,然后老crash排期
小问:说一下你印象深刻的crash
答:没答上来 ,说的一般都是空指针什么的
小问:空指针怎么避免
答:1.总结情况,做工具检查 2. kotlin 然后没想起来怎么系统处理
小问:动画卡顿问题解决过么
答:没有
5.除了网络库,还用过那些其他的开源库?
答:gson glide lottie 看过rxjava room dagger hilt没用过
6.问我的?
a.定位 答:产品开始项目? 然后巴拉巴拉。。。
b.对我的评价:答 还行,限于年限 广度深度都还可以
7.什么时候能到岗?2week?
答:不太清楚,最多1m

下面是面试后整理的解答优化
https://www.jianshu.com/p/682bea75e5bf

你可能感兴趣的:(2020-09-10美团)