疫情过后打算跳槽阿里,本以为凉了没想到居然是它“救,2021 年 Android 大厂面试分享
我们在入职时可能只是一个菜鸟,但是在工作一段时间后,由于个人的努力以及业务的锻炼,水平已经有了很大的不同,自己心里觉得自己不再是菜鸟了,希望能拿更高的工资。
但你可能一直在做一个项目,没有承担更多的责任,公司无法了解到你现在能力到什么程度了。
这个时候,如果领导比较好的话,你可以先主动要求承担任务,积极完成(就是加班加点),然后在一段时间后找领导谈加薪。这样就有理有据,让人信服,领导一般都会同意。这样就不用跳槽了,省去准备面试题的繁琐。Over。
如果领导不同意,那就没辙了。
心委屈怎么办
员工离职的另外一种原因就是:待着不爽,心里委屈了。
一些被动的原因比如领导更替、岗位调整、加班太多等,都会让人心里不舒服。拿我来说,公司业务转型,做的工作不是安卓应用开发,做久了心里不踏实,就想离职了。如果有条件的话,可以跟领导沟通能否恢复原样,如果无望,那就只好跳槽了。
但在真正提出离职之前,还需要思考几个问题。
离职前的思考
If you don't like something, change it. If you can't change it, change your attitude. Don't complain.
有的朋友可能会说:别废话,赶紧讲面试知识点,我干的不爽就跳槽了,还想什么想?
非也,每次跳槽的成本其实很大,除去面试来回的时间不说,新旧环境的适应、业务的熟悉、代码的掌握,都需要成本,如果两次跳槽间隔太短,其实时间都花在了适应新环境上,真正学习、沉淀的内容不会太多,尤其在刚开始工作,更忌讳这样子。
因此,在确定离职前,你需要先问自己 3 个问题:
现在的项目没有我可以学习的内容了吗?
离开这里我会失去什么?
到新环境可以得到什么?
拿我自己来说,3 月份时项目里的代码我没有掌握太扎实,框架层很多设计思路还搞不清楚,出去面试一问就问倒了。这时如果真的换了工作,恐怕又要接触新项目、新代码,根本没时间好好消化之前的代码。
除了代码,人际关系也需要沉淀,在这个公司待了那么久,看到了一些同事的优秀品质,学习、借鉴他们也需要一定的时间,如果忙着换工作,可能就失去了和同事深入交流的机会。
因此在第一次面试失败后,我把项目代码好好研究了一个多月,也跟同事请教很多学习、规划上的知识,为后面的路做好铺垫。
确定要走时需要做的准备
在确定要走后,尽量不要裸辞,现在的行情你懂得,没有准备就裸辞,等于断了自己后路。
有的网友问我:辞职在家好好复习一个多月怎么样。我劝他还是算了,都不是自觉的人,天天在家反而更学不进去。最好的状态就是一边工作,一边搜集要学习的知识点学习资料,下班路上、晚上、周末去学习,那样精神压力不会太大。
在开始复习知识点前,你需要确认以下 2 点:
定位
亮点
定位
“定位” 是指你要确定自己所处的阶段和想要的目标。主要包括:
目前是什么水平
有什么积累
工作项目里有什么难点
想找什么级别的工作
比如我,给自己的定位就是:现在是中级水平,常见应用开发需求基本都能解决,开源框架使用没问题,部分读了源码,工作项目里主要是混合开发比较复杂,想找有利于自己成长的、大公司中高级安卓开发工作。
亮点
有的朋友可能对 “亮点” 的定义不是很明白。“亮点” 其实就是能够把你和众多应聘者区分出来的优秀品质。
程序员面试主要考察这几点:
技能水平
学习能力
团队合作
工作心态等
如果你在其中任何一个方面都有自己的优势,就赶紧找出来,写到简历上,面试表达出来。
拿技能水平来说,根据做过项目的类型,确定自己当前擅长的点,比如你做的是电商应用,那可能就擅长混合开发、自定义 View;做的是电台应用,那可能就擅长后台进程保活;做的是大用户量应用,那可能就擅长监控、性能优化等等。
找到自己已有的或者该有的亮点,然后去努力掌握、精通。
行情怎么样
有的网友说早就想跳槽了,但是听说行情不好,不敢跳。其实吧,价格取决于价值,影响价格波动的是供需关系。
2016 年创业公司的确死了很多,P2P、O2O 死了一大堆,但活下来的又融了很多钱,也成立了很多新公司,也需要招很多人。
这个时候,招聘的标准就比前几年要高一些了,去招聘软件上看也可以发现,大多要求 3 年以上经验。这是因为现在安卓初级太多了,各种应届生、培训班涌入市场,前几年会用 ListView 就可以找工作的日子一去不复还。不过真正的高级,或者有潜力的中级,还是很受企业欢迎的。
因此,我们在想要跳槽时,不要被所谓的“差行情”拦住,而是要审视自己的水平,确定自己的目标,究竟是要找初级岗、中级岗,还是高级岗。
面试前,面试官拿到你的简历,根据简历上的信息会建立第一印象。因此你想要呈现给对方一个怎样的定位,有什么亮点,都需要事先思考清楚。
确定了方向后就要开始努力准备,下一节我们介绍安卓跳槽需要准备复习的知识。
安卓跳槽需要复习的知识
在介绍面试考察内容前,先来看看我认为的“中级安卓”需要掌握的知识点,这些是结合一些面经、自己实际面试以及请教前辈总结而来的,主要包括两部分:
Android 核心知识
面试知识
面试中级及以下岗位时,在电话面试、一面、或者你简历没有突出亮点时,一般都会先问基础,目的是确定你基本功扎不扎实。
如果基础知识有太多不会的就危险了,必须好好准备,这是躲不过的。电话面试、一面考察基本功过关后,就会进入下一阶段 --- 问些进阶的,看看你最高水平在哪里。
这个阶段有不会的很正常,因为对方正在确定你的水平,但态度一定要积极主动,即使之前没有研究过,也要结合一些经验说出推测的结果,切忌直接说“我不会”。
一.Android 核心知识
基础知识主要包括以下几点:
Java 知识点汇总
Android 知识点汇总
Android 扩展知识点
Android 开源库源码分析
设计模式汇总网络基础
常见大厂面试题汇总
1. Java 知识点汇总
虽然现在 Kotlin 挺火的,但我面了几家大公司都没问 Kotlin,问了很多 Java 。所以一定要保证当前知识掌握熟练了,再学习新知识,不然真成了狗熊掰苞米。
Java 基础主要包括以下知识点:
上面的内容我做成了一个 335 页的《**[Android 高级工程师学习核心笔记](
)**》PDF,其他必学的知识感兴趣的朋友们可以去网上一搜,或者去买本书看下就好了,建议看 《Java 并发编程的艺术》。
2. Android 知识点汇总
主要包括以下部分:
安卓的主线程模型,要求我们必须将耗时操作放到线程异步执行,否则会影响 app 的流畅甚至卡顿。
因此必须掌握安卓提供的 Handler, HandlerThread, IntentService, AsyncTask ,这是安卓为我们封装好的异步类,从使用到原理,都要理解,面试常客。
源码解读 Android 消息机制( Message MessageQueue Handler Looper)
HandlerThread 使用场景及源码解析
IntentService 使用及源码解析
接着就需要了解 Java 的线程、内存模型和 Java 并发包下提供的类了,这也是大公司考察基础的常客。
除了面试,如果你去看过开源框架,会发现里面有很多 ConcurrentHashMap, Lock, Condition,一开始看的你一脸懵逼,在掌握了 Java 并发知识后,再去看框架就会省力许多。
我的并发编程专栏 中写了一部分,剩下的搜一下好了。
建议阅读书籍:《Android 开发艺术探索》、《Java 并发编程艺术》、《Java 并发编程实战》
3. Android 扩展知识点
安卓扩展知识点爱问的来来回回就那些点:
ART
Apk 包体优化
Hook
Proguard
架构(MVC,MVP,MVVM)
Jetpack
NDK
计算机网络基础
类加载器
这部分是常见的,应该大多数人都掌握差不多了,书的话还是看 《艺术探索》。
4. Android 开源库源码分析
LeakCanary
EventBus
Glide :加载、缓存、LRU 算法 (如何自己设计一个大图加载框架) (LRUCache 原理)
install
ARouter
书籍推荐
《App 研发录》《Android 群英传》《深入理解 Android》《Android 开发艺术探索》《Android 系统源代码情景分析》
5. 设计模式汇总网络基础
我这次面试
设计模式问的比较少,只问了一下面向对象六大原则
评论