最全Android面试题大集合(Android、Java、计算机基础、设计模式)持续更新

来源:互联网 发布:java this super 区别 编辑:程序博客网 时间:2024/05/16 17:06

写在前边

最近在准备面试,费了很大劲收集整理了面试题,包括Android基础、Android高级、Java、计算机基础、设计模式、以及一些常见的问题。所有题目来源于网络,包含了掘金,简书以及其他平台的文章。面经等等。有大厂也有小公司,有基础也有高级,文章最后附上了链接,希望能帮到有需要的人,做好充足的准备,找到满意的工作。


Android

  • 基础:

    • 1.四大组件及生命周期;

    • 2.安卓子线程是否能更新UI,如果能请说明具体细节。

    • 3.什么是ANR?ANR产生的原因和解决步骤 ?ANR 具体产生的类型有哪些,具体说下其产生的最大超时时间。 如何避免它?

    • 4.activty和Fragmengt之间怎么通信,Fragmengt和Fragmengt怎么通信

    • 5.广播注册一般有几种,各有什么优缺点

    • 6.服务启动一般有几种,服务和activty之间怎么通信,服务和服务之间怎么通信

    • 7.数据库的知识,包括本地数据库优化点。

    • 8.如何针对具体的SQL做优化;mysql的存储引擎有哪些,区别;

    • 9.请描述安卓四大组建之间的关系,并说下安卓MVC的设计模式。

    • 10.ContentProvider的权限管理(读写分离,权限控制-精确到表级,URL控制);

    • 11.Activity的四种启动模式对比;Activity状态保存于恢复;

    • 12.什么是AIDL 以及如何使用;

    • 13.请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系;

    • 14.Fragment生命周期;Fragment状态保存;

    • 15.startActivityForResult是哪个类的方法,在什么情况下使用,如果在Adapter中使用应该如何解耦;

    • 16.AsyncTask原理及不足(AsyncTask 如何使用;);

    • 17.IntentService原理;

    • 18.Activity 怎么和Service 绑定,怎么在Activity 中启动自己对应的Service;

    • 20.请描述一下Service 的生命周期;

    • 21.如何通过广播拦截和abort一条短信;

    • 22.广播是否可以请求网络?广播引起anr的时间限制;

    • 23.事件分发中的onTouch 和onTouchEvent 有什么区别,又该如何使用?

    • 24.说说ContentProvider、ContentResolver、ContentObserver 之间的关系;

    • 25.请介绍下ContentProvider 是如何实现数据共享的;

    • 26.Handler机制及底层实现;

    • 27.Binder机制及底层实现;

    • 28.在manifest 和代码中如何注册和使用BroadcastReceiver;

    • 29.说说Activity、Intent、Service 是什么关系;

    • 30.ApplicationContext和ActivityContext的区别;

    • 31.Serializable 和Parcelable 的区别;

    • 32.请描述一下BroadcastReceiver;

    • 33.OOM的避免异常及解决方法;

    • 34.两个Activity 之间跳转时必然会执行的是哪几个方法?

    • 35.理解Activity,View,Window三者关系

    • 36.四种LaunchMode及其使用场景

    • 37.recycleView与listView的区别

    • 38.什么情况下,Activity的onNewInstent()方法会执行?Activity的启动模式相关。

    • 39.Fragment能否不依赖于Activity存在?简析一下Fragment的栈管理。

    • 40.View的post(Runnable r)方法里,r会带来一个新的线程吗?多线程相关。

    • 41.在非UI线程中使用Handler需要注意哪些问题?

    • 42.Android ListView优化之局部刷新(更新)(非notifyDataSetChanged)

    • 43.EventBus的机制是什么?和Handler的区别怎样?

    • 44.Broadcast Receiver在什么情况下能用得到?

    • 45.请简述一下你对fragment的理解?

    • 46.请简述一下Fragment的生命周期?

    • 47.说说你知道的Android5.0和Android6.0的新功能?

    • 48.RecyclerView 和 ListView 使用对比分析

    • 49.Android的APK瘦身方法你了解多少?

    • 50.android项目目录中res目录和assets目录的区别?

    • 51.你用过Gradle吗?

    • 52.Activity的四种状态是什么,分别对应的Activity的生命周期是什么?

    • 53.请说说你是怎么优化ListView的?

    • 54.android中进程的优先级?

    • 55.Serializable和Parcelable

    • 56.Context相关

    • 57.Jar和Aar的区别

    • 58.什么是三级缓存

    • 59.Android为每个应用程序分配的内存大小是多少

    • 60.更新UI方式

    • 61.Activity启动过程详解

    • 62.SurfaceView和View的最本质的区别


  • 高级

    • 1.安卓事件分发机制,请详细说下整个流程

    • 2.安卓view绘制机制和加载过程,请详细说下整个流程

    • 3.多线程和安全问题(安卓解决线程并发问题)

    • 4.多线程多点下载的过程

    • 5.怎么让自己的进程不被第三方应用杀掉,系统杀掉之后怎么能启动起来。

    • 6.自定义view效率高于xml定义吗?说明理由。

    • 7.activty的加载过程 请详细介绍下(不是生命周期切记)

    • 8.安卓采用自动垃圾回收机制,请说下安卓内存管理的原理

    • 9.说下安卓虚拟机和java虚拟机的原理和不同点

    • 10.JNI 调用过程中 混淆问题

    • 11.handler机制

    • 12.Android 绘制过程,onMeasure 的原理,解决了什么问题;

    • 13.自定义View如何考虑机型适配?自定义View的事件分发机制?自定义View如何提供获取View属性的接口;

    • 14.View和ViewGroup分别有哪些事件分发相关的回调方法;

    • 15.AstncTask+HttpClient与AsyncHttpClient有什么区别;

    • 16.如何保证一个后台服务不被杀死;比较省电的方式是什么;

    • 17.ListView 中图片错位的问题是如何产生的;

    • 18.一张Bitmap所占内存以及内存占用的计算;

    • 19.请介绍一下NDK;什么是NDK库?如何在jni中注册native函数,有几种注册方式;

    • 20.什么情况下会导致内存泄露;

    • 21.屏幕适配的处理技巧都有哪些;

    • 22.Android中跨进程通讯的几种方式

    • 23.Android 三大图片缓存原理、特性对比

    • 24.Android内存泄漏研究

    • 25.Android6.0运行时权限

    • 26.Activity建立在哪些窗口组件之上?顺带涉及View的事件传递问题

    • 27.引起内存泄漏的情况

    • 28.动画:


  • 性能优化

    • 1.安卓性能优化和兼容问题

    • 2.安卓布局优化方案,(布局优化主要哪些?具体优化?)

    • 3.如何对Android 应用进行性能分析以及优化;

    • 4.屏幕适配:


  • 开源项目:

    • 1.hybrid混合开发,响应式编程等

    • 2.Android开源框架otto,eventbus

    • 3.网络框架用的什么,OkHttp 的功能是什么;

    • 4.都使用过哪些框架、平台;都使用过哪些自定义控件;

    • 5.ButterKnife原理


  • 扩展

    • 1.android 5.0 6.0 以及7.0预测新特性

    • 2.看过安卓源码吗,请说出一个你看过的API或者组建内部原理。

    • 3.Art和Dalvik对比;

    • 4.虚拟机原理,如何自己设计一个虚拟机(内存管理,类加载,双亲委派);

    • 5.JVM内存模型及类加载机制;内存对象的循环引用及避免;

    • 6.ddms 和 traceView的区别;

    • 7.对于应用更新这块是如何做的?(灰度,强制更新,分区域更新);

    • 8.混合开发,RN,weex,H5,小程序(做Android的了解一些前端js等还是很有好处的);

    • 9.说一款你认为当前比较火的应用并设计(直播APP);

    • 10.热修复:

    • 11.Android的多渠道打包你了解吗


Java

  • Java 部分

    • 1.说说你对Java的线程机制的理解?

    • 2.abstract和interface的区别?

    • 3.array,arrayList, List ,三者有何区别?ArrayList原理

    • 4.hashtable和hashmap的区别,并简述Hashmap的实现原理

    • 5.StringBuilder和],String ,subString方法的细微差别

    • 6.线程中sleep()和wait()有和却别,各有什么含义

    • 7.谈下对Java OOP中多态的理解 Java中实现多态的机制是什么;

    • 8.HashMap原理

    • 9.反射,注解的原理

    • 10.ArrayList 和 LinkedList 的区别?造成区别的原因是什么,为什么删查的复杂度不同;

    • 11.Java 线程同步了解不,同步方法在不同的实例之间是否仍然保持同步,有没有什么隐患;

    • 12.Java 类加载机制了解不,双亲委派原理;

    • 13.单例设计模式:

    • 14.简述synchronized?Object;Monitor机制

    • 15.简述happen-before规则;

    • 16.JUC和Object;Monitor机制区别是什么;简述AQS原理;

    • 17.简述nio原理;

    • 18.简述class加载各阶段过程;class;loader有哪些模型;

    • 19.多线程中的安全队列一般通过什么实现?线程池原理?(java)

    • 20.多线程,多并发怎么处理,怎么优化

    • 21.简述DCL失效原因,解决方法;

    • 22.简述字节码文件组成;

    • 23.集合类以及集合框架;HashMap与HashTable实现原理,线程安全性,hash冲突及处理算法;ConcurrentHashMap;

    • 24.Java的并发、多线程、线程模型;

    • 25.如何控制某个方法允许并发访问线程的个数;

    • 26.什么是线程池,如何使用?

    • 27.数据一致性如何保证;Synchronized关键字,类锁,方法锁,重入锁;

    • 28.如何将一个Java对象序列化到文件里;

    • 29.说说你对Java反射的理解;

    • 30.在Java中wait和seelp方法的不同;

    • 31.synchronized 和volatile 关键字的作用;

    • 32.ThreadLocal原理,实现及如何保证Local属性;

    • 33.String StringBuilder StringBuffer对比;

    • 34.你所知道的设计模式有哪些;

    • 35.Java如何调用c、c++语言;

    • 36.接口与回调;回调的原理;写一个回调demo;

    • 37.泛型原理,举例说明;解析与分派;

    • 38.抽象类与接口的区别;应用场景;抽象类是否可以没有方法和属性;

    • 39.静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?

    • 40.修改对象A的equals方法的签名,那么使用HashMap存放这个对象实例的时候,会调用哪个equals方法;

    • 41.Java的异常体系;

    • 42.动态代理的区别,什么场景使用;

    • 43.说说你了解的一个线程安全队列;

    • 44.JavaGC机制的原理和内存泄露

    • 45.内存回收机制与GC算法(各种算法的优缺点以及应用场景);
      GC原理时机以及GC对象;内存泄露场景及解决方法;
      Java GC 了解过没有,如何判断一个对象是否可以被GC;
      gc算法有哪些;gc收集器有哪些;

    • 46.说说你对Java中几种引用的理解?

    • 47.DVM与JVM分别是什么,他们之间有什么区别?

    • 48.jvm运行时数据区域有哪几部分组成,各自作用;

    • 49.简述常用的JDK命令行工具;

    • 50.Atomic包的实现原理是什么;

    • 51.CAS又是怎么保证原子性的;

    • 52.string分析1000次循环subString用了多少内存;


设计模式:
请写出四种以上你知道的设计模式,并介绍下实现原理
请你详细说下你知道的一种设计模式,并解释下java的高内聚和低耦合。


计算机基础

  • 计算机基础

    • 进程和线程的区别;

    • 你知道的数据结构有哪些,说下具体实现机制

    • 十六进制数据怎么和十进制和二进制之间转换

    • 安卓权限管理,为何在清单中注册权限,安卓APP就可以使用,反之不可以(操作系统)

    • socket短线重连怎么实现,心跳机制又是怎样实现,四次握手步骤有哪些(网络通讯原理)

    • http中TCP和UDP有啥区别,说下HTTP请求的IP报文结构(计算机网络)

    • 你知道的安全加密有哪些?

    • 你知道的数据存储结构?堆栈和链表内部机制。(数据结构)

    • 说下Linux进程和线程的区别。进程调度优先级,和cpu调度进程关系。(操作系统)

    • spring 的反射和代理,在安卓中应用场景(插件和ROM数据框架)

    • http协议的理解和用法

    • 堆和栈在内存中的区别是什么(数据结构方面以及实际实现方面);

    • 最快的排序算法是哪个?给阿里2万多名员工按年龄排序应该选择哪个算法?堆和树的区别;写出快排代码;链表逆序代码;

    • 求1000以内的水仙花数以及40亿以内的水仙花数;

    • 子串包含问题(KMP 算法)写代码实现;

    • 万亿级别的两个URL文件A和B,如何求出A和B的差集C,(Bit映射->hash分组->多文件读写效率->磁盘寻址以及应用层面对寻址的优化)

    • 蚁群算法与蒙特卡洛算法;

    • 写出你所知道的排序算法及时空复杂度,稳定性;

    • 百度POI中如何试下查找最近的商家功能(坐标镜像+R树)。

    • 死锁的四个必要条件;

    • 常见编码方式;utf-8编码中的中文占几个字节;int型几个字节;

    • 实现一个Json解析器(可以通过正则提高速度);

    • MVC MVP MVVM; 常见的设计模式;写出观察者模式的代码;

    • TCP的3次握手和四次挥手;TCP与UDP的区别;

    • HTTP协议;HTTP1.0与2.0的区别;HTTP报文结构;

    • HTTP与HTTPS的区别以及如何实现安全性;

    • 5枚硬币,2正3反如何划分为两堆然后通过翻转让两堆中正面向上的硬币和反面向上的硬币个数相同;
      时针走一圈,时针分针重合几次;

    • N * N的方格纸,里面有多少个正方形;

    • 现在下载速度很慢,试从网络协议的角度分析原因,并优化(网络的5层都可以涉及)。

    • 请在100个电话号码找出135的电话号码 注意 不能用正则,(类似怎么最好的遍历LogGat日志)


其它

  • 说下平时开发中比较注意的一些问题,

  • 为啥离职呢 对待加班看法

  • 你擅长什么,做了那些东西。

  • 研究比较深入的领域有哪些;

  • 对业内信息的关注渠道有哪些;

  • 最近都读哪些书;

  • 自己最擅长的技术点,最感兴趣的技术领域和技术点;

  • 项目中用了哪些开源库,如何避免因为引入开源库而导致的安全性和稳定性问题;

  • 讲一件你印象最深的一件事情;

  • 介绍一个你影响最深的项目;

  • 介绍你最热爱最擅长的专业领域;

  • 与上级意见不一致时,你将怎么办;

  • 自己的优点和缺点是什么?并举例说明?

  • 你的学习方法是什么样的?实习过程中如何学习?实习项目中遇到的最大困难是什么以及如何解决的;

  • 针对你你申请的这个职位,你认为你还欠缺什么;

  • 如果通过这次面试我们单位录用了你,但工作一段时间却发现你根本不适合这个职位,你怎么办;

  • 项目中遇到最大的困难是什么?如何解决的;

  • 你的职业规划以及个人目标;未来发展路线及求职定位;

  • 如果你在这次面试中没有被录用,你怎么打算;

  • 评价下自己,评价下自己的技术水平,个人代码量如何;

  • 通过哪些渠道了解的招聘信息,其他同学都投了哪些公司;

  • 业余都有哪些爱好;

  • 你对一份工作更看重哪些方面?平台,技术,氛围,城市,money;

  • 理想中的工作环境是什么;

  • 谈谈你对跳槽的看法;

  • 说说你对行业、技术发展趋势的看法;

  • 实习过程中周围同事/同学有哪些值得学习的地方;

  • 如果你的工作出现失误,给本公司造成经济损失,你认为该怎么办;

  • 你看中公司的什么?或者公司的那些方面最吸引你。


面试题Or面经

https://juejin.im/entry/58ca4c8d128fe1006c7dbc82
https://juejin.im/entry/58aa5f94b123db00671b3c05
https://juejin.im/entry/584df7dfac502e00692f3455
https://juejin.im/entry/589d70210ce46300562ca316
https://juejin.im/entry/578d938079bc44005ff26aec
https://juejin.im/entry/589d70238d6d81006c87d128
https://juejin.im/entry/589d70268d6d81006c87d13f
https://juejin.im/entry/57e2296d7db2a24eb1d03918
https://juejin.im/entry/579052d1128fe100568f2515
https://juejin.im/entry/57466b5e71cfe40068cd862a

https://juejin.im/entry/5838f9f1128fe1006bdaa456
https://juejin.im/entry/57aad0728ac247005f4cfa81
https://juejin.im/entry/570e6f7471cfe4005bf7888d
https://juejin.im/entry/58252337570c350060d63756
https://juejin.im/entry/579ca945c4c971005acf5f4a
https://juejin.im/entry/57a02f58c4c971005ae9022b
https://juejin.im/entry/580ead8dc4c97100589d8dda
https://juejin.im/entry/5796294d8ac247005f359f81


http://www.jianshu.com/p/1d3a2227fb72
http://www.jianshu.com/p/c861f4c35b62
http://www.jianshu.com/p/59e03fc7e6d4
http://www.jianshu.com/p/7c9df5b59a26
http://www.jianshu.com/p/9c0d9f561c8e
http://www.jianshu.com/p/05ddce703d12
http://www.jianshu.com/p/c07bec84d904
http://www.jianshu.com/p/dba49efea11a
http://www.jianshu.com/p/a5f15200caa9
http://www.jianshu.com/p/362c13f79155
http://www.jianshu.com/p/64d4d612aa8b
http://www.jianshu.com/p/c6c3f50b329f
http://www.jianshu.com/p/cd9f97853f54

https://androidquestions.quora.com/Android-interview-questions
https://androidquestions.quora.com/Android-interview-questions-for-2-5-yrs-experienced

http://www.jianshu.com/p/39e8768843d2
http://www.jianshu.com/p/596778ae116b
http://www.jianshu.com/p/7c309b8b8e1b
http://www.jianshu.com/p/bffccf5aa68e
http://www.jianshu.com/p/8aa12128a116
http://www.jianshu.com/p/213cb38240fc
http://www.jianshu.com/p/72d2e3491346
http://www.jianshu.com/p/afc54b7e90cb
http://www.jianshu.com/p/c53ca5eb0853
http://www.jianshu.com/p/706869b3f301
http://www.jianshu.com/p/d0a4ce3a3b65
http://www.jianshu.com/p/c27fb18a7c5d
http://www.jianshu.com/p/c4ce53157e33
http://www.jianshu.com/p/7bf670f3ea4d
http://www.jianshu.com/p/64ec5cca1613
http://www.jianshu.com/p/11a66f6edaac
http://www.jianshu.com/p/0c9c4ffe2f1f
http://www.jianshu.com/p/0747e2d4a2a1
http://www.jianshu.com/p/2a069c61e9c8
http://www.jianshu.com/p/94ec12462e4e
http://www.jianshu.com/p/fce8d5f72485
http://www.jianshu.com/p/fc5384e56713
http://www.jianshu.com/p/344b1b946ee9
http://www.jianshu.com/p/09f012af360d
http://www.jianshu.com/p/97c279db3c34
http://www.jianshu.com/p/b4ef67b30d5e

http://www.cnblogs.com/deman/p/5860976.html

http://blog.csdn.net/johnson67/article/details/8612868

http://www.jianshu.com/p/ccb5e3f3158f

https://juejin.im/entry/58da1620570c350058e9d179

0 0