开头
在Android开发当中,相信大家对第三方库的重要性是无需多说的,尤其是三方库源码更是重中之重,而EventBus源码就属于其中的一个重点。
EventBus是安卓(Java中也可以用)开发中非常流行的一个第三方库,是一种发布/订阅事件的总线.
想必每个入了门的Android开发者都多少对EventBus有过了解,EventBus是一个Android事件发布/订阅框架,通过解耦发布者和订阅者简化 Android 事件传递。EventBus使用简单,并将事件发布和订阅充分解耦,从而使代码更简洁。一直以来很受开发者的欢迎,截止到目前EventBus的安装量已经超过一亿次。足以看出EventBus有多么的优秀。
那么我们如何才更更好地学习和使用EventBus呢? 其实网上已经有不少优秀的EventBus的源码分析文章,但是并不全面,不够完整,今天有幸给大家分享谷歌大神熬夜整理的三方库源码笔记 EventBus源码详解
面试
一面
面试官:先介绍一下自己吧,做过哪些项目,掌握哪些技能
我内心:(简历都有写的,你自己不会看么?只好照着简历里写的说了一遍)
熟悉Android Framework,组件化开发及MVC/MVP/MVVM程序设计框架;熟悉UI/ NDK开发,掌握TCP/IP,HTTP网络通信机制,有OkHttp使用包装经验,熟悉安卓图形处理OpenGL ES机制,有Camera视频开发经验。熟悉国密加密解密算法,有通过OMA访问手机SE,利用SIM卡进行加密解密的经验;有在支持NFC手机上进行读取NFC标签及支付的经验。有前端及后台服务器的开发经验,熟悉开发框架React,Vue,Spring Boot及Mysql数据库。熟练掌握的语言有C++11, Java, Python, Kotlin等,能熟练使用Git,VS Code, Android Studio等工具和开发环境。
面试官:懂的还挺多(这时才低头看我简历)工作经历也挺多的,那说说做的最满意的项目是哪个
我内心:(白眼)
描述了我北京一家公司的社交APP,介绍功能,实现,用到的技术,设计思想等等。
面试官:说一下项目中的性能优化怎么做的
我:首先是启动优化,MultiDex 分包机制,dex分包预加载等等。稳定性–内存优化,流畅–卡顿优化等等,反正我整理的这份一线互联网大厂高频面试知识点资料里关于性能优化的全给他讲了一遍。(文末会无偿分享给大家)
面试官:(有点懵13了,没想到我能讲这么多)内存泄漏,还有哪些检测工具?LeakCanary 的原理知道吧?
答:利用Application#registerActivityLifecycleCallbacks Activity生命周期回调onActivityDestroyed方法通过调用RefWatcher#wather方法来检测对象是否回收,通过removeWeaklyReachableReferences—>gcTrigger.runGc—>removeWeaklyReachableReferences—>heapdumpListener.analyze 三步二次检测来确定内存泄露,最终dump 内存信息来分析到最终显示分析出的泄露信息。
面试官:有点东西啊,来说一说,在5.0以上和4.0加载dex时的方式有什么区别?
不知道
面试官:说说什么是同步屏障,在Android绘制的过程中,掉帧是如何处理的
Android绘制原理,同步屏障,然后发送VSync脉冲信号
面试官:OOM、ANR 异常怎么处理
EZ,我的博客里都有解析的,大家感兴趣可以去我的主页看一下,就不多说了。
面试官:okHttp的原理了解吗?如何对它封装的
答:重试拦截器、桥接拦截器、缓存拦截器、连接拦截器、请求服务拦截器(封装)。每一个拦截器负责的工作不一样,就好像工厂流水线,最终经过这五道工序,就完成了最终的产品。
GreenDao的实现原理
忘记了
Retrofifit实现原理
只记得,Retrofifit 是一个RESTful 的HTTP 网络请求框架的封装。
整个面试大概是有一个半小时,他就简单问几句,中间喝了几次水,期间没有人给我递杯水问到后面我是有点不耐烦了的。
感想
几天后收到了二面的通知,直接拒绝了。一面给我的感觉非常不好。让我讨厌的面试官有以下几点
1、打断别人说话
在回答他提出的问题,我说着说着,他就打断:这个不是这样的,应该是这样的。或者没等我把这个答案说完,就直接顺出了下一个问题。
2、没礼貌
摆着一副架子,好像是我求着要他给我通过面试一样,一个半小时的面试,自己都要喝水,我一直在讲,也没有给我递杯水。面试中途还接了几次电话,把我晾在那里。
3、质疑别人的职业规划,对我的职业规划指手画脚。觉得自己的才是对的
问我为什么离职,我说出了自己的原因,产品方向和公司发展以及个人的一些进阶。然后他竟然怼过来说,一个做技术的在哪里不一样,这方面的东西不应该是你考虑的,做好自己的工作就行了,呵呵,呵呵呵呵。。。我就笑一笑
后来又面了几家公司都不是很满意,最后朋友内推拿了小米数码科技的offer。
感觉现在好多人都在说什么安卓快凉了,工作越来越难找了。又是说什么程序员中年危机啥的,为啥我这年近30的老农根本没有这种感觉,反倒觉得那些贩卖焦虑的都是瞎j8扯谈。当然,职业危机意识确实是要有的,但根本没到那种草木皆兵的地步好吗?
Android凉了都是弱者的借口和说辞。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。
最后
跳槽季整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。
附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
本文在开源项目:【腾讯文档 】中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
讯文档 】](https://docs.qq.com/doc/DSkNLaERkbnFoS0ZF)中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…**