2024年最全一位30K大佬的面试经验!Android高级开发岗必问知识点,赶紧收藏,零基础学习android开发

更多学习和讨论,欢迎加入我们!

有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。

这里有2000+小伙伴,让你的学习不寂寞~·

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

基于以上问题,打算面试数家公司,一方面了解目前的Android市场情况,一方面提升自己的面试技术,从这些面试中学得更多的知识和技能,还有把此经历分享出来,希望大家多多交流。

No.1:金蝶(云之家)

面试结果:21K,15薪,公积金缴纳比例12个点,缴纳基数20k

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

一面: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高级知识点:

Android高级知识点

============

一、Android性能优化

1.描述一下android的系统架构?

2.Android线程间通信有哪几种方式

3. 如何避免OOM异常

4.Android程序运行时权限与文件系统权限的区别?

5.Hybrid 通信原理是什么,有做研究吗?

6.Framework工作方式及原理,Activity是如何生成一个view的,机制是什么

7.ANR是什么?怎样避免和解决ANR

8.Devik进程,linux进程,线程的区别

9.卡顿 {如何检测卡顿,卡顿原理是什么,怎么判断页面响应卡顿还是逻辑处理造成的卡顿} ,BlockCanary 的原理

二、Android热修复、插件化、组件化

1.谈谈对 ClassLoader 的理解

2.自定义 ClassLoader

3.插件化为什么会出现,如何代码加载,资源加载,代理 Hook)

4.如何从一个老项目一步步实现组件化,主要问思路,考察架构能力和思考能力。(需要考虑很多,每一步做什么,顺序很重要)

5.组件化和模块化的理解与区别?

6.class文件加载Dex原理

7.Gradle自动补丁包生成原理

三、Android Framework、 ROM定制、Ubuntu、Linux之类的问题

1.Binder 机制(IPC、AIDL 的使用)

2.Activity 启动流程,App 启动流程

3.Android 图像显示相关流程,Vsync 信号等

4.为什么使用 Parcelable,好处是什么

5.AMS 、PMS

6.类加载机制

7.Ubuntu编译安卓系统

8.对Dalvik、ART虚拟机有什么了解?

9.JVM内存区域,开线程影响哪块内存

四、架构设计和设计模式

1.MVC MVP MVVM原理和区别

2.项目中常用的设计模式

3.说说EventBus作用,实现方式,代替EventBus的方式

4.Fragment如果在Adapter中使用应该如何解耦?

5.实现一个Json解析器(可以通过正则提高速度)

6.从0设计一款App整体架构,如何去做?

7.Fragment如果在Adapter中使用应该如何解耦?

8.谈谈你对Android设计模式的理解

五、算法

1.手写一个冒泡排序

2.快速排序的过程、时间复杂度、空间复杂度

3.蚁群算法与蒙特卡洛算法

4.两个不重复的数组集合中,求共同的元素。

5.2000万个整数,找出第五十大的数字?

总结

【Android 详细知识点思维脑图(技能树)】

image

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

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

droid的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值