Android 30K大佬分享高级开发岗必问知识点,值得收藏!

面试过程:面试流程总的有三面,因为当时比较忙,所以约的电面,面试的是当时的技术经理,然后约的周六技术总监面试,最后人事面。

一面:Android技术经理

旁白:百分之90的面试第一句都是来自我介绍,所以这个时候把自己的项目经历准备充分就好,这方面需要在简历里面下功夫。

面试官问:App的性能指标有哪些?

:App的性能指标涉及的范围比较广,比如Crash率、卡顿、内存、CPU、网络流量、耗电等等。接下来面试官有问到Android里面的奔溃率多少合适,当时具体多少我没说,我讲到了在实际开发中可以集成腾讯的Bugly来解决和统计奔溃率的问题。然后,谈到了App卡顿优化,在这块我先谈App 卡顿的一些场景,像列表(RecycleView)滚动时的卡顿问题、频繁IO导致的卡顿、主线程做耗时操作、复杂的布局设计等几种情况进行讲解,在开发中怎么注意卡顿的问题,然后讲解了怎么使用工具来定位卡顿问题,如BlockCannary、TraceView,然后稍微说了下线上卡顿的定位,可以自建APM平台收集卡顿日志,以及第三方平台听云的使用。因为时间有限,其它性能指标就没有在谈及。

面试官问:Android组件化是怎么通信的?

:Android组件化的通信有多种方式,比如Activity的跳转可以使用路由机制,像Arouter框架或者自己根据uri机制来实现一套路由。还有组件之间的数据通信,可以使用LocalBroadcast、AIDL等来进行通信。

面试官问:了解Socket通信吗?

:Socket这块聊到了TCP协议以及三次握手,还有我以前参与过的一个车载系统的APP,使用了TCP通信来采集GPS、数据流量等信息,还有TCP长连接的保活机制。因为这个项目不是我负责的哈,所以这块讲的比较浅,当时面试官提到我们项目中的TCP通信协议怎么定义的,这块没有说上来。

面试官问:Android中的进程间通信有哪些?

:Android进程间通信包括Binder通信、Socket通信、广播、内容提供者等等,其实,Android里面的四大组件都涉及到了进程间通信。

面试官问:我的问题问得差不多,你有什么需要了解的吗?

:公司目前的Android团队是怎样的?这个职位将来要负责什么项目?

面试官答:目前这边项目组Android有3个,我是这边的Android技术经理,这个职位负责的是云之家APP。然后,我问了下上班时间这些。

最后,面试结束,面试官叫我等待通知。然后,下午,人事约我复试,复试的是项目组的总监,这次我约的是下班后7点钟。

二面:技术总监

面试官问:谈谈你对Android开发中架构的理解?

:Android项目中的架构是与业务有关,不同的业务场景需要不同的架构支持,我谈谈之前开发过的旅游APP的架构演进:

(1)快速开发:项目初期,业务量少,这个时候使用短平快的MVC模式,可以适应快速开发的节奏。然后,顺便说到了MVP和MVVM的区别和理解。

(2)模块化:随着业务量的增长,可以把项目中的功能按照模块进行划分,模块之间的通信可以使用EventBus,并且把一些基本的功能抽成一个CommonLib模块,包含utils(工具类)、自定义控件、功能组件。

(3)组件化:项目规模越来越大之后,可以对项目进行组件化,把项目按照业务模块进行拆分,拆分出一个一个的业务组件。组件化之后,业务模块之间更加独立了。这个时候,可以很方便的把一个业务组件独立出来,成为一个独立APP。

(4)插件化:随着业务进一步的发展,有的时候需要接入合作方的APP,作为项目中的一个模块。当时,我们的旅游APP,需要把合作方的酒店APP接入进来,作为我们旅游APP的一个模块,这个时候使用插件化,把酒店APP作为一个插件接入就可以了。当然,还有一些情况,使用插件化后,可以动态升级某个功能模块以及实现功能模块的按需加载。

面试官问:谈谈你对Android性能优化的理解?

:性能优化这块涉及到的话题很广,可以从内存、卡顿、网络、布局、启动等方面来说,我先说说Android中的卡顿优化吧。卡顿性能优化可以分为三个过程:开发期,测试期以及线上。

(1)开发期:一方面,需要开发注意平时的代码设计,多多关注哪些方面容易出现卡顿,如ListView卡顿优化、频繁IO等。另一方面,我们可以集成一些工具来自动检测卡顿的地方,如BlockCanary。

(2)测试期:测试的同学可以把卡顿列为一个测试指标,在测试时遇到卡顿反馈给开发人员,还有我们集成多工具BlockCanary也可以在测试期检测到。

(3)线上:如果需要线上检测,那么自己可以搭建一个APM平台,来收集卡顿相关的数据然后来进行卡顿优化。当然,我们也可以使用第三方平台,如听云、OneAPM平台。

讲完卡顿性能优化后,技术总监聊了点java基础,涉及点内容没有深入,然后,问了几个非技术性问题。

面试官问:说说你的几个与工作相关的优缺点?

这个问题很多面试官都喜欢问,这个每个人的情况不同。举个例子,如英文不错,看英文的技术文档无障碍;工作认真负责;热爱新技术;喜欢研究一些深入的技术等等。缺点如,执行力有的时候不够,安排好的事情没能及时完成;做工作的时候有的时候比较专注于一些疑难问题,从而忘记了工作进度,这个时候加加班处理下没多大问题的。

ps:这个有缺点的问题尽量都能答上,如果答得不好,会大大减分,因而失去一个offer。

最后,面试官问:你还有什么问题需要问的吗?

:您这边项目组情况是怎么样的?有多少个Android开发的?工作时间是怎样的?

ps:面试快结束的时候,一般面试官都会这么问,当面试官提这个问题的时候最好别什么都不问,这样的话会大大减分,面试官会觉得你对他们公司不关心。但问问题的时候也不要随便问,根据不同的情况,如面试官是做技术的,我们一般可以问问技术团队是怎样,大概要做一个怎样的项目,然后,这个项目有什么规划。如果是HR,我们可以问项目情况,团队情况,上班时间等等。还有一个问题,最好问下,“贵公司对该职位有什么期望?”,这样可以了解这个职位和自己的契合度,方便以后入职。

三面:人事

人事这块问的非常详细,像上家公司做的每个项目,项目开发周期,团队多少人等等。这块根据自己以往的项目经验来说就行。一般正常来说,面到人事,差不多offer就快到手了。但是,也不是绝对,有的公司人事把关比较严格,在人事这块面挂的也出现过两次。这里来段小插曲,当时,人事问了一个问题,“你开发中遇到的技术难点是什么?”,人事问这个,当时,脑袋卡壳了,一时不知道怎么回答,不过后来缓过神来,既然是人事问题,那我就把抓着某个技术说就可以了,人事就没继续往下问。如果是技术人员问到这块,遇到脑袋卡壳,基本是挂了。在面试中,我遇到过一次,在后面的连载中继续分享。

怎个面试结束下来,就是谈offer了,我跟人事谈期望22K,不过一直没谈下来哈。

最后,说下最近的面试成果,目前拿到了多家公司的offer,知名点的如OPPO、魅族、金蝶、珍爱网等等,还有一些不太知名点的公司,如岩心、ECAR等,谈到的薪资分布在16k到30K,最高的达到30k,百分之九十分布在20k以上,当然,也有些公司没有面到最后,后续也都分享出来,希望读到的朋友们多多指教。

通过上述面试中提到的一些问题和网上收集的一些 Android 往年面试题进行了整理,并找出了对应的参考答案,耗时72小时最终将它们整理成了PDF文档。因文章篇幅长度限制,暂且只能用图片形式展现,如有参考学习的可以直接去我 GitHub地址中:https://github.com/733gh/Android-T3 参考查阅,望这些干货能够帮助到大家!!!

最后,面试前该准备哪些资源复习?

其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

这里再分享一下我面试期间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)

《Android开发七大模块核心知识笔记》

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

《960全网最全Android开发笔记》

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

《379页Android开发面试宝典》

历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

参考docs.qq.com/doc/DSkNLaERkbnFoS0ZF
roid开发相关源码解析》**

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

参考docs.qq.com/doc/DSkNLaERkbnFoS0ZF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值