美文网首页Android成长类目
Android面试问题记录(20190305前后)

Android面试问题记录(20190305前后)

作者: markfrain | 来源:发表于2019-03-06 09:35 被阅读0次

    笔者处于重庆,Android从事4年半,寒冬之际裸辞出来面试。经历过后,以后要更加努力,扎实基础,砥砺前行。

    下面是遇到的面试题,题目可能较为简单,以下以一句话的方式描述答案,可能有所欠缺,望读者指出。

    1.开发中与遇到Activity被回收,其持有的Fragment没有被回收。如何解决这种问题?

    答:这种情况会造成持有的Fragment重叠出现,在savedInstanceState方法中写入标识,在onCreate方法中根据标识判断是否需要重新创建Fragment

    2.多线程的同步问题,以及死锁是如何产生的。

    答:多线程中对于同一个数据加上关键字synchronized,死锁是因为互相持有资源导致,A在等待B释放资源,B也在等待A释放资源。

    3.单例模式使用在哪些方面,单例模式下的同步问题

    答:LayoutInfater,Glide,EventBus。针对要使用单例的对象设置同步锁。

    4.内存溢出和内存泄漏的概念

    答:内存溢出是由于应用 使用内存超过系统分配的最大内存,内存泄漏时由于大量对象没有被使用,但由于被引用无法被系统回收。

    5.如何避免内存泄漏

    答:将强引用的对象转变成软引用和弱引用,创建对应的WeakReference/SoftReference对象,通过该对象get获取引用对象,并在使用的时候判断引用对象是否为空。由于是软引用/弱引用,系统回收机制则会适时回收该对象。

    6.必须使用强引用的时候如何保证不发生内存泄漏

    答:在逻辑中,使用完该引用对象后及时销毁,避免一直持有。

    7.堆(Heap)和栈(Stack)的区别

    答:基本类型的变量以及对象的引用是在栈中(指针在栈中),对象数据和数组在堆中(对象在堆中)。

    8.SurfaceVidew的原理以及与TextureView的区别

    答:SurfaceView是在一个新起的单独线程中绘画更新视图画面。TextureView需要在硬件加速的环境下使用,消耗内存多,延时1-3秒

    9.图片的三级缓存,LurCache在其中的用途

    答:图片下载是按照 网络-缓存-LurCache的顺序进行。读取图片按照LurCache-软引用-内存/SD卡-网络的顺序逐级查找进行显示。

    10.Android点击事件分发流程

    答:DecorView 分发给Activity,Activity分发给ViewGroup,ViewGroup分发给焦点View,焦点View响应该事件,不响应的话按照View层级逐级向上传递指导Activity层

    11.Android的存储方式/数据持久化

    答:SharePreference,文件存储,SQliteDataBase

    12.Sqlite数据库多线程使用如何保证数据同步

    答:SqliteOpenHelper使用单例模式。

    13.隐式启动和显示启动的区别

    答:显示启动直接表明要启动的页面。隐式启动通过Action,Catorgy筛选出可启动的页面。

    14.SharePreference中的apply和commit的区别

    答:commit有返回值而apply无返回值,apply时修改数据原子提交到内存, 而后异步真正提交到硬件磁盘, 而commit是同步的提交到硬件磁盘

    相关文章

      网友评论

        本文标题:Android面试问题记录(20190305前后)

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