某鹅Android面试
2016-07-26 本文已影响828人
nothingwxq
题外话
最近准备离职,换个环境。发觉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但底层很多不是很明白,果断在面试中不提。
java 语法知识 主要集中在集合和多线程
先说一个题外话,恩,还算幸运,居然没有涉及到垃圾回收机制和JVM类加载等。以下是一面电话面试内容。
- ArrayList 扩容
- ArrayList和LinkedList 区别
- ArrayList 删除元素是否有缩容策略,当时猜的是有,因为忘记了对应的源代码
- 如果是你,怎么设计ArrayList 删除时,缩容策略
- 用过HashMap么? LinkedHashMap 和HashMap区别?
这个答得不好 - LinkedHashMap里面有按照顺序存储数据,如果是你怎么设计?
LRUChache的基本上就是采用的这个。 - volatile关键字含义? 如果每个线程都存有共享数据的副本,是否会浪费空间。 JVM的内存模型实质
- 设计一种多线程的数组满足读多写少的情况。会哪些存在的线程并发问题。
CopyOnWriteArrayList
Android的知识
- Activity 的lanchMode 和FLAG标签
- Service中 bindSerice和 startService 区别
- 事件拦截和传递机制
- Textiew怎么添加图片
- TextView加载很多文字的时候,加载较慢,如何优化
- 强引用,弱引用,软引用的区别等
数据结构
- 链表的是否相交 当时提供了几种解法,然后自己给自己挖坑了
- 如何判断交点
当然面试的时候还有些细节部分,主要过了一段时间记不清楚了。以上仅供参考,如有雷同纯属你抄我。