Android面试题集

Android面试题集(来自网络整理)javascript

1、几点建议java

  1. 简历要如实写,相关的知识点必定要烂熟于心。
  2. 基础扎实,android和java相关的知识树网上有不少资料,看过但让你讲出来未必能说的好。
  3. 提早总结,你还擅长什么其余技术?这种开放问题要看知识面了。
  4. 学会提问,你有什么问题要问我吗?这种礼貌性问题也是一个了解对方的好机会。
  5. 良好的内心素质,不管遇到什么状况,面试官迟到、面试官态度冰冷说话不客气、质疑你的回答等等各类问题都不要慌也不要排斥,必定要沉住气,耐心积极的思考并回答对方的提问。
  6. 推荐几本书,也是好几回面试后发现里面涵盖了大部分答案。《Android开发艺术探索》《Android源码设计模式-解析与实战》《Android进阶之光》《深刻理解Java虚拟机》,《Android音视频开发》多看几遍。

2、HashMap相关android

包含知识点:散列表,散列冲突,散列均衡,散列扩充,哈希算法,哈希算法怎么应用在散列表上,负载因子;jdk1.8后HashMap引入了红黑树git

  1. HashMap源码,SpareArray原理
  2. HashMap实现原理,ConcurrentHashMap的实现原理,原子类
  3. jdk1.5?SparseArray和ArrayMap各自的数据结构,前者的查找是怎么实现的,与HashMap的区别
  4. HashMap是如何解决Hash冲突的?
  5. HashMap和HashTable区别?
  6. Android对HashMap作了优化后推出的新的容器类是什么?好比使用SparseArray和ArrayMap
  7. HashSet和HashMap怎么判断集合元素重复
  8. LruCache底层实现原理
  9. ArrayList,LinkedList源码要看

3、哈希、加密相关github

  1. MD5是加密方法么?Base64呢

4、架构、框架web

  1. MVC,MVP,MVVM分别是什么?
  2. 项目组件化的理解
  3. app的架构是怎么样的,而且为何这样,有什么优缺点?
  4. MVP、MVVM、MVC解释和实践
  5. Jetpack
  6. app的架构是怎么样的,而且为何这样,有什么优缺点?
  7. MVP、MVVM、MVC解释和实践
  8. 若是用了一些解耦的策略,怎么管理生命周期的?
  9. 有用什么模式么,逻辑什么的都在Activity层?怎么分离的
  10. MVC,MVP,MVVM分别是什么?

5、UI面试

  1. 讲解Activity和Window,View的关系,以及DecorView结构
  2. 计算一个view的嵌套层级
  3. 封装view的时候怎么知道view的大小(ps:多是宽高?)
  4. 自定义View如何考虑机型适配
  5. view渲染
  6. 自定义View里面OnMeasure参数的意义
  7. 自定义View,ViewGroup注意哪些回调?
  8. View绘制熟悉么,介绍下,能说下实现原理么
  9. Canvas的底层机制,绘制框架,硬件加速是什么原理,canvas lock的缓冲区是怎么回事
  10. surfaceview, suface,surfacetexure等相关的,以及底层原理
  11. View 事件传递机制
  12. down、move、up事件的传递
  13. 事件的传递方式,View,ViewGroup
  14. ACTION_CANCEL何时触发,触摸button而后滑动到外部抬起会触发点击事件吗,再滑动回去抬起会么
  15. 怎么处理嵌套View的滑动冲突问题
  16. Scroller有什么方法,怎么使用的。
  17. TextView调用setText方法的内部执行流程。
  18. RecyclerView 和Listview的区别,性能
  19. CoordinatorLayout、CollapsingToolbarLayout原理以及使用
  20. 介绍下SurfView

6、图片算法

  1. 图片加载库相关,bitmap如何处理大图,如一张30M的大图,如何预防OOM
  2. listview图片加载错乱的原理和解决方案
  3. 图片加载原理
  4. 基于自身工做经验和计算机相关知识,给出 移动端地图局部加载 瓦片大小的像素大小估值
  5. 图片加载三级缓存,有一个功能,作一个能放大缩小的图片查看器,加载一张巨大的图片,怎么作
  6. 图片加载框架优劣比较,以及以前项目选用加载框架时候的考虑
  7. glide缓存策略?同一个图片跟size有关么?

7、网络数据库

  1. 网络请求缓存处理,okhttp如何处理网络缓存
  2. https相关,如何验证证书的合法性,https中哪里用到了对称加密,哪里用来非对称加密,对加密算法(如RSA)等是否有了解
  3. 视频加密传输
  4. https请求慢的解决办法,DNS,携带数据,直接访问IP
  5. TCP与UDP区别与应用(三次握手和四次挥手)涉及到部分细节(如client如何肯定本身发送的消息被server收到) HTTP相关 提到过Websocket 问了WebSocket相关以及与socket的区别
  6. 网络请求相关,主要是网络请求优化。网络请求的时候遇到的问题
  7. 网络请求的开源框架:OKHttp介绍,写过拦截器么
  8. 数据层有统一的管理么,数据缓存是怎么作的,http请求等有提供统一管理么?
  9. HttpClient和HttpConnection的区别
  10. Https是怎么回事?
  11. Android长链接,怎么处理心跳机制。

8、Android基础canvas

8.1 启动流程

  1. 答题说清一个应用程序安装到手机时发生了什么
  2. App是如何沙箱化,为何要这么作
  3. 权限管理系统(底层的权限是如何进行grant的)
  4. App启动流程,从点击桌面开始
  5. 系统启动流程Zygote进程 ->SystemServer进程 ->各类系统服务 ->应用进程
  6. Manifests原理,APP启动流程,APK打包流程
  7. FW(Framework) 层熟悉么,源码看过么
  8. 介绍下app架构和通讯

8.2 四大组件

  1. 画出Android的大致架构图
  2. BroadcastReceiver,LocalBroadcastReceiver区别
  3. 广播(动态注册和静态注册的区别,有序广播和标准广播)
  4. 怎么启动service,service和activity怎么进行数据交互
  5. Service基础概念,生命周期,通讯。四大组件是基础,常见问题都要掌握
  6. service用过么,基本调用方法
  7. IntentService生命周期是怎样的,使用场合等
  8. activity栈
  9. intent-filter
  10. 下拉状态栏是否是影响activity的生命周期,若是在onStop的时候作了网络请求,onResume的时候怎么恢复
  11. Activity的四种启动模式以及相关概念,Activity栈,常见情境下的生命周期分析,异常关闭页面以后的恢复
  12. Activity的生命周期,finish调用后其余生命周期还会走么
  13. ActivityA跳转ActivityB而后B按back返回A,各自的生命周期顺序,A与B均不透明。
  14. Activity的生命周期有哪些,知道onRestart么,介绍下
  15. Activity的启动模式有哪些?栈里A-B-C,先想直接到A,BC都清理掉,有几种方法能够作到?这几种方法产生的结果是有几个A的实例?
  16. 都熟悉哪些命令?知道怎么用命令启动一个Activity么?
  17. 非UI线程能够更新UI吗?
  18. 有什么工具能够看到Activity栈信息么?多个栈的话,有方法分别获得各个栈的Activity列表么

8.3 控件

  1. 想改变listview的高度,怎么作
  2. RecyclerView和ListView有什么区别?局部刷新?前者使用时多重type场景下怎么避免滑动卡顿。懒加载怎么实现,怎么优化滑动体验。
  3. SurfaceView和View的最本质的区别?
  4. 如何实现右滑finish activity?
  5. 如何在整个系统层面实现界面的圆角效果。(即全部的APP打开界面都会是圆角)
  6. LinearLyout、FrameLayout、RelativeLayout性能对比,为何

8.4 存储

  1. android文件存储,各版本存储位置的权限控制的演进,外部存储,内部存储
  2. Android中的存储类型
  3. android文件存储,各版本存储位置的权限控制的演进,外部存储,内部存储

8.5 Fagment及其余

  1. savedInstanceState知道么,干什么用的,何时有值,何时为空,平时是怎么用的
  2. Android中main方法入口在哪里
  3. 为何 Google 会推出Fragment ,有什么好处和用途? 直接用 View 代替不行么?
  4. Fragment的replace和end的区别?
  5. SharedPrefrences的apply和commit有什么区别?
  6. Bundle机制
  7. 动态加载
  8. android api层的源码熟悉哪些?解释一下
  9. 推送消息有富文本么
  10. 是否熟悉Android jni开发,jni如何调用java层代码
  11. webwiew了解?怎么实现和javascript的通讯?相互双方的通讯。@JavascriptInterface在?版本有bug,除了这个还有其余调用android方法的方案吗?
  12. ReactiveNative了解多少

8.6 gradle、打包、编译

  1. 描述点击Android Studio的build按钮后发生了什么
  2. gradle熟悉么,自动打包知道么
  3. gradle打包流程熟悉么

9、进程、线程、协程

  1. synchronize用法
  2. volatile用法
  3. 进程保活
  4. TreadLocal原理
  5. SP是进程同步的吗?有什么方法作到同步
  6. 线程间操做List
  7. 进程和Application的生命周期
  8. handler机制(须要关注细节:如何线程如何创建和退出消息循环等)
  9. 多线程(关于AsyncTask缺陷引起的思考)
  10. 进程间通讯的方式
  11. 多线程断点续传原理
  12. Android系统为何会设计ContentProvider,进程共享和线程安全问题
  13. 线程挂起,休眠,释放资源相关,唤醒,线程同步,数据传递,问了不少线程的问题,问了20分钟大概
  14. static synchronized 方法的多线程访问和做用,同一个类里面两个synchronized方法,两个线程同时访问的问题
  15. handler发消息给子线程,looper怎么启动
  16. BC三个线程,C线程要等A和B线程的结果,AB并行,问,跟什么数据结构相似....,不是问生产者消费者或者信号量什么的,>
  17. 线程同步的问题,经常使用的线程同步
  18. AsyncTask内部实现,关注默认线程池是一个串行的线程池;
  19. 讲解一下HandlerThread
  20. 同步的问题,常见的那些,锁机制,sychronized关键字,concurrent包下的数据结构,atom包下的数据结构
  21. 线程之间怎么通讯
  22. 对应用里的线程有作统一管理么?
  23. 进程间通讯方式?Binder的构成有几部分?
  24. Synchronize关键字后面跟类或者对象有什么不一样。
  25. ThreadLocal是什么?Looper中的消息死循环为何没有ANR?
  26. Runnable与Callable、Future、FutureTask的区别,AsyncTask用到哪一个?- AsyncTask是顺序执行么,for循环中执行200次new AsyncTask并execute,会有异常吗
  27. 若是在当前线程内使用Handler postdelayed 两个消息,一个延迟5s,一个延迟10s,而后使当前线程sleep 5秒,以上消息的执行时间会如何变化?
  28. Android中进程内存的分配,能不能本身分配定额内存?
  29. 下拉状态栏是否是影响activity的生命周期,若是在onStop的时候作了网络请求,onResume的时候怎么恢复
  30. CrashHandler实现原理?
  31. 怎么控制另一个进程的View显示(RemoteView)?

10、性能优化

  1. 统计启动时长,标准
  2. 如何保持应用的稳定性
  3. 性能优化,如何保证应用启动不卡顿
  4. 怎么去除重复代码
  5. Android相关优化(如内存优化、网络优化、布局优化、电量优化、业务优化)
  6. 界面卡顿的缘由以及解决办法
  7. 内存泄漏如何派出,MAT分析方法以及原理,各类泄漏的缘由是什么好比
  8. Handler为何会泄漏
  9. apk包大小有限制么?怎么减小包大小
  10. ANR是怎么回事,怎么查?Service会引发ANR么?
  11. anr是什么缘由产生的,怎么排查
  12. 界面卡顿怎么排查和优化
  13. 界面上的话,有什么优化措施么?好比列表展现之类,平时遇到过内存问题吗?怎么优化
  14. 有什么提升编译速度的方法?
  15. 上线后的app性能分析检测有作么
  16. 内存优化,OOM的缘由和排查方法

11、JVM

  1. 谈谈classLoader
  2. 类加载器
  3. GC回收策略
  4. 对Dalvik、ART虚拟机有基本的了解
  5. DexClassLoader和PathClassLoader的区别
  6. 直接引用和符号引用相关
  7. GC回收机制熟悉么,分代算法知道么
  8. java的类加载原理
  9. gc相关的算法
  10. JVM的引用树,什么变量能做为GCRoot?GC垃圾回收的几种方法

12、Java

  1. 内部类和静态内部类和匿名内部类,以及项目中的应用
  2. 泛型是什么以及在项目中的应用
  3. JNI和NDK熟悉么?Java和C方法以前的相互调用怎么作?
  4. java里带$的函数见过么,是什么意思

十3、数据库

  1. 数据库数据迁移问题
  2. 微信的聊天数据再本地都是加密处理的(防止root了被破解),设计一个相似的本地数据存储系统
  3. SQLite的数据库升级用过么

十4、项目相关

  1. 问项目,根据项目引伸:主要有Asynctask和线程池,多进程以及IPC,GC相关(四种引用,怎么判断哪些内存该GC,GC算法),why,when,how 这些都是要从项目里面举出来例子

十5、适配

  1. dp是什么,sp呢,有什么区别
  2. Android8.0有哪些新特性
  3. 曲面屏的适配

十6、数据结构+算法

  1. 快速排序
  2. JSON字符串解析算法及优化
  3. 求一个字符串的最长回文
  4. 给定一个数,以及有序数组,求出来数组里面两个数的和等于给定数的下标
  5. 二叉树中序遍历,深度优先广度优先,不用递归算法的方法
  6. 求二叉树第k层节点个数;
  7. 实现一个栈push,pop,getMaxElementValue,时间复杂度要求0(1)
  8. 有序数组0(n)时间复杂度求一组和为sum的数组下标
  9. 算法熟悉么?给了一个二叉排序树,出了个给定结点找到它的下一个元素(只的是大小顺序的下一个)的算法题
  10. 三个算法题选一个并写出测试用例:打印n-m之间全部的素数;计算n-m之间1出现的次数;指定数字序列的排序;
  11. 微信跳一跳外挂怎么实现,检测怎么作的?
  12. 一张纯色背景下怎么有效检测各个矩形?

十7、开源库

  1. EventBus实现原理

十8、衍生话题

  1. Android相关你最擅长哪一块
  2. 本身负责过哪些模块,跟同事相比本身的优点是什么
  3. 遇到过什么印象深入的问题,怎么解决的
  4. 项目团队多少人,怎么分配工做
  5. 好比:多人协同开发可能对一些相同资源都各自放了一份,有没有办法自动检测这些重复之类
  6. 为何找工做,本身的优点是什么
  7. 平时用过什么开发工具,分析工具
  8. 有博客和github,主要是写的什么?有哪些关注
  9. 任意提问环节:其实能够问以前面试中遇到的问题:好比,多模块开发的时候不一样的负责人可能会引入重复资源,相同的字符串,相同的icon等可是文件名并不同,怎样去重?
  10. 工做中有没有用过或者写过什么工具?脚本,插件等等
  11. 除了平常开发,其余有作过什么工做?好比持续化集成,自动化测试等等
  12. 开放问题:若是提升启动速度,设计一个延迟加载框架或者sdk的方法和注意的问题。
  13. 分享下项目中遇到的问题

十9、动画

  1. Android中的动画有哪些

二10、JNI

  1. 写过native的底层代码
  2. 对接的so算法了解么,有接触过相关的库么
  3. jni的算法提供都是主线程的?是否是想问服务类的啊

二11、设计模式

  1. 平时用过哪些设计模式
  2. Android中经常使用的设计模式,说三个比较高级的?
  3. 单例的DCL方式下,那个单例的私有变量要不要加volatile关键字,这个关键字有什么用

二12、热修复

  1. 热修复相关的原理,框架熟悉么

二十3、权限

  1. 没有给权限如何定位,特定机型定位失败,如何解决?
  2. Android程序运行时权限与文件系统权限

二十4、Json

  1. 实现一个Json解析器(能够经过正则提升速度)。

二十5、版本控制工具

  1. 如何解决git冲突?

二十6、杂

  1. Jenkins持续集成。

二十7、gradle和打包

  1. Debug跟Release的APK的区别?
相关文章
相关标签/搜索