最近准备离职,换个环境。发觉java的面试知识,我确实准备不充分,lz研究生期间是做iOS的,进入某厂转入Android。这次正式以Android的开发者进入面试,哎,发觉一大堆坑。其实面试主要进行了如下方面: 1. Android相关知识 2. java基础知识 3. 开发者的基础知识 数据结构与算法、操作系统(这一面没有涉及)等
由于我简历上还有iOS相关的经验,还写了个熟悉c/c++,于是复习内容如下:
1. 程序员面试笔试宝典
2. 剑指offer
3. 找的网上java相关的面试题目
4. 看java源码: 这里准备有些不足,细节上很多答不上来。
如 ArrayList扩容和缩容,HashMap(jdk 1.8 后这里使用红黑树优化也较难), HashSet等面试前稍微看了下LinkedHashMap源码,其实这里很多面试问题。这里还有一个比较难的源码,红黑树实现的TreeMap,TreeSet
并发容器(这里没怎么准备): CopyOnWriteArrayList、LinkedBlockingQueue、ArrayBlockingQueue、SynchronousQueue。 以上源码很多是需要分版本的。
5. 并发多线程的一些操作。
6. Android源码:只准备了几个项目相关的,如okHttp、Volley、EventBus、Butterknife等还有几个图片库。其实还准备了下装逼的 retrofit+ rxjava但底层很多不是很明白,果断在面试中不提。
先说一个题外话,恩,还算幸运,居然没有涉及到垃圾回收机制和JVM类加载等。以下是一面电话面试内容。