一、Android 基础与底层机制
数据库的操作类型有哪些,如何导入外部数据库?
是否使用过本地广播,和全局广播有什么差别?
是否使用过 IntentService,作用是什么,AIDL 解决了什么问题?(小米)
Activity、Window、View 三者的差别,fragment 的特点?(360)
描述一次网络请求的流程(新浪)
Handler、Thread 和 HandlerThread 的差别(小米)
低版本 SDK 实现高版本 api(小米)
launch mode 应用场景(百度、小米、乐视)
touch 事件传递流程(小米)
view 绘制流程(百度)
什么情况导致内存泄漏(美团)
ANR 定位和修正
什么情况导致 oom(乐视、美团)
Android Service 与 Activity 之间通信的几种方式
Android 各个版本 API 的区别
如何保证一个后台服务不被杀死,比较省电的方式是什么?(百度)
Requestlayout,onlayout,onDraw,DrawChild 区别与联系(猎豹)
invalidate()和 postInvalidate() 的区别及使用(百度)
Android 动画框架实现原理
Android 为每个应用程序分配的内存大小是多少?(美团)
Android View 刷新机制(百度、美团)
LinearLayout 对比 RelativeLayout(百度)
优化自定义 view(百度、乐视、小米)
ContentProvider(乐视)
fragment 生命周期
volley 解析(美团、乐视)
Android Glide 源码解析
Android 属性动画特性(乐视、小米)
Handler 机制及底层实现
Binder 机制及底层实现
二、Java 基础
接口的意义(百度)
抽象类的意义(乐视)
内部类的作用(百度,乐视)
父类的静态方法能否被子类重写,为什么?(猎豹)
举 1-2 个排序算法,并使用 java 代码实现(美团)
列举 java 的集合和继承关系(百度、美团)
java 虚拟机的特性(百度、乐视)
哪些情况下的对象会被垃圾回收机制处理掉(乐视、美团、小米)
进程和线程的区别(猎豹)
进程和线程问题详解
Java 中==和 equals 的区别,equals 和 hashCode 的区别(乐视)
ArrayList 和 HashMap 的实现原理(美团,百度)
java 中 int char long 各占多少字节数
java int 与 integer 的区别
string stringbuffer stringbuilder 区别(小米、乐视、百度)
Java 多态(乐视)
什么导致线程阻塞(58、美团)
抽象类接口区别(360)
容器类之间的区别(乐视、美团)
Java 中 HashMap 和 HashTable 的区别(乐视、小米)
ArrayMap VS HashMap
三、数据结构与算法
堆和栈在内存中的区别是什么(数据结构方面以及实际实现方面)
最快的排序算法是哪个?给阿里 2 万多名员工按年龄排序应该选择哪个算法?
堆和树的区别;写出快排代码;链表逆序代码(阿里)
求 1000 以内的水仙花数以及 40 亿以内的水仙花数(百度)
子串包含问题(KMP 算法)写代码实现
万亿级别的两个 URL 文件 A 和 B,如何求出 A 和 B 的差集 C,(Bit 映射->hash 分组->多文件读写效率->磁盘寻址以及应用层面对寻址的优化)
蚁群算法与蒙特卡洛算法
写出你所知道的排序算法及时空复杂度,稳定性(小米)
四、其他
死锁的四个必要条件
常见编码方式;utf-8 编码中的中文占几个字节;int 型几个字节
实现一个 Json 解析器(可以通过正则提高速度)
Android App 的设计架构:MVC,MVP,MVVM 与架构经验谈(搜狐)
写出观察者模式的代码
TCP 的 3 次握手和四次挥手;TCP 与 UDP 的区别
HTTP 协议;HTTP1.0 与 2.0 的区别;HTTP 报文结构
HTTP 与 HTTPS 的区别以及如何实现安全性
个人理解(不一定对 建议自行百度 如果哪位大神 看出来哪里错了 请指教下 谢谢啦)
数据库的操作类型有哪些,如何导入外部数据库?
(http://blog.csdn.net/u013680097/article/details/50550354)insert update delete select
将db文件放置到assest中,首次使用app,将assets目录下的数据库文件加载到android手机的sd下, //通过IO流的方式,将assets目录下的数据库文件,写入到SD卡中,然后通过sqliteDataBase进行数据库操作
是否使用过本地广播,和全局广播有什么差别?
本地广播(动态注册)的广播接收器可以自由地控制注册与注销,在灵活性方面有很大的优势,但是它也存在着一个缺点,即必须要在程序启动之后才能接收到广播,因为注册的逻辑是写在onCreate()方法中的。那么有没有什么办法可以让程序在未启动的情况下就能接收到广播呢?这就需要使用全局广播(静态注册)的方式了
是否使用过 IntentService,作用是什么,AIDL 解决了什么问题?
自带工作线程的service,当Service需要做一些可能会阻塞主线程的工作的时候可以考虑使用IntentService。在回调方法nHandleIntent(Intent)操作。
AIDL 是跨进程通信Activity、Window、View 三者的差别,fragment 的特点?
View主要是 可以绘制自己想要的显示内容 是一个最基本的UI组成。
Window相当于一个容器,里面“盛放”着很多View,window用来管理view ,
系统不关心Window里面具体的绘制内容,也不管你Window怎么去绘制,反正只给你提供可以在这块区域上绘制图形的Surface对象,你Window对象怎么画是你的事情!
换句话说,站在系统的角度上看,系统是“不知道”有View对象这个说法的!不管你Window如何搬砖、如何砌墙,只给你地皮。而这时,Window为了绘制出用户想要的组件(按钮、文字、输入框等等),系统又不给我!没事,那我自己定义,于是就定义了View机制,给每个View提供Canvas,让不同的View自己绘制具有自己特色的组件。同时,为了更好的管理View,通过定义ViewGroup,等等。Activity是Android应用程序的载体,允许用户在其上创建一个用户界面,并提供用户处理事件的API,如onKeyEvent, onTouchEvent等。 并维护应用程序的生命周期(由于android应用程序的运行环境和其他操作系统不同,android的应用程序是运行在框架之内,所以他的应用程序不能当当从进程的级别去考虑,而更多是从概念上去考虑。android应用程序是由多个活动堆积而成,而各个活动又有其独立的生命周期)。
Fragment可以作为Activity界面的一部分组成出现;
可以在一个Activity中同时出现多个Fragment,并且一个Fragment也可以在多个Activity中使用;
在Activity运行过程中,可以添加、移除或者替换Fragment;
Fragment可以响应自己的输入事件,并且有自己的生命周期,它们的生命周期会受宿主Activity的生命周期影响