Android 面试题整理

概述

网上有不少的面试题系列,Android学习路线系列,本次整理也是看下本身对Android的熟悉程度,有哪些本身会了,哪些本身还不会须要学习,以便于本身更好的提升本身html

(文章末尾附有相关参考文章,都写的特别好)java

java基础

  • java根类Object的方法说明
    fangjian0423.github.io/2016/03/12/…android

  • java JVM虚拟机
    blog.csdn.net/qq_41701956…git

  • 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个方法都一块儿重写。github

  • 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区别

数据结构

Android 相关

  • Android各个版本API的区别 mp.weixin.qq.com/s/uPKY372k1…

  • Activity-Window-View三者的差异 juejin.im/entry/59632…

  • 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面试的文章都写的很好

相关文章
相关标签/搜索