-- -- -- 献给准备换工作,赢取新一轮挑战的你!!!
Android面试一般情况下会面到如下八部分的内容:
Android面试题(一)Java高频面试题
Android面试题(二)Android中高级/资深面试题
Android面试题(三)Java虚拟机原理面试题
Android面试题(四)常用设计模式面试题
Android面试题(五)数据结构/算法面试题
Android面试题(六)高频网络基础面试题
Android面试题(七)Kotlin高频面试题
Android面试题(八)Flutter高频面试题
下面给出的一个复习时间建议,仅供参考:
(一)Java面试题:
首先Java基础依然是比较重要的,因为Android开发用的就是Java语言【即使现在逐步改用kotlin了】,很多Java的开发、源码等依然使用Java来实现,所以掌握好Java的基础知识就是每一个开发者必须掌握的技能了。但作为一个有工作经验的开发者来说,这块一般来说复习起来应该比较快。
建议时间:10%
推荐书籍:还是建议看<<Thinking in Java>>这本经典,不用所有的章节都进行阅读,只看我们实际开发中用到的知识点即可。
(二)Android面试题:
其实,之前说Java是基础,那么Android就是核心了。不然我们为啥叫做Android大神(程序猿)呢。所以Android这块是最理应是多花些时间来复习的一块。
建议时间:40%
推荐书籍:建议多读几遍<<Android开发艺术探索>>这本书,每次读都会有不同的见解。
(三)Java虚拟机面试题:
Java虚拟机属于底层的技术点,来说对我们就有些难度了,而且一般开发中用的也不多,所以我们一般情况下只需了解面试中经常问到的一些知识点即可。
建议时间:5%
推荐书籍:<<深入理解Java虚拟机>>,这本书一般来说,我们只需要掌握Java内存区域--即堆栈这些知识点及Java虚拟机的垃圾回收机制即可。尤其是垃圾回收机制经常会被问道,说起垃圾收集(GC),需要搞明白3件事情:1、哪些垃圾需要回收 2、什么时候回收 3、如何回收。搞明白这三件事情,基本上就差不多了。时间充裕的话,也可以看下虚拟机类加载机制,这块偶尔也会被问到。
(四)设计模式面试题:
设计模式的话不需要23种设计模式都掌握,一般情况下只需要掌握常用的十来种设计模式就好。比如:单例模式、(抽象)工厂模式、命令模式、观察者模式、装饰者模式、代理模式、适配器模式、组合模式、状态模式等。
建议时间:5%
推荐书籍:<<Head First设计模式>>,这本书讲的比较生动,很容易理解。但建议没看完一个设计模式的时候,自己代码敲一敲,看看自己能不能写出来,顺便加深下理解。
(五)算法面试题:
算法的话是很多人的痛点,尤其是你想面试一些大厂的话(比如像宇宙条),算法是必不可少的一项。数据结构不太好的同学,建议看算法之前先复习下数据结构。对算法比较有兴趣话(我们俗称的大神),那这块就不用担心了。对于一般的开发者我的感觉是需要掌握队列、栈、链表及二叉树的基本算法。另外常用的那几种排序算法也是面试官非常喜欢出的题目。
建议时间:15%
推荐书籍:推荐左程云大神的<<程序员代码面试指南:IT名企算法与数据结构题目最优解>>,还有程序员的算法宝典
上面算法题目都很多。找一些比较基础且出镜比较高的刷个二三十道,感觉就差不多了。刷算法题切记去记忆算法,最好能在纸上把算法的前后逻辑一步步都画出来,然后去理清楚思路,算法自然而然就写出来了。
(六)网络面试题:
网络基础涉及到的东西没那么多,建议简单过一下理清思路即可,面试官问题的时候能比较顺畅的答出来就可以了。
建议时间:5%
推荐书籍:这块就不推荐书籍了。Google上找一些好的blog,以OSI七层模型和TCP/IP的五层模型为基础展开,重点看下传输层和应用层。其中涉及到TCP/UDP、Get/Post、Http/Https等的区别;TCP的三次握手/四次挥手;Cookie/Session原理;Socket原理等。
(七)Kotlin面试题:
Kotlin作为目前的Android官方第一开发语言,已经是面试中的必问项了,很多公司的项目目前已经全Kotlin化,针对目前的任何Android项目Kotlin是后续开发的首选语言,所以重要性不言而喻。
建议时间:10%
(八)Flutter面试题:
Flutter已经是目前跨平台开发的首选,很多公司为了节省人力成本,大量的引入Flutter来开发需求,所以Flutter基本是面试中的必问项,一般的要求是做过类似Flutter跨平台的开发,了解Flutter基础的知识点,我上面也是根据实际的Flutter面试经验总结出了Flutter高频面试基础题目,相信对你是有用的。
建议时间:10%
以上给出的是通用的Android面试题,常规的Android岗位面试一般复习以上这些就完全足够了。
当然了有些公司岗位需求还可能针对性的招Flutter开发工程师、RN开发工程师、Android逆向开发工程师、Android系统工程师等。这样就需要根据实际情况,酌情重点复习了。
最后,祝你幸福~ (⊙o⊙)…sorry,祝你顺利,节节高升!!