前言

这两个月听的最多的两个词就是 寒冬 和 裁员,作为被裁大军中的一员,我的关键词就是 遗憾 和 还好。

遗憾 的是现在的项目还有很多想象的空间,但是就要走向尽头;还好 的是毕业几年来一直没有以一种打工的心态在工作,寒冬就寒冬,怕个锤子。

有小伙伴问我是怎么准备面试的,我也想谈谈我最近的一些想法和计划,大家一起讨论。

Android开发怎么准备才能提升面试的通过率?_面试

整体分为以下两个方面:

  1. 自我介绍 & 项目经验
  2. 知识储备

自我介绍 & 项目经验

自我介绍

这个是第一个要准备的东西,面试多几次,慢慢完善就好,重要的是 有条理。可以从下面几点入手,关键是第二和第三点:

1、之前工作的公司、岗位及工作方向。
2、团队构成,在团队中的位置及承担的责任。
3、为团队做出的主要贡献,对于这部分涉及到的 项目经历以及延伸出的知识点 一定要重点准备。
4、能够从侧面反映出你优点的爱好。
5、如果能从其它渠道了解到你招人的部门所做的东西,那么也可以谈谈对他们的一些了解以及自己的愿望,没有就算了,这个是可选项。

项目经验

项目经验这块因人而异,把觉得做的有亮点的东西挑出来,从四个方面来准备:

1、功能模块的实现
2、达到了什么效果
3、遇到了什么问题,是如何解决的
4、涉及到的相关知识点

项目经验和知识点 其实是一个双向的过程,要 试图去找到它们之间的联系:

  • 谈到项目经验的时候,可以说:做完 xx 之后,我还去了解了一下 yy 背后的原理,xxx,这里体现的是 你是否有求知欲。
  • 谈到知识点的时候,可以说:yy 的原理是这样的,在 xx 项目中我是如何应用它来解决问题的,这里体现的是 你是否具备把知识付诸实践的能力。
  • 遇到的问题,一定要准备,很重要! 问题涉及到知识点也要都弄清楚。

平时项目可能比较忙,遇到问题急着解决。但是要学着先把问题先记录下来,之后再按下面的步骤进行总结,有条理地进行阐述:

遇到问题=》分析过程=》解决方案=》结果

知识储备

很多人准备面试的时候,大多数就会这样的,打开百度,输入 “Android 面试题”,找几个多的开始看。

这虽然看起来很自然,但是并不是一种健康的方式,面试题的作用应当是查缺补漏,上学的时候也不是直接发习题册然后对着答案学习吧?

知乎上有个问题,叫做如何高效学习,里面有一个回答我觉得很符合我自己的观点,就是建立起自己的知识体系,建立知识体系的目的在于:

  • 巩固记忆
  • 认识自己,找到自己的优势及不足
  • 把握复习的进度
  • 经验总结

接下来我将这几个月内我接触的知识点铺展开来,也给大家一点参考。

算法:LeetCode,把链表、排序、树标签里所有简单类型的题目练一下手。特别是排序,冒泡、快速、二分、选择、归并一定要达到手写的水平!

数据结构:Java的HashMap——7和8的区别、ArrayList、LinkeList。Android的ArrayMap、SparseArray系列。还有阻塞队列ArrayBlockingQueue、LinkedBlockingQueue。HashMap的结构和细节是遇到最多,建议仔细看一下源码,一定要有自己的理解(划重点)。把HashMap如何存储、如何查找。hash碰撞,以及内存利用率这些问题理解一下

设计模式和架构:准备一些自己拿手的模式,在网上查一下资料。准备一些套话,关键词耦合,二次修改方便,外部不用关心内部实现等等。MVC、MVP、MVVM三种,起码要了解两种,并且能清晰明确的说出,两种架构间的优缺点。

Android基础: 这个就很重要了,当然涉及面也相当广。四大组件,生命周期这个啥都不说了,直接冲就是了,基本都会问到。

Android框架基础:AMS,Activity的启动过程。Android绘制流程(这个看个人了,因为我简历上写了熟悉Canvas库,手动狗头)

Android Framework:系统启动流程分析、跨进程通信IPC、Handler、AMS 、WMS、SurFace,SurfaceFlinger、PKMS等等(现在面试都爱问这些)

Java基础:多线程、线程池、锁机制,这两个知识点问到的还挺多的。其他的包括,内存区域、内存泄漏、垃圾回收。。。(这些懂个概念即可,不深究)

自己去制定系统的一个学习计划可能是比较难的,所以文章最后还给大家准备了一份系统的学习思维导图,还有相关的学习资源,这些资料也都是我开发这么多年一点一点的累积整理出来的,今天完全无偿的分享给大家就是想今年寒冬我们程序员能好过一点,希望大家都能工作顺利,事业有成。

Android开发怎么准备才能提升面试的通过率?_职场和发展_02

接下来就是需要梳理知识,提升储备了!(Android八大模块进阶资料)

  • 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO
  • Android高级UI与FrameWork源码:高级UI晋升+Framework内核解析+Android组件内核+数据持久化
  • 360°全方面性能调优:设计思想与代码质量优化+程序性能优化+开发效率优化
  • 解读开源框架设计思想:热修复设计+插件化框架解读+组件化框架设计+图片加载框架+网络访问框架设计+RXJava响应式编程框架设计+IOC架构设计+Android架构组件Jetpack
  • NDK模块开发:NDK基础知识体系+底层图片处理+音视频开发
  • 微信小程序:小程序介绍+UI开发+API操作+微信对接
  • Flutter:Flutter入门+Flutter进阶
  • Kotlin: Kotlin入门教程 +Kotlin 实战避坑指南 +项目实战《Kotlin Jetpack 实战》

知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。

Android开发怎么准备才能提升面试的通过率?_项目经验_03

然后再是通过源码来系统性地学习

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

Android开发怎么准备才能提升面试的通过率?_项目经验_04

刷大厂面试题备战,增加大厂通过率

历时半年,整理了这份市面上最全面的安卓面试题解析大全。

可以通过目录索引直接翻看需要的知识点,查漏补缺。

Android开发怎么准备才能提升面试的通过率?_Android_05