美文网首页Android高级进阶
大厂面试问题广?先来看看这些Android高级面试题你都掌握了没

大厂面试问题广?先来看看这些Android高级面试题你都掌握了没

作者: 小小小小怪兽_666 | 来源:发表于2021-01-05 21:53 被阅读0次

    一、性能优化

    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高级面试题你都掌握了没

        本文链接:https://www.haomeiwen.com/subject/hqxgoktx.html