概述
网上有很多的面试题系列,Android学习路线系列,本次整理也是看下自己对Android的熟悉程度,有哪些自己会了,哪些自己还不会需要学习,以便于自己更好的提高自己
(文章末尾附有相关参考文章,都写的特别好)
java基础
-
java根类Object的方法说明
fangjian0423.github.io/2016/03/12/… -
java JVM虚拟机
blog.csdn.net/qq_41701956… -
Object类的equal和hashCode方法需要同时重写,为什么? www.cnblogs.com/tiancai/p/9…
如果2个对象使用equals方法进行比较并且相同的话,那么这2个对象的hashCode方法的值也必须相等。 违反这一点产生的后果就是如果一个stu1实例是Student(“fo”, 11),stu2实例是Student(“fo”, 11),那么这2个实例是相等的,但是他们的hashCode不一样,这样是导致哈希表中都会存入stu1实例和stu2实例,但是实际情况下,stu1和stu2是重复数据,只允许存在一条数据在哈希表中。所以这一点是非常重点的,再强调一下:如果2个对象的equals方法相等,那么他们的hashCode值也必须相等,反之,如果2个对象hashCode值相等,但是equals不相等,这样会影响性能,所以还是建议2个方法都一起重写。 -
HashMap原理,Hash冲突,并发集合,线程安全集合及实现原理 blog.csdn.net/ptsx0607/ar…
-
HashMap 和 HashTable 区别
-
HashCode 作用,如何重载hashCode方法
-
ArrayList与LinkList区别与联系
-
GC机制
-
Java反射机制,Java代理模式
-
Synchronized原理
-
Volatile实现原理
-
死锁的四个必要条件 blog.csdn.net/yangquanhui…
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 占有且等待:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3)不可强行占有:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系 存在一个进程等待序列{P1,P2,...,Pn},其中P1等待P2所占有的某一资源,P2等待P3所占有的某一 源,......,而Pn等待P1所占有的的某一资源,形成一个进程循环等待环。就像前面的过独木桥问题,甲等待乙 占有的桥面,而乙又等待甲占有的桥面,从而彼此循环等待。 -
怎么避免死锁
-
对象锁和类锁是否会互相影响
-
方法锁、对象锁、类锁的意义和区别
-
写一个单例模式,如何做到线程安全(双重加锁)
-
Java锁的种类: 公平锁、乐观锁、互斥锁、分段锁、偏向锁、自旋锁等
-
ThreadLocal的原理和用法
-
ThreadPool的用法和示例 —— 线程池的实现原理
-
开启线程的三种方式
-
wait()和sleep()的区别
-
join的用法
-
什么导致线程阻塞?
-
线程如何关闭?
-
run()和start()方法区别
-
进程和线程的区别
-
int、char、long各占多少字节数
-
引用类型
-
谈谈对java多态的理解
-
String、StringBuffer、StringBuilder区别
数据结构
-
栈和队列
-
经典问题:海量数据的处理 (10亿个数中找出最大的10000个数 TOP K问题)
-
二叉树遍历(非递归)
-
查找树中两个节点的最低公共祖先
-
求二叉树中节点之间的最大距离
-
基础排序算法:重点 快排、归并排序、堆排序(大根堆、小根堆)
-
String 转 int
-
如何判断一个单链表有环
-
链表翻转
-
100 亿个单词,找出出现频率最高的单词。要求几种方案
-
常用数据结构简介
www.jianshu.com/p/fae032319… blog.fundebug.com/2018/08/27/… -
数组和链表的区别 blog.csdn.net/qq_25806863…
-
实现LRU算法 www.jianshu.com/p/b49a11114…
-
求股票的最大利润 blog.csdn.net/program_dev…
-
输入字符串,输出对应的整数形式 www.cnblogs.com/wangnanhui/…
-
反转单向链表
blog.csdn.net/qq_26287435… -
找出单向链表中倒数第K个节点,并删除 (1:遍历两次 2:用两个指针)
wiki.jikexueyuan.com/project/for… -
检查链表是否有环,若有环的话,求出环的入口和环的长度 blog.csdn.net/u011388550/…
-
两个有序且无重复元素的整数数组,找出相同元素 www.kancloud.cn/maliming/le…
Android 相关
-
Android各个版本API的区别 mp.weixin.qq.com/s/uPKY372k1…
-
Activity-Window-View三者的差别 juejin.cn/post/684490…
-
Application生命周期
blog.csdn.net/maican666/a… -
Android Activity生命周期
www.jianshu.com/p/fb44584da… -
onStart()与onResume()有什么区别?
-
Android Activity启动模式
blog.csdn.net/linghu_java… -
singleInstance和singleTask的应用场景 xiazdong.github.io/2015/03/08/…
-
service和activity怎么进行数据交互
-
Fragment的生命周期
-
Android Service、IntentService,Service和组件间通信
-
如何保证Service不被杀死?如何保证进程不被杀死?
-
Service的开启方式
-
Android消息机制
www.jianshu.com/p/36a978b6c… -
Looper.loop()为什么不会阻塞主线程
-
Handler、Thread和HandlerThread的差别
-
Android 多线程的实现:Thread、HandlerThread、AsyncTask、IntentService、RxJava
-
ActivityThread工作原理
-
RecyclerView与ListView(缓存原理,区别联系,优缺点)
-
View的绘制原理,自定义View,自定义ViewGroup
-
getWidth()方法和getMeasureWidth()区别呢?
-
Asset目录与res目录的区别
-
序列化serializable和parcelable的区别
-
ANR产生的原因是什么
-
Apk 打包流程梳理
-
Android 触摸事件机制
-
APK瘦身
-
Android进程间通讯 aidl
-
Android Activity启动原理
-
Android AMS的了解
-
Android 进程间通讯的原理
-
Android 模块化 组件化 插件化 移动端架构的了解
-
Android 性能优化
-
各种原理,经典第三方库源码系列(glide,OKHTTP,EventBus等等)
最后
出了技术相关的知识外,我们还需要额外准备一些东西
- 你工作中最牛逼or最成功or最有贡献的一件事是什么?
- 项目中的亮点是哪些?怎么实现的?(实在没有的自己去找,只能用别人的案例了)
- 做项目的过程中有没有遇到过困难?怎么克服的?
参考
以下几篇关于写Android面试的文章都写的很好