Android面试

Android工程师之Android面试大纲

2017-09-23  本文已影响108人  passiontim

作者:Hensen_

链接:http://blog.csdn.net/qq_30379689/article/details/73698192

本文为作者投稿。


正处于秋招时期,在此,作者要求我帮忙寻求一份互联网公司2018年校招的安卓开发岗位,希望和志同道合的同志一起奋发向上,有朋友有职位推荐可留下联系方式,或者直接联系作者,谢谢。

微信:510402535

邮箱:xyj510402535@qq.com


文章目录如下:

1 Activity面试题

1、Activity是什么

Activity是四大组件之一,它提供一个界面让用户点击和各种滑动操作,这就是Activity


2、Activity四种状态


3、Activity生命周期


4、进程的优先级


5、Activity任务栈


6、Activity启动模式


7、scheme跳转协议

Android中的scheme是一种页面内跳转协议,通过定义自己的scheme协议,可以跳转到app中的各个页面


2 Fragment面试题


1、Fragment为什么被称为第五大组件

Fragment比Activity更节省内存,其切换模式也更加舒适,使用频率不低于四大组件,且有自己的生命周期,而且必须依附于Activity


2、Activity创建Fragment的方式


3、FragmentPageAdapter和FragmentPageStateAdapter的区别


4、Fragment生命周期


5、Fragment的通信


6、Fragment的replace、add、remove方法


3 Service面试题


1、Service是什么

Service是四大组件之一,它可以在后台执行长时间运行操作而没有用户界面的应用组件


2、Service和Thread的区别


3、Service启动方式


4、Service生命周期

  1. startService

  • bindService


  • 4 Broadcast Receiver面试题


    1、Broadcast Receiver是什么

    Broadcast是四大组件之一,是一种广泛运用在应用程序之间传输信息的机制,通过发送Intent来传送我们的数据


    2、Broadcast Receiver的使用场景


    3、Broadcast Receiver的种类


    4、Broadcast Receiver的实现


    5、Broadcast Receiver实现机制


    6、LocalBroadcastManager特点


    5 WebView面试题


    1、WebView安全漏洞


    2、WebView销毁步骤


    3、WebView的jsbridge


    4、WebViewClient的onPageFinished


    5、WebView后台耗电


    6、WebView硬件加速

    Android3.0引入硬件加速,默认会开启,WebView在硬件加速的情况下滑动更加平滑,性能更加好,但是会出现白块或者页面闪烁的副作用,建议WebView暂时关闭硬件加速


    7、WebView内存泄漏

    由于WebView是依附于Activity的,Activity的生命周期和WebView启动的线程的生命周期是不一致的,这会导致WebView一直持有对这个Activity的引用而无法释放,解决方案如下


    6 Binder面试题


    1、Linux内核的基本知识


    2、为什么使用Binder


    3、Binder通信模型


    4、AIDL


    7 Handler面试题


    1、Handler是什么

    Handler通过发送和处理Message和Runnable对象来关联相对应线程的MessageQueue


    2、Handler使用方法


    3、Handler工作原理


    4、Handler引起的内存泄漏


    8 AsyncTask面试题


    1、AsyncTask是什么

    它本质上就是一个封装了线程池和Handler的异步框架


    2、AsyncTask使用方法


    3、AsyncTask工作原理


    4、AsyncTask引起的内存泄漏


    5、AsyncTask生命周期

    在Activity销毁之前,取消AsyncTask的运行,以此来保证程序的稳定


    6、AsyncTask结果丢失

    由于屏幕旋转、Activity在内存紧张时被回收等情况下,Activity会被重新创建,此时,旧的AsyncTask持有旧的Activity引用,这个时候会导致AsyncTask的onPostExecute()对UI更新无效


    7、AsyncTask并行or串行


    9 HandlerThread面试题


    1、HandlerThread产生背景

    当系统有多个耗时任务需要执行时,每个任务都会开启一个新线程去执行耗时任务,这样会导致系统多次创建和销毁线程,从而影响性能。为了解决这一问题,Google提供了HandlerThread,HandlerThread是在线程中创建一个Looper循环器,让Looper轮询消息队列,当有耗时任务进入队列时,则不需要开启新线程,在原有的线程中执行耗时任务即可,否则线程阻塞


    2、HanlderThread的特点、

    10  IntentService面试题

    1、IntentService是什么

    IntentService是继承自Service并处理异步请求的一个类,其内部采用HandlerThread和Handler实现的,在IntentService内有一个工作线程来处理耗时操作,其优先级比普通Service高。当任务完成后,IntentService会自动停止,而不需要手动调用stopSelf()。另外,可以多次启动IntentService,每个耗时操作都会以工作队列的方式在IntentService中onHandlerIntent()回调方法中执行,并且每次只会执行一个工作线程


    2、IntentService使用方法


    11 视图工作机制面试题



    12 ListView面试题


    1、ListView是什么

    ListView是能将一个数据集合以动态滚动的方式展示到用户界面上的View


    2、ListView的RecycleBin机制



    3、ListView的优化


    13 Android项目构建面试题


    1、android构建流程

    2、jenkins持续集成构建


    3、Git常用命令


    4、git工作流


    5、proguard是什么

    ProGuard工具是用于压缩、优化和混淆我们的代码,其主作用是移除或混淆代码中无用类、字段、方法和属性


    6、proguard技术功能


    7、proguard工作原理

    将无用的字段或方法存入到EntryPoint中,将非EntryPoint的字段和方法进行替换


    8、为什么要混淆

    由于Java是一门跨平台的解释性语言,其源代码被编译成class字节码来适应其他平台,而class文件包含了Java源代码信息,很容易被反编译


    14 ANR面试题

    1、什么是ANR

    Application Not Responding,页面无响应的对话框


    2、发生ANR的条件

    应用程序的响应性是由ActivityManager和WindowManager系统服务监视的,当ANR发生条件满足时,就会弹出ANR的对话框


    3、造成ANR的主要原因

    主线程被IO操作阻塞


    4、如何解决ANR


    15 OOM面试题


    1、什么是OOM

    OOM指Out of memory(内存溢出),当前占用内存加上我们申请的内存资源超过了Dalvik虚拟机的最大内存限制就会抛出Out of memory异常


    2、OOM相关概念


    3、解决OOM

    Bitmap相关

    其他相关


    16 Bitmap面试题


    1、recycle


    2、LruCache原理

    LruCache是个泛型类,内部采用LinkedHashMap来实现缓存机制,它提供get方法和put方法来获取缓存和添加缓存,其最重要的方法trimToSize是用来移除最少使用的缓存和使用最久的缓存,并添加最新的缓存到队列中


    3、计算inSampleSize



    4、缩略图



    5、保存Bitmap



    6、保存到SD卡


    7、三级缓存

    17 UI卡顿面试题


    1、UI卡顿原理

    View的绘制帧数保持60fps是最佳,这要求每帧的绘制时间不超过16ms(1000/60),如果安卓不能在16ms内完成界面的渲染,那么就会出现卡顿现象


    2、UI卡顿的原因分析


    3、UI卡顿的优化


    18 内存泄漏面试题


    1、Java内存泄漏引起的主要原因

    长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄漏


    2、Java内存分配策略


    3、Android解决内存泄漏的例子


    19 内存管理面试题


    1、Android内存管理机制


    2、内存管理机制的特点


    3、内存优化方法

    20 冷启动和热启动面试题


    1、什么是冷启动和热启动


    2、冷启动和热启动的区别


    3、冷启动时间的计算

    这个时间值从应用启动(创建进程)开始计算,到完成视图的第一次绘制为止


    4、冷启动流程

    总结:Application构造方法->attachBaseContext()->onCreate()->Activity构造方法->onCreate()->配置主题中背景等属性->onStart()->onResume()->测量布局绘制显示在界面上


    5、冷启动优化


    21 其他优化面试题

    1、Android不用静态变量存储数据


    2、SharePreference安全问题


    3、内存对象序列化


    4、避免在UI线程中做繁重的操作


    22 架构模式面试题



    23 插件化面试题


    1、插件化解决的问题


    2、类加载器(Java中字节码添加到虚拟机中)


    24 热更新面试题

    1、热更新主要流程


    2、热更新主流框架


    3、热更新的原理


    25 进程保活面试题


    1、进程的优先级


    2、Android进程回收策略


    3、Android保活方案


    26 Lint面试题


    1、什么是Android Lint

    Android Lint是一个静态代码分析工具,它能够对你的Android项目中潜在的Bug、可优化的代码、安全性、性能、可用性、可访问性、国际化等进行检查


    2、Lint工作流程


    3、配置Lint


    27 Kotlin面试题


    1、什么是Kotlin


    2、Kotlin环境搭建

    如果你有想学习的文章直接留言,我会整理征稿。如果你有好的文章想和大家分享欢迎投稿,直接向我投递文章链接即可。


    欢迎长按下图->识别图中二维码或者扫一扫关注我的公众号:

    上一篇下一篇

    猜你喜欢

    热点阅读