给Android程序员的一些面试建议,涨薪-5K-面试必问,这些技术是面试结果的决定因素!

  1. 具有本科及以上学历(名校更好)
  2. 具有2年及以上的工作经验(名企更好)
  3. 技术扎实,有技术追求和工作激情
  4. 良好的沟通和协作

在上面的四条中,其中第3条是最为重要的,即技术,在百度技术是大家所推崇的,因此技术是决定能否通过面试的最重要最直接的原因。一般来说,越是大公司,其对技术的要求就越高,尽管部分岗位并不需要那么好的技术,但是为了对候选者做出区分,其面试过程仍然会面试一些稍微深入的话题,相信大家都有所体会。

这里不做过多的阐述,理想的候选者应该是这样的:

  1. 扎实的技术功底,有技术追求(必须)
  2. 态度、沟通和为人都很好(必须)
  3. 2年左右工作经验(基本必须)
  4. 名校、名企、高学历(非必须,加分项)

基本来说,满足1和2就能通过面试,3和4都是次要条件,但是一般来说不满足3就很难满足1,不要说特例,木有参考意义。

由此可见,技术是面试结果的决定因素。那么到底技术掌握到什么程度才能比较轻松地通过面试呢?说了那么多,好像和Android没有一点关系,下面就开始以Android为例来分析下面试过程所需的技术

Android面试需要掌握的技术

一场面试都有一个流程,拿Android面试来说,面试内容不可能全是Android问题,里面应该会有编程基础相关的问题。我对Android面试中的问题做了下分类,如下所示:

一般来说,一个Android应用开发岗位是不需要太强的数据结构和算法的,但是这并不意味着候选者可以完全不懂数据结构和算法,所以数据结构和算法大家还是要稍微了解下,由于它不是必须的,所以就算面试过程中回答的不好也没关系,只要后面的Java、Android相关的问题能够完美回答就好。

有朋友和我反馈,说面试挂在了数据结构和算法,这在社招中应该是不多见的,这多半是因为Android的问题也没有很好地回答出来,这就是社招和校招的不同之处,校招看基础,社招看技术深度和业务。

关于设计模式和架构,其实中高级面试对这个的要求并不是特别高,熟悉下常见的设计模式基本就ok,比如单例模式、工程模式、观察者模式等。

接下来主要描述下面试过程中对Android技术的要求。我对Android的技术类别做了一下划分,如下所示:

对于大部分面试者来说,大家的目标岗位应该是中高级,中级岗位(百度T4)需要掌握的知识点是:基本知识点、深入知识点;高级岗位(百度T5)需要掌握的知识点是:基本知识点、深入知识点、基本知识点的细节和系统核心机制。

1、基本知识点

比如四大组件如何使用、如何创建Service、如何进行布局等。这类知识是需要熟练掌握的,并且也没什么难度。

2. 稍微深入的知识点

比如AIDL、Binder、多进程、View的绘制流程、事件分发、消息队列等。这类知识对于高级开发者来说也是必须掌握的,然而相信很多候选者在面试之前并不能对这些问题了如指掌。这些问题基本都是面试过程中很常见的问题,也是高级岗位所必须掌握的问题,不搞定这些问题无法达到百度的高级工程师的标准,因此也不可能通过面试。

3. 基本知识点的细节

比如Activity的启动模式和标记位、Service同时处于start和bind状态时的停止问题、AsyncTask的同步异步问题以及使用时的限制等,这种问题还有很多。这类知识点,大家在开发过程中可以并不会去注意,这会导致一个问题,那就是开发应用没问题,但是在面试时面试官只要稍微问下细节或者特殊情况,就hold不住了。 这类问题也是高级开发者所需要掌握的,有些面试官喜欢问一些看似刁钻的问题,但是候选者如果回答不了也是不好的。

4. 系统核心机制

比如主线程的消息循环、主线程如何和AMS如何跨进程交互、SystemServer进程中的各种Service的工作方式、AsyncTask的工作原理等。这类知识对于高级开发者也是建议掌握的,因为它们可以让开发者理解Android的运行体系。 这类问题并不是所有的Android面试都会涉及到,但是技术含量高的大公司有可能涉及此类问题。

5. 琐碎的知识点

此类知识点我把它们定义为一些重要但是没有什么技术难度的问题,比如如何打开一个网页、如何打电话、如何发短信、如何定位、多点触控等,这类问题往往不好记忆,但是需要的时候去查一下就能立马搞定。这类问题基本上不会出现在面试过程中。

大家结合自己对Android的学习过程以及面试经验,在面试中遇到的问题是不是都是包含在上面的5个分类之中呢?

对于1和5相信所有人都没有问题,但是对比2、3、4中的内容,大家是不是都能很好地Cover呢?换句话说,如果2、3、4中的内容大家都能很好地掌握,面试中的问题还能难倒我们吗?在前面的分析中提到,技术是觉得面试是否成功的关键因素,那么在面试前要做的就是把技术搞好,同时注意沟通和态度,这样的话通过面试岂不是很简单的事?

如何学安卓面试中所需技术

这里主要是指上面2、3和4这三个类别中的技术,说实话,这并不是一件很简单的事。那么到底如何学习呢,这里先大概说下,随后会有一系列博客来详细地介绍这些技术的学习过程。

首先要阅读源码,因为面试中的很多问题需要从源码中找答案,其次要主动学习平时工作中遇不到的一些技术,由于项目的原因,我们不可能通过公司的项目来解除到Android中所有的重要技术,尤其是一些规模不大的项目来说,这个时候要主动去学习

也许有人要问:”我怎么知道哪些东西是需要主动学习的呢?“这的确是个问题,但是我在前面的分类中做了一些举例,大家可以先尝试学习下那些技术,它们都是很重要且时常在面试中出现的技术问题。另外学习的过程中要注意积累,比如写博客、记笔记都是可以的,同时在Github上做开源也是不错的选择。

总结

找工作是个很辛苦的事情,而且一般周期都比较长,有时候既看个人技术,也看运气。第一次找工作,最后的结果虽然不尽如人意,不过收获远比offer大。接下来就是针对自己的不足,好好努力了。

最后为了节约大家的时间,我把我学习所用的资料和面试遇到的问题和答案都整理成了PDF文档

喜欢文章的话请关注、点赞、转发 谢谢!

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

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

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

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

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值