2024年安卓最全最接地气的Android面试总结心得,面试安卓开发问什么

学习福利

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

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

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

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

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

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

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

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

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

如果说简历制作是门学问,那么简历投递一定是一个技巧了。投的好你就会有面试邀请,投的不好,即使你能力再好也是过不去的。所以投好简历至关重要。那么我们可以从这几个方面入手:

  • 网站选择现在主流的网站有智联,BOSS直聘,拉钩。如果你这些投递完后面试邀请还不是很多,可以试试中华英才,前程无忧,猎聘同道。其他的软件基本就没什么作用了,智联可以海投,能力好可以看公司方向投递。拉钩有投递上线,可以多创建几个拉钩重复投递,BOSS的话可以在坐公交或是面试之余去投,这个主要是以聊为主,如果谁看了你的简历,那么你可以主动沟通。

  • 投递时间你可以选择在周日晚间投递,这样在周一HR上班时候你的简历不会排的太远。平时也是在每天的6-8点投递为好,这样如果HR去看的话,会容易看到一些

  • 其他注意如果你是半年或是一年经验,可以多写一点,当然面试的时候给的简历就要真实了。因为有些情况,如果你工作太短,无论你多优秀也不会有太多的面试机会,因为人家的硬性条件你都过不去。

4. 面试准备
  • 个人准备如果你是在大城市,一定要把手机充好电(带着充电宝),因为去哪里都要导航,还有就是提前就多买点吃的,因为你可能为了干面试一天都吃不上饭(深有体会)。带好简历和纸笔。

  • 面试安排如果面试邀请比较多的话,一定要用Excel做好表格,然后尽量把相同地点的安排在一起(虽然给你面试邀请的时候,会规定时间,但是你打电话沟通改时间件,一般都会同意的,大家都理解)。这样你就可以不用来回跑,可以一天面3-4个。还能节省时间和体力。我把我的表格拿出来,你们可以做个参考:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

大家可以根据自己的情况自己创建,安排和查看都很方便。

  • 面试排期面试多的话,不要一天排超过4个,2-3个最好,有时候可能会赶不上,同时会给人家造成不好的印象,同时对自己太多劳累(面试比工作累多了)。

面试之中

这部分主要是面试相关,本身我是接近两年的工作经验。所以我面试的公司没有什么BAT,也没有上千人的大企业。所以,如果不适合你,可以选择跳过。同时我面试的比较多,不乏一些初创的创业公司(10个人一下,5个人的公司)。但是每个公司的面试我们都要重视与尊重,因为只要是一个公司既然创办起来,必然有存活之道,所以没有高低,只有适不适合自己。如果特别少的面试邀请也可以试试锻炼自己。去不去那又是另一回事。

因为我面试时间并不长,面试的公司与周期不多(面试真心太累了),所以都是从我的个人实际触发,仅供参考。我面试的公司与内容如下:
  • XXXX清承科技有限公司

公司方向: 主要是教育方面,是一家线上与线下结合的教育相关公司,提供不同年龄段的教育学习,同时自主研发平板投影,视频盒,定制钢琴,手机端在线教育软件等。公司也是初创团队,公司40+人,近20人清华毕业,公司负责人与移动部负责人都是清华博士后毕业。说来也尴尬,因为由于个人原因,晚了面试时间12天,但是想着试试。公司人数: 30-50主要内容:

  1. java核心思想

  2. java高级知识,注解,反射,泛型的理解与作用

  3. framework有那方面什么理解

  4. Activity的生命周期与启动模式

  5. 性能优化

  6. 内存优化

  7. 数据结构(这方面是我的弱项,于是给我一个场景让我如何去选择,为什么)

  8. Bitmap如果优化,他的三级缓存的大致思想与逻辑

  9. 给我说一个你项目中你用到的自定义View的实现,不用细节到代码,主要的思想与核心方法输出即可。

  10. ListView如何优化,复用的原理,为什么会图片错位,如何解决,分页的思想是什么。

  11. 会根据你所写的技能特长找出3-4个点来问一问。由浅入深。从使用到场景到优化再到源码等等。(所以前面说了,不要随便写精通,除非你真的"精通")。

  12. 你在公司中用的什么代码管理,如何解决git冲突。你在工作中你的职责和主要内容等工作相关的问题。

像我这种基本一遍都会在1-1.5小时就会结束,上面的问题问一遍基本也就差不多了。由于我去的时候他们Android已经招满了,但是考虑我我来,就给我一个机会。这个公司很看重员工的学习能力,鼓励学工多元化发展,后台,前台,硬件多元化。公司不错。面试时间: 1小时面试结果: 已给offer这个面试内容能够通过,基本就是靠文章和github给的分,专业知识不足。没有达到他们的要求。所以文章和github真的加不少分。因为学习能力和自主学习能力还可以,并且能看重你能力的公司至少会看重你的发展不光是让你来了就干活。

  • XXX云公司

公司方向: 物联网方向,提供云服务,与技术支持,企业定制软件,是一个软件超控硬件的公司。由360核心团队创业公司人数: 30-50人。主要内容:

  1. 手写三种单例模式,冒泡排序

  2. java线程,场景实现,多个线程如何同时请求,返回的结果如何等待所有线程数据完成后合成一个数据

  3. 线程种类

  4. Android子线程与主线程交互方式,原理以及各自的优缺点。

  5. 有哪几种创建线程的方式,优缺点。

  6. 项目介绍,开源框架的认识如何封装,项目中的难点

  7. Activity的生命周期,热修复的实现原理与区别(因为我简历里写了)。

  8. 在实际开发中的内存泄漏产生原因,如何查看,和你所知道的内存泄漏检测工具

  9. 项目介绍,项目提问,结果那些第三方,用工具解决问题,如何科学上网,会浏览那些网站,了解Android等技术途径等。

  10. git相关(这我装了一波,说我都是手写命令,因为当时是看书学的,因为在github上不存在冲突,所以真的就习惯性的用命令操作github)

其实还聊了一些东西,很多细节我也记不住了,面试官很和蔼,你不会告诉会先引导你,可以允许你有自己的理解思维与想法,然后说出自己的想法。不会的还会和你解释,很有质量的一次面试,也是我所有面试中最舒服的一次。面试时间: 1.5-2小时面试结果: 已给offer这个公司我真的很喜欢,虽然是创业公司但是技术过硬,产品很好。主要是我的面试官和负责人都让我感觉很亲切,这可能也是我喜欢他的原因吧。

  • XXX驾科技有限公司

公司方向 技术支持与服务,基础软件服务,车载导航软件支持等方向。公司人数: 50-70主要内容

  1. handle的使用与原理

  2. 线程切换与线程池的种类与作用,什么情况下使用多线程,有什么好处

  3. 简单介绍四大组件

  4. Manfest.xml的里有什么和作用

  5. 什么是多进程,进程和线程的区别,如何给四大组件指定多进程。

  6. 多进程之间的通信的方式,如何使用AIDL。他的使用场景是什么。

  7. View的加载流程

  8. 如何实现一个自定义View

  9. 如何选择第三方,从那些方面考虑

  10. 内存优化

  11. bitmap的三级缓存思想与如何优化bitmap

  12. 注解的作用与原理

  13. 设计一个音乐播放界面,你会如何实现,用到那些类,如何设计,如何定义接口,如何与后台交互,如何缓存与下载,如何优化(15分钟时间)

  14. 技能相关

  15. 项目相关提问

下面是公司负责人面试

  1. 什么是hash,他的作用是什么。hashMap源码是什么,他是依据什么原理实现的。

  2. 手写一段代码,如何找出一段字符串中,出现最多的汉字是哪个。

第一场面试的时候大约2.5小时,第二场40-1小时,共3.5小时左右,因为当天的面试安排特别多,所以早点去,而且离家近,去了等他们还没有上班,走的时候他们午饭已经吃完了。其实前一个面试官聊得很不错,一般聊到总负责人就不会在技术了。而且他们要的是实习生,当时我也不知道怎么就去了。后面关于数据结构原理与算法,我基本完败,我不知道1-2年的Android能理解到什么程度只能说我技不如人,走的时候给我留个作业,设计一个基于高德地图的车载功能,要求界面流程,路线图实时绘制,定位准确。2天时间。

面试时间: 3.5小时面试结果: 未给offer因为时间比较紧,而且面试比较多,所以没有事件去完成留得作业,毫无疑问没有通过,从这个面试中我也知道了java基础与高级技能,还有数据结构与算法是自己的弱项,以后一定要在这方面多努力。

XXXX投约牛科技****公司方向: 金融方向,产品开发接近尾声,还差一些付费接口数据,项目内部测试,然后上线。公司人数: 100-150主要内容:

  • 说下你了解那些framework。

  • 说说你对布局优化的理解

  • 你是如何实现类始于QQ表情图的,实现动图与图文并现的原理你简单说下(项目中有)

  • 说下当前你所知道的热更新与插件化,他们的实现核心原理是什么,他的异同有什么。

  • 从那些角度可以减少APK体积的

  • 对gradle命令与打包,接触过那些平台的上架

  • 简单说下接入支付的流程,是否自己接入过支付功能

  • 谈谈你对自定义View的理解,如果有一个需求你会如何实现一个自定义View

  • 说下LinkedList与ArrayList,HashTable与HashMap的区别与存储过程与遍历方式。

  • 说下你都看过那些技术书籍,你是如何自学的。你觉得自己的优势与弱点是什么。

  • 说下四大组件的启动过程(从Framework层去说,不必说出每个方法的名字,大致流程即可)。四大组件的启动与销毁的方式。

  • Android的数据存储方式有哪些,是否SQLite中要继承那个类来创建与更新数据库。SQL语句掌握怎么样。如何得到操作数据库的类等。

  • 说下你对多进程的理解,什么情况下要使用多进程,为什么要使用多进程,在多进程的情况下为什么要使用进程通讯。

  • 说下你用过的那些第三方,是否可展示。

这个公司项目马上要内部测试,可能会用到一些第三方的接入的东西,比较注重工作能力,面试官人很好,也是比较看重学习能力,也说当天面试过的5-6个人中都没有人说看书学习写博客之类的,而且根据的实际情况和能力程度来看,对我很满意(嘻嘻,有些小激动,付出终于得到肯定)。当时直接要给offer,由于一些其他问题需要和领导协商。

面试时间: 1.5小时面试结果: offer意向

还未收到他们回复面试结果,所以也不知道自己通过与否,不过感觉面试的还不错,由于他们产品开发完成大半,目前就差一些第三方的接入与优化和调试,所以需要一个工作能力比较好的,可以上手比较快。总的来说面试过程不错,不过也知道了自己在实际开发中处理问题能力与调试能力还要加强。面试官很好,说我就在他手底下干活。挺喜欢我的。哈哈。

**XXXX智能****公司方向:这是一家人工只能公司,主要是做人工智能机器人,无人机,视觉算法等方面,公司环境高大上,基本好像都是90后,很有活力。领域也比较前沿,是一个不错的公司。公司人数: 100-200主要内容:**第一个面试官:

  • 说下你所知道的设计模式与使用场景

  • java语言的特点与是OOP思想

  • 说下java中的线程创建方式,线程池的工作原理。

  • 说下handle原理,为什么会出现内存泄漏,为什么继承Handle就不会出现能存泄漏

  • 说下Activity的启动方式,生命周期,两个Activity跳转的生命周期,如果一个Activity跳转另一个Activity再按下Home键在回到Activity的生命周期是什么样的

  • 说下Activity的横竖屏的切换的生命周期,用那个方法来保存数据,两者的区别。触发在什么时候在那个方法里可以获取数据等。

  • 是否了SurfaceView,它是什么?他的继承方式是什么?他与View的区别(从源码角度,如加载,绘制等)。

  • 如何实现进程保活

  • 说下冷启动与热启动是什么,区别,如何优化,使用场景等。

  • Android中的线程有那些(我提到HandlerThread,AsyncTask又问了他们的原理与各自特点)

  • 给定命题,一串字符串中有通配符与占位符,如何化简优化(方法忘记可以简写)

  • 说下产生OOM,ANR的原因,三级缓存原理,如何优化ListView。

  • 说下你对Collection这个类的理解。

第二个面试官:

  • 说下AIDL的使用与原理

  • 说下你对广播的理解

  • 说下你对服务的理解,如何杀死一个服务。服务的生命周期(start与bind)。

  • 是否接触过蓝牙等开发

  • 设计一个ListView左右分页排版的功能自定义View,说出主要的方法。

  • 说下binder序列化与反序列化的过程,与使用过程

  • 是否接触过JNI/NDK,java如何调用C语言的方法

  • 如何查看模拟器中的SP与SQList文件。如何可视化查看布局嵌套层数与加载时间。

  • 你说用的代码管理工具什么,为什么会产生代码冲突,该如何解决

  • 说下你对后台的编程有那些认识,聊些前端那些方面的知识。

  • 说下你对线程池的理解,如何创建一个线程池与使用。

  • 说下你用过那些注解框架,他们的原理是什么。自己实现过,或是理解他的工作过程吗?

  • 说下java虚拟机的理解,回收机制,JVM是如何回收对象的,有哪些方法等

  • 一些java与Android源码相关知识等

第三个面试官(总负责人):

  • 大学成绩

  • 大学那些专业,你哪方面学得好

  • 单片机,嵌入式,电子线路。

学习分享,共勉

Android高级架构师进阶之路

题外话,我在阿里工作多年,深知技术改革和创新的方向,Android开发以其美观、快速、高效、开放等优势迅速俘获人心,但很多Android兴趣爱好者所需的进阶学习资料确实不太系统,完整。今天我把我搜集和整理的这份学习资料分享给有需要的人

  • Android进阶知识体系学习脑图

  • Android进阶高级工程师学习全套手册

  • 对标Android阿里P7,年薪50w+学习视频

  • 大厂内部Android高频面试题,以及面试经历

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

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

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

题,以及面试经历**

[外链图片转存中…(img-HXjD7WAd-1715759595921)]

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值