前言:
此时我们对“android内存管理机制面试”可能比较珍视,姐妹们都想要剖析一些“android内存管理机制面试”的相关知识。那么小编同时在网摘上汇集了一些对于“android内存管理机制面试””的相关文章,希望咱们能喜欢,我们一起来了解一下吧!一、性能优化
1、做过哪些性能优化?是怎么评测和具体优化的?
2、为什么WebView加载会慢呢?
3、如何优化自定义View
4、FC(Force Close)什么时候会出现?
5、Java多线程引发的性能问题,怎么解决?
二、Android Framework相关
1、Android系统架构
2、View的事件分发机制?滑动冲突怎么解决?
3、View的绘制流程?
4、跨进程通信
5、Android系统启动流程是什么?(提示:init进程 -> Zygote进程 –> SystemServer进程 –> 各种系统服务 –> 应用进程)
6、启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么区别?
7、AMS家族重要术语解释
8、App启动流程(Activity的冷启动流程)
9、ActivityThread工作原理
10、说下四大组件的启动过程,四大组件的启动与销毁的方式
11、AMS是如何管理Activity的?
12、理解Window和WindowManager
13、WMS是如何管理Window的?
14、大体说清一个应用程序安装到手机上时发生了什么?
15、Android的打包流程?(即描述清点击 Android Studio 的 build 按钮后发生了什么?)apk里有哪些东西?签名算法的原理?
16、说下安卓虚拟机和java虚拟机的原理和不同点?(JVM、Davilk、ART三者的原理和区别)
17、安卓采用自动垃圾回收机制,请说下安卓内存管理的原理?
18、Android中App是如何沙箱化的,为何要这么做?
19、一个图片在app中调用R.id后是如何找到的?
20、JNI
21、请介绍一下NDK?
三、Android优秀三方库源码
1、你项目中用到哪些开源库?说说其实现原理?
2、Android中软引用与弱引用的应用场景
四、热修复、插件化、模块化、组件化、Gradle
1、热修复和插件化
热修补技术是怎样实现的,和插件化有什么区别?
为什么选用插件化?
2、模块化和组件化
模块化的好处组件化原理,组件化中路由(ARouter)的实现Android 组件化的原理,还有一些组件化平时使用的问题。项目组件化的理解多模块开发的时候不同的负责人可能会引入重复资源,相同的字符串,相同的icon等但是文件名并不一样,怎样去重?
3、gradle
gradle熟悉么,自动打包知道么?如何加快 Gradle 的编译速度?Gradle的Flavor能否配置sourceset?Gradle生命周期五、设计模式与架构设计
1、设计模式
谈谈你对Android设计模式的理解项目中常用的设计模式手写生产者/消费者模式
2、架构设计
MVC MVP MVVM原理和区别?MVC的情况下怎么把Activity的C和V抽离?MVP 架构中 Presenter 定义为接口有什么好处;MVP如何管理Presenter的生命周期,何时取消网络请求?aop思想Fragment如果在Adapter中使用应该如何解耦?项目框架里有没有Base类,BaseActivity和BaseFragment这种封装导致的问题,以及解决方法?设计一个音乐播放界面,你会如何实现,用到那些类,如何设计,如何定义接口,如何与后台交互,如何缓存与下载,如何优化(15分钟时间)从0设计一款App整体架构,如何去做?说一款你认为当前比较火的应用并设计(比如:直播APP,P2P金融,小视频等)实现一个库,完成日志的实时上报和延迟上报两种功能,该从哪些方面考虑?其它高频面试题
1、如何保证一个后台服务不被杀死?(相同问题:如何保证service在后台不被kill?)比较省电的方式是什么?
2、Android动画框架实现原理。
3、Activity-Window-View三者的差别?
4、低版本SDK如何实现高版本api?
5、说说你对Context的理解?
6、Android的生命周期和启动模式
7、ListView和RecyclerView系列
8、如何实现一个推送,消息推送原理?推送到达率的问题?
9、动态权限系列
10、自定义View系列
11、对谷歌新推出的Room架构
12、没有给权限如何定位,特定机型定位失败,如何解决?
13、Debug跟Release的APK的区别?
14、android文件存储,各版本存储位置的权限控制的演进,外部存储,内部存储
15、有什么提高编译速度的方法?
16、Scroller原理
17、Hybrid系列
18、如果在当前线程内使用Handler postdelayed 两个消息,一个延迟5s,一个延迟10s,然后使当前线程sleep 5秒,以上消息的执行时间会如何变化?
19、Android中进程内存的分配,能不能自己分配定额内存?
20、下拉状态栏是不是影响activity的生命周期,如果在onStop的时候做了网络请求,onResume的时候怎么恢复
21、Android长连接,怎么处理心跳机制
22、CrashHandler实现原理?
23、SurfaceView和View的最本质的区别?
24、Android程序运行时权限与文件系统权限
25、曲面屏的适配
26、TextView调用setText方法的内部执行流程
27、怎么控制另外一个进程的View显示(RemoteView)?
28、如何实现右滑finish activity?
29、如何在整个系统层面实现界面的圆角效果。(即所有的APP打开界面都会是圆角)
30、非UI线程可以更新UI吗?
31、如何解决git冲突?
32、单元测试有没有做过,说说熟悉的单元测试框架?
33、实现一个Json解析器(可以通过正则提高速度)。
34、Jenkins持续集成。
35、为什么 Google 会推出Fragment ,有什么好处和用途? 直接用 View 代替不行么?
36、工作中有没有用过或者写过什么工具?脚本,插件等等;比如:多人协同开发可能对一些相同资源都各自放了一份,有没有方法自动检测这种重复之类的。
最后
不用多说,相信大家都有一个共识:无论什么行业,最牛逼的人肯定是站在金字塔端的人。所以,想做一个牛逼的程序员,那么就要让自己站的更高,成为技术大牛并不是一朝一夕的事情,需要时间的沉淀和技术的积累。
关于这一点,在我当时确立好Android方向时,就已经开始梳理自己的成长路线了,包括技术要怎么系统地去学习,都列得非常详细。
这里最后分享耗时一年多整理的一系列Android学习资源:Android源码解析、Android第三方库源码笔记、Android进阶架构师七大专题学习、历年BAT面试题解析包、Android大佬学习笔记等等。
这些内容均免费分享给大家,需要完整版的朋友,直接转发+点赞+私信回复【资料】一键领取!!!
标签: #android内存管理机制面试