版权申明:本文由知识星球《程序员突围》版权所有。未经许可,不得以任何形式转载
如果是做Android应用开发,作为面试官一般从深度和广度以及项目关键点来进行提问.
一般有深度面试官会进行深挖,看你能到哪层,比如:面试官问常用数据结构有哪些?Java中你用过哪些集合类?
- 层次一:数据结构有哪些,数组,链表,树,图,表
- 层次二: ArrayList 和 LinkedList 用的是哪一种?数组,链表
- 层次三: HashMap 的原理,get方法和put方法区别?如何解决Hash冲突。散列列表
- 层次四: HashMap(5) 长度是多少?
- 层次五: 为什么是 2 的幂次,各个版本之间的区别
- 层次五:ConcurrentHashMap有用过么?和HashMap区别是什么?
再举例一个,我经常回问的问题:
- 层次一:进程和线程有什么区别?
- 层次二:线程有哪几种状态
- 层次三:Java中多线程有用过么?线程安全怎么理解?Volatile关键字有用过么?是线程安全的么?为什么?和synchronized有什么区别?
- 层次四:Java中用过哪些锁?lock和synchronized有什么区别?
- 层次五:给你一个两个线程,线程1打印‘A’,线程2打印‘B’,按顺序输出ABABAB...,写个伪代码或是思路。
如果是广度上,类似就是从 Java基础:基础概念,集合框架,内存模型,多线程,GC回收机制及策略 Android基础:动画,自定义View,事件分发,四大组件的了解,AIDL,Binder通信等
专题方向:
- 1、如简历有写插件化,模块化,组件化开发,像我必问原理,过程,组件之间如何通信,
- 2、如简历有写性能优化,从内存优化,渲染优化,电量优化,网络优化方向问实际中遇到的问题和解决手段,包括使用具体的工具名字。
- 3、如简历有写做过NDK/JNI开发,必问虚函数,虚析构,Java如何传数据给JNI。 JNI有哪几种种引用?局部引用、全局引用、弱全局引用区别?怎么释放引用?是不是一定要释放引用?
- 4、如简历有过音视频开发,这个问的就很多了,后续总结。
如果是做AndroidFrameWork开发,主要从深度上考察。
举例一些基础面试题如下:
- LRUCache原理
- 图片加载原理
- 模块化实现(好处,原因)
- JVM
- 视频加密传输
- 统计启动时长,标准
- 如何保持应用的稳定性
- ThreadLocal 原理
- 谈谈classloader
- 动态布局
- 热修复,插件化
- HashMap源码,SpareArray原理
- 性能优化,怎么保证应用启动不卡顿
- 怎么去除重复代码SP是进程同步的吗?有什么方法做到同步
- 介绍下SurfaceView
- HashMap实现原理,ConcurrentHashMap 的实现原理
- BroadcastReceiver,LocalBroadcastReceiver 区别
- Bundle 机制Handler 机制
- android 事件传递机制
- 线程间 操作 List
- App启动流程,从点击桌面开始
- 动态加载
- 类加载器
- OSGI
- Https请求慢的解决办法,DNS,携带数据,直接访问IP
- GC回收策略
当然远远不止这些基础。