Java 相关
- 面向对象的三大特性,如何理解其中的多态?
- 接口与抽象类的区别?
- static 方法可以被覆盖吗?为什么?
- String,StringBuffer,StringBuilder 的区别。StringBuffer,StringBuilder底层实现是通过byte数据,外加数组的拷贝来实现的
- 常见序列化协议及其优缺点
- JVM 内存模型
- JVM运行机制(理解JVM是如何运行的)
- 栈帧的结构
- 对象是如何在堆中分配的
- 创建线程的方式,有什么区别?
- 阻塞、非阻塞、同步、异步区别
- 线程池,说说其理解,线程池的参数问题?几种不同线程池的比较,阻塞队列的使用,拒绝策略
- Future和ListenableFuture 异步回调相关
- Java 四种引用,代表的含义,有什么区别?
- 深拷贝与浅拷贝
- JVM调优相关
- JVM 垃圾回收
- JVM 内存管理机制:有哪些区域,每个区域做了什么?
- JVM 垃圾回收机制:垃圾回收算法,垃圾回收器,垃圾回收策略?
- JVM参数的设置和jvm调优
- 什么情况下产生年轻内存溢出,什么情况产生年老代内存溢出?
- Java 集合,Set、List、Map的区别和联系?为什么Set、List、Map不实现Cloneable和Serializable接口
- HashMap原理?ArrayList和LinkedList区别?哪些集合类是线程安全?ConcurrentHashMap的实现,1.7和1.8的实现。
- Collection的子接口
- 什么时候使用CopyOnArrayList
- Arrays.sort的实现
- 乐观锁和悲观锁的实现
- Java 多线程 CAS (compare and swap)和 AQS(AbstractQueuedSynchronized) 的实现原理
- ThreadLocal ,对它的理解?
- 生产者消费者代码实现
- 死锁的代码实现
- volatile 的使用,synchronized 的使用,原理?ReenTrantLock 的实现,ReenTrantLock与synchronize的区别?
- 注解,反射,为什么要用?反射动态擦除,反射动态调用方法
- 设计模式:单例,代理,适配器,装饰着,观察者,策略,外观,创建者,抽象工厂
- 消息队列广播模式和发布/订阅模式的区别
- 类加载机制的步骤,每一步做了什么?static和final修改的成员变量的加载时机
- 类的加载过程,Person person = new Person();为例进行说明。
- 双亲委派
- 动态绑定:父类引用指向子类对象
- 内部类:静态内部类与匿名内部的区别
- Java BIO,NIO ,AIO的区别 和联系
- Java IO的整体架构和使用的设计模式
- HTTP 请求报文结构和内容
- HTTP 三次握手和四次挥手
- LRU算法的实现
- 消息队列的使用场景
- Java的异常处理机制
- 内存缓存的使用场景和优缺点
- SQL 优化
- 关于 equals 和 hashcode 的理解?
Android相关
- Activity 的生命周期?区别?Activity的创建过程?
- Activity的4种启动模式?各种的区别与特点
- Activity的加载过程
- Fragment ,对它的理解
- Activity与Fragment的通信
- 五种布局的性能的对比
- 四大主件,对它们的理解
- 对Service的理解,启动方式;生命周期?如何Activity交互
- 自定义View,步骤,中间出现的问题
- View的绘制流程,详细到framework代码
- 刷新View的方式,区别
- 数据存储的几种方式
- 如何实现缓存,通过使用第三方库和自定义来分别说明一下缓存技术的实现?
- 5.0 、6.0、7.0、8.0 的新特性
- 动画分类,实现原理
- 屏幕适配
- 如何JS交互
- APP启动的流程
- 常用的图片加载库有哪些?怎么实现?区别?
- 开发中用到的第三方库,源码?
- Android如何实现异步通信?
- Handler 原理
- AsyncTask ,内部实现原理,缺陷,如何改进
- JNI的使用流程
- Binder原理
- 进程间通信
- View绘制机制,View的分发机制
- 广播,与EventBus 的区别?能相互实现吗
- 网络请求如何实现?Volley,内部实现原理,与OKHttp的区别?
- 第三方推送?推送的原理
- MVP ,MVC,MVVM
- 多渠道打包
- 安卓为啥要加签名机制。签名机制的原理?反编译后,文件夹所包含的内容有哪些?
- 模块化,组件化开发
- APP如何进行架构?工程模块如何划分,如何封装?
- 安卓布局优化方案
- APP 如何优化,OOM,内存泄漏,如何解决?
- 兼容问题
- 优化方案
- 过渡绘制,如何防止
- ListView优化,下拉的优化
- 多进程Application的会启动几次
- 数据库,SQLite 操作。
- 网络相关,5层模型,TCP,UDP ,长连接
- Http 缓存机制, Last-Modify 的作用
- Grade 中,buildToolsVersion和TargetSdkVersion 的区别?
- Android 如何进行资源管理
- setContentView 与 addView 的区别
- Bitmap 的加载,不能溢出
- 插件化相关技术,热修补技术是怎样实现的,和插件化有什么区别。
- GLSurfaceView,OpenGL,Shader,绘制流程。
- 多线程多点下载的过程
- 自定义view效率高于xml定义吗?说明理由。
- 广播的种类,注册方式,优缺点?
- 安卓虚拟机和java虚拟机的原理和不同点
- 安卓权限管理,为何在清单中注册权限,安卓APP就可以使用,反之不可以
- socket短线重连怎么实现,心跳机制又是怎样实现,四次握手步骤有哪些
- 安全加密,加密算法,MD5
- hybird ,响应式编程
- RxJava,Reactive Native,面向协议编程
算法相关
- 常用的排序算法
- 二分查找
- 链表相关
- 字符串相关
- 树相关
- 判断能否从数组中找出两个数字和为给定值,随机生成1~10000不重复并放入数组,求数组的子数组的最大和,二分查找算法的实现及其时间复杂计算
- 定义栈的数据结构,请在该类型中实现一个能够找到栈最小元素的min函数
- 数组的子序列
- 字符串反转
- 快排,回型打印二维数组
- 输出所有的笛卡尔积组合
- 最长上升子序列
- 给出二叉树和一个值,找出所有和为这个值的路径;{1,3}{3,6}{3,4}{6,8}区间去重,最少去掉几个集合,可以让这个集合没有交集。
- 算法 n/m,怎么判断得数是无限循环小数。
- 给出一个搜索二叉树,输出一个排序好的双向链表。
- 将一个字符串转换成int型数字,考虑 错误输入,溢出,正负值等一些条件
- m * n的矩阵,能形成几个正方形(2 * 2能形成1个正方形,2 * 3 2个,3 * 3 6个)
- 请在100个电话号码找出135的电话号码 注意 不能用正则,(类似怎么最好的遍历LogGat日志)
- 十六进制数据怎么和十进制和二进制之间转换
其它
- git
- svn
- gradle
- 代码规范
- 安全问题