也许不是一篇面经

前言

近期面试了一些上海的公司,收获了三分之一的offer。记录一些思考和感触。

为什么要离职

相信人都是有惰性的,没有必要的理由,都不会离职。根据E.S.Lee的推拉理论,人的迁移受“推力”和“拉力”的影响,推力是一些消极因素,拉力是一些积极因素。罗列一下推拉的因素能更加清晰的看清自己的目标,也能为后续选择offer提供一些借鉴意义。以下是我的推拉模型,因为各位不是面试官,我也不过是众生相中的一相,就不避讳了。

推:
1、钱途:薪资低、职级低,升职加薪受司龄限制,年终奖未达预期
2、项目:产品、交互不够专业,需求反复,文档简洁;前景不好
3、技术:业务需求过多;老代码太烂;从同事上学到的东西少;技术leader不是同一个技术栈的,共同话题少;

拉:
1、钱途:更高的薪资,更高的title,公司的发展前景更好等等
2、项目:感兴趣的技术领域/项目
3、技术:技术广度的拓展,例如前端;同事有技术大牛;
4、未知、机遇与挑战

如何证明自己

面试一圈下来,遇到的问题大多分为三类:

算法算法算法!!!

基础基础基础!!!

原理原理原理!!!

项目相关的问题都不太多,一方面可能是项目不太有名,另一方面项目上做的东西不能体现技术水平。

这些问题会造成一个尴尬的情况,如果你是一个平时996,没有太多时间充电的人,那这些问题可能都很难回答;如果你的优势在于软实力,例如团队合作、灵活应变、细心负责、抗压等等,那在这种面试中就难以表现。

所以就引出了这个问题,如何证明自己。

我没有正确的答案,也在继续探索的路上,这里分享一下我目前的答案:
1、记录学习成果,笔记也好、博客也罢都是一种方式,但最好有一些公开的形式。
2、记录工作中解决的问题、闪光点。
3、多参与线上线下的技术活动

如何对待面试问题

我不擅长算法、基础也不是很扎实,原理也只看过部分框架中感兴趣的部分,所以我对这种面试会有一些反感。

那么如何对待面试中的问题呢?首先就要摆正心态。为什么公司会要求算法、基础、原理这些工作中用不到的东西呢?回答了这个问题就好了。列了几条:

1、互联网行情不好,移动开发过剩。公司的要求自然就高了。
2、混合开发盛行,Android近年的新技术都需要底层原理和扎实的基础知识。
3、既然面试的要求是如此,你也不能改变游戏规则,面试造火箭,入职拧螺丝,接受就好。
4、高级工程师成本高,如果把时间投入在教导初中级工程师上,性价比低。

摆正心态以后,就是准备过程了。找到合适的资源跟着学,然后一定要自己看源码。

面试的心态

面试的目标是为了获取offer,而面试的过程是一个技术交流的过程。去不同公司面试,还能了解不同行业的一些状况。

我是比较重视这个技术交流的过程,去面试之前会事先了解公司/部门的业务、体验app、逆向app(如果可以),然后准备一些问题。

这是我提过的一些问题:
1、怎么判断一个文字在ttf中不存在
2、ReactNative如何解决fresco和glide两份缓存的问题。
3、ReactNative原生控件和JS控件,如何做统一的屏幕适配
4、如何做机型适配
5、uuid怎么做

有些问题得到了不错的回答,即使没有答案,也是一个交流的过程。除了自己问的问题,有时候反问一下,也能收获不少。面试这几周,感觉是半年来成长最多的一段时间。

裸辞

因为自己不太谨慎,口头offer就提了离职,然后经历了一段裸辞。裸辞是轻松的,时间很多,可以学很多东西,不用再考虑工作的需求。同时,裸辞也是有压力的,时间越长,可能压力也会越大。尤其是交房租的时候。
裸辞的时候切忌心浮气躁,既影响找工作,又影响学习。可以在裸辞这段时间内,思考一下人生,整理一下知识体系之类的,感觉不错。
裸辞还有一个问题就是社保、五险一金怎么办?比较简单的方式就是淘宝,但是需要注意下代缴证明之类的东西。

一些面试资料:

基础知识/算法
玩玩android
javaGuide
JCSprout
android-interview-collection

相关阅读:
也许不是一篇面经–猎头篇