一年经验Android面试记录

记不太清了,一面二面合在一起写。
1.事件分发机制。
这个调试过sdk的源码,断点调试大法好。从activity的dispatchTouchEvent->phoneWindow->frameLayout->viewGroup->view
中间提了下,viewGroup dispatchTouchevent的action_down和firstTouchTarget那里的逻辑,顺便解释了为什么第一次拦截后,viewGroup后续不再调用OnIntercept直接拦截的原因。以及disallowIntercept标记的作用(内部拦截方式),因为这写代码都是在一块的,调试过的同学应该都了解的(结合着开发艺术探索看,效果更佳)。
然后还有个点就是viewGroup的dispatchTransformeTouchevent到view的dispatchTouchEvent,那里有touchListener优先于performClick(onClick事件)
源码调试时,如果出现代码不对应的情况,尝试下genymotion版本和sdk版本对应,比如模拟器7.1,sdk25

2.设计模式

  • 单例模式
    手撸单例模式的双重检测方法
    谈了下volite的作用(内存可见,禁止指令重排序)
    谈了下静态内部类实现单例模式
  • 责任链模式
    接着上面事件分发机制是基于什么设计模式,这个了解过这是责任链模式。
  • 模板方法模式
    基于android activity生命周期 oncreat onresume那些方法基于什么设计模式,最开始没get到点,稍微提示了下,答这是模板方法。

3.android内存分析,描述分析的过程。如果怀疑一个activity存在内存泄漏,应该怎么做。这个平时在用,所以也比较简单。

4.问了是否看过okhttp源码,没看过(公司的技术太老了,okhttp retrofit就没在项目上用过)。看过volley源码的,大概讲了下缓存队列、方式。然后被追问了下队列的数据结构,priorityBlockingQueue这个倒是知道,然后顺便结合线程池通过Executors静态工程方式建造那几张常用的线程池,它们的主要区别也是工作队列。但是后面二面的时候被追问blockingQueue接口的几种get set方法的异同,这个没注意过,没答上来 GG。

5.android打包过程,如何把资源文件和java代码打成apk的。这个没具体了解过(平时项目中都是用打包服务器,确实没怎么接触过),知道class文件到dex文件,之前的重心放在了jvm 和 dalvik ART的异同上了。这个也回答的不好。
参考apk打包流程

6.android A->B->A的生命周期,如果页面被销毁,数据该怎么保存。这个比较基础,重点在onpause不能做耗时操作嘛。被销毁调用onSaveInstanceState存在bundle里面,在oncreate或者onrestore的时候从bundle里面取。接着问了一下如果oncreat第一次正常启动的时候也会调用也去取吗?在里面加一个判断,有bundle才去取。

7.问了下retrofit的原理,结合rxjava的使用,databindng的使用,mvp mvc mvvm的异同。虽然平时项目的技术很老,但是还好自己空余时间下去写demo用过这些技术,基本都答上来了。

8.和js交互的方式。jsInterface和jsBridage介绍了下。然后问了解过jsBridage是怎么实现的吗? 大概看过两端定义协议,然后js回调json数据给客户端。但是没有自己去实现一次jsBridage,所以还是有些模糊。

9.android模块化 aar相关的东西。我自己没做过aar开发,答知道和jar的区别,里面多了资源文件。然后追问aar的资源文件和主项目的资源文件起冲突了怎么办,比如string.xml冲突和manifest冲突。这个没做过,没答上来,GG

10.图片相关。问用过哪些图片框架,答gilde。然后接着问看过源码吗。答没看过,但是ImageLoader写过。然后介绍了下三级缓存,lruCache的linkedHashMap,弱引用保存图片。

11.线程间通信。答handler和接口回调。说了下原理,这个因为之前都写过博客,所以还是比较容易。

12.arrayList删除元素 a,b,b,c删除完b。这个当时没答好,需要用iterator去删除。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,004评论 25 708
  • 前几天整理了Java面试题集合,今天再来整理下Android相关的面试题集合.如果你希望能得到最新的消息,可以关注...
    Boyko阅读 3,656评论 8 135
  • 周五大盘小幅顺着周四量能顺势高开后开始缩量震荡,早间最高指数为3003点,但苦于无量能支撑,早盘大盘一度围绕290...
    阿凯古阅读 341评论 0 2
  • 他两岁了都还离不开药品和医生,母亲无数个清晨天不亮就背着他出门去找镇里的老医生。可是他一直不是这里痛就是那里不舒...
    太远_4阅读 436评论 0 0
  • 青春已老,逝者已逝。 愿逝者安,亦如尘土般,宁静与安详。青春可比先人,是人之道的先行之者。 缅怀青春,揣着...
    落下万般尘阅读 274评论 1 1