如何准备Android的面试,结合我之前面试和面试官的经验,目前我梳理了一些基本的知识和准备。
首先,自己要对整个面试要考察的内容要有比较清晰的结构。
下面是整个思维导图:
我们主要分为2大块
1.基础知识
基础知识主要包括
1.Java,Kotlin的基本语言,
-
面向对象的基本思想
-
内部类:内部类的分类、应用场景、内部类编译成class后是怎么样的。
-
抽象类 & 接口:区别、应用场景。
-
注解:注解的基本概念、分类、编译时注解 & 运行时注解。
-
内存模型。
-
垃圾回收。
-
类加载的过程。
-
泛型:分类、通配符 & 上下边界、泛型擦除。
-
反射:使用。
-
多线程,线程池。
-
Kotlin的优点,协程。
2.Android基础知识
-
Dalvik、Art虚拟机
-
Activity:生命周期、launchMode。
-
Fragment:生命周期、懒加载、两种Adapter之间的区别。
-
BroadcastReceiver:基本概念、广播分类、权限。
-
Service:生命周期、onStartCommand的返回值、startService和bindService的区别、相同进程 & 不同进程的交互、IntentService实现原理。
-
重要的工具类 & 源码实现:AsyncTask、HandlerThread、Handler、IntentService、LruCache、LinkedHashMap、SparseArray。
-
RecyclerView:缓存原理、和ListView的对比、Adapter如何适配多种layout。
-
存储:数据库升级 & 优化、ContentProvider,SharePreference。
-
SDK版本升级的兼容问题。
-
Android的权限管理机制。
3.数据结构
-
数组,链表,
-
栈 Stack
-
队列 Queue
-
链表 Linked List
-
数组 Array
-
哈希表 Hash Table
-
二叉树 Binary Tree
-
堆 Heap
-
并查集 Union Find
-
字典树 Trie
4.算法
- 二分搜索 Binary Search
- 分治 Divide Conquer
- 宽度优先搜索 Breadth First Search
- 深度优先搜索 Depth First Search
- 回溯法 Backtracking
- 双指针 Two Pointers
- 动态规划 Dynamic Programming
- 扫描线 Scan-line algorithm
- 快排 Quick Sort
- leetCode,剑指Offer里刷题
5.网络
- 网络分层模型,TCP/UDP,HTTP/HTTPS
6.设计模式
按照23种网络模型、三个分类进行总结,每种设计模式包含以下三个方面,至少要准备常用的几个:
基本概念:UML图、简单例子、应用场景、优势 & 劣势。
Android源码中的实现
项目中的应用
7.其他
如:
-
跨平台:RN,Weex,Flutter
-
开源库:OKHttp,Retrofit,Glide
-
组件化,插件化,Gradle
2.项目经验
1.自我介绍
通常面试一开始,面试官就会让我们先自我介绍。
自我介绍这部分,逻辑清晰,有条理最重要。
之前工作的公司、岗位及工作方向。
团队构成,在团队中的位置及承担的责任。
为团队做出的主要贡献,对于这部分涉及到的 项目经历以及延伸出的知识点 一定要重点准备。
2.项目经验
把觉得做的有亮点的东西挑出来,从四个方面来准备:
- 功能模块的实现
- 达到了什么效果
- 遇到了什么问题,是如何解决的
- 涉及到的相关知识点
项目经验和知识点其实是一个双向的过程,要试图去找到它们之间的联系:
- 谈到项目经验的时候,可以说:做完 xx 之后,我还去了解了一下 yy 背后的原理,xxx,这里体现的是你是否有求知欲 。
- 谈到知识点的时候,可以说:yy 的原理是这样的,在 xx 项目中我是如何应用它来解决问题的,这里体现的是你是否具备把知识付诸实践的能力。
3.解决问题
通常面试官会问你在平时开发过程中有遇到什么比较棘手的问题么,以及如何去解决的
- 遇到问题
- 分析过程
- 解决方案
- 结果
更多Android和代码相关信息,请扫描下方二维码