Android 面试题整理

362 阅读6分钟

概述

网上有很多的面试题系列,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区别

数据结构

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