从毕业至今经历了两家公司,都是比较小的创业型公司。目前因为公司的缘故(算是倒闭吧—停业清算)不得投入到轰轰烈烈的求职大军中来。这次求职的目标是中大型公司,加之时间只有一个月不到,因此面试经历不算丰富。不过还是记录下来以供参考,顺便算是一个总结吧。
这里只对问题做一些记录,具体答案就不公布了,才疏学浅以免误导。
Java 相关
这一部分主要是一些 Java 方面的知识。面试 Android 免不了的会被问到 Java 的东西。
- Java 三大特性
- Java中==和equals和hashCode的区别
- String、StringBuffer、StringBuilder区别
- 对 String 的理解
- 成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用
- 泛型中 extends 和 super 的区别
- 泛型的原理
- 序列化的方式及区别
- 一个 Integer 对象在内存中占多少个字节
- Java 的异常体系
- 多态的机制
- 反射机制
- 类加载过程
Android 相关
- 四大组件
- Activity Fragment 生命周期
- Activity 各种切换间的生命周期调用过程
- Activity 启动模式及应用场景
- Activity 和 Service 之间的通讯方式
- 跨进程通讯都有那些方式
- 数据库,以及数据库升级
- 自定义 View 相关的东西
- 事件分发机制
- Activity-Window-View三者的关系
- IntentService 的原理
- AsyncTask 的原理
- Activity 的启动
- Handler 的原理
- Handler 使用过程中可能出现那些问题,及解决办法
- ScrollView 的原理
- 对Bitmap 的理解
- RecycleView/ListView 优化
- gradle 在打包过程中是怎么执行的
- Library 和 主工程的 gradle 的区别
Kotlin
关于 Kotin 这个被问到的比较少,但是现在越来越多公司开始使用,所以最好还是做一定的了解。
- 高阶函数
- 类扩展
- 对 Kotlin 的看法(使用心得等)
一些常用三方库、框架等
这个也是被问到的比较多的内容,一般都是问原理。
- 开发中都用到了那些三方库
- RxJava 的使用及原理
- Glide 的原理
- Retrofit 的原理
数据结构
包括一些常用集合的原理等问题,我把它们划分为数据结构相关的知识
- HashMap 的原理(初始化、扩容、put操作等)
- HashMap 和 HashTable 的区别,哪个是线程安全的
- ArrayList 的原理
- ArrayList 和 LinkedList 的区别
- TreeMap 的了解
- SpareArray 的原理
- 链表(要求手写一个链表结构)
- 平衡二叉树的了解
- 二叉树的遍历(前序、中序、后序)
线程相关
多线程其实在面试中是被问到的比较多的,不过翻来覆去就这几个问题
- run 和 start 的区别
- 怎么启动多线程
- 线程池都有哪些,以及他们的区别、原理等
- 线程是什么时候结束的
- 如何结束掉一个线程,如果当前线程正在被阻塞,怎么结束掉
- Thread 和 Runnable 的区别
- 线程同步机制
- 锁机制
算法
算法这一块被问到的不是太多,不过最好做相应的了解并由一定的准备。
- 排序算法有哪些
- 冒泡排序的时间复杂度
- 要求对一组学生成绩做排序,并写出算法的时间复杂度
- 1, 1, 2, 3, 5, 8, 13, 21, 34, 55… 的规律,并手写算法(斐波那契数列)
- 反转一个单链表
网络相关
网络这一块被问到的也不算太多,都是比较简单的问题。
- Http 请求的方式都有哪些
- GET 请求的参数有什么要注意的
- GET 请求的参数长度限制
- POST 请求的类型有哪些
主观问题
这里面主要是聊一些主观性的东西,不过个人认为算是比较重要的东西。
- 如果让你封装一个图片加载库,你都会考虑哪些方面的问题
- 如果一个页面多次进入越来越卡,你会考虑到那些方面的问题
- 最近开发中遇到的认为比较有价值的问题
- 你认为你做的项目中有哪些比较有代表性的技术
- 闲暇时间都干嘛?
- 平时有看一些技术文章、书籍么?你认为对你实际开发的帮助有哪些
- 搞了这么久开发,你认为自己有哪些亮点
其他
- git 的 Rebase 和 Merge 的区别
以上就是我在近一个月面试过程中遇到的问题,仅靠个人之力肯定不够全面。不过程序员崇尚开源,这里也是拿出来和大家分享。