收藏Android程序员,你应当这样面试

收藏Android程序员,你应当这样面试

应大家的约请,写一篇关于Android面试相干的博客,需要说明的是本文只针对Android运用开发,不针对rom开发和逆向工程。我想面试对程序员来说是很重要的一件事件,面试结果的好坏直接决定了能否进入某个公司和以甚么级别和待遇进入某个公司。我参加面试的经验其实不多,但是以面试官的身份面试他人倒是有很多次,所以我可以结合这些经验来介绍下如何更好地掌控一个面试。

什么是适合的候选者在介绍如何面试之前,这里先从公司的角度来分析:”到底什么样的候选者是公司所需要的技术人才?“就我在百度的一些面试官经验来讲,一个具有以下特点的Android程序员是我们所需要的:

1.具有本科及以上学历(名校更好)

2.具有2年及以上的工作经验(名企更好)

3.技术扎实,有技术寻求和工作豪情

4.良好的沟通和协作

在上面的四条中,其中第3条是最为重要的,即技术,在百度技术是大家所推重的,因此技术是决定能否通过面试的最重要最直接的缘由。一般来说,越是大公司,其对技术的要求就越高,虽然部份岗位其实不需要那末好的技术,但是为了对候选者做出辨别,其面试进程依然会面试一些略微深入的话题,相信大家都有所体会。

除技术之外,良好的沟通和协作能力也是比较重要的。或许很多人觉得这个比较抽象,心里会想:”你怎样知道我有没有良好的沟通和协作能力呢“?其实这个问题并不难,面试进程就是一次沟通进程,如果不能和面试官很好地沟通,这就说明候选者的沟通有问题。

如何很好地和面试官沟通呢?

给以下几点建议:

-礼貌和尊重。

-听懂面试官的问题并直接回答。

有些候选者听不懂面试官的问题,还有些面试者总是不直接回答问题,或也许是不会的缘由,就开始转弯抹角乃至转移话题,我认为这是很不好的,人要用于承当,即便这个问题不会,那也可以大声地说出来”不好意思,这个我不太会“,乃至还可以虚心地请教下面试官,面试不但仅是一次找工作的进程,也是一次自我学习和提高的进程。

大家要知道的是,不是必须全部答对问题才能通过面试,只要大部分问题能回答出来并且候选者的态度良好,那末这样的候选者依然能通过面试,固然态度不好的候选者,即便技术很好也很大可能通不过面试。

-谦虚谨慎、态度友好。

有些候选者在面试的时候不谨慎,给人一种随便的感觉,比如坐姿不端正,翘着二郎腿等等,换句话说就是别太随便,作为面试官公司都要求不能太随便,何况候选者呢!太随便的举动会给对方一种不被尊重的感觉。关于谦虚,这个就没必要多说了,任何时候都要谦虚,面试进程中自满自大(俗称”得瑟“),是很容易被毙的。态度友好,就是要让面试官感受到你的诚意,这样大家沟通起来才比较舒服和自在。

下面对学历和工作经验做一些说明,学历并不是一个硬性要求,即便候选者学校不怎么好也是有可能通过面试的,这就要求候选者技术非常扎实。而工作经验,之所以是2年以上,这是由于社会招聘的对象一般都是有一定工作经验的,而1年工作经验略短了点,拿百度来讲,社招的 别一般为T4,差不多恰好就是2年经验左右。

这里做下总结,理想的候选者应该是这样的:

1.扎实的技术功底,有技术寻求(必须)

2.态度、沟通和为人都很好(必须)

3.2年左右工作经验(基本必须)

4.名校、名企、高学历(非必须,加分项)

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

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

Android面试进程所需要掌握的技术一场面试都有一个流程,拿Android面试来讲,面试内容不可能全是Android问题,里面应该会有编程基础相干的问题。我对Android面试中的问题做了下分类,以下所示:

一般来说,一个Android运用开发岗位是不需要太强的数据结构和算法的,但是这其实不意味着候选者可以完全不懂数据结构和算法,所以数据结构和算法大家还是要略微了解下,由于它不是必须的,所以就算面试进程中回答的不好也没关系,只要后面的Java、Android相干的问题能够完善回答就好。有同学和我反馈,说面试挂在了数据结构和算法,这在社招中应该是不多见的,这多半是由于Android的问题也没有很好地回答出来,这就是社招和校招的不同之处,校招看基础,社招看技术深度和业务。

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

接下来主要描写下面试进程中对Android技术的要求。在我对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中的内容大家都能很好地掌握,面试中的问题还能难倒我们吗?在前面的分析中提到,技术是觉得面试是不是成功的关键因素,那末在面试前要做的就是把技术搞好,同时注意沟通和态度,这样的话通过面试岂不是很简单的事?

如何学习Android面试中所需的技术这里主要是指上面2、3和4这三个种别中的技术,说实话,这并不是一件很简单的事。那末到底如何学习呢?

首先要浏览源码,由于面试中的很多问题需要从源码中找答案,其次要主动学习平时工作中遇不到的一些技术,由于项目的缘由,我们不可能通过公司的项目来消除到Android中所有的重要技术,尤其是一些范围不大的项目来讲,这个时候要主动去学习。或许有人要问:”我怎样知道哪些东西是需要主动学习的呢?“这的确是个问题,但是我在前面的分类中做了一些举例,大家可以先尝试学习下那些技术,它们都是很重要且经常在面试中出现的技术问题。另外学习的进程中要注意积累,比如写博客、记笔记都是可以的,同时在Github上做开源也是不错的选择。

本文转载自络,欢迎大家分享浏览!

长按指纹识别









































北京治疗白癜风费多少钱
在北京治疗白癜风大概多少钱



转载请注明:http://www.xxcyfilter.com/gailian/643.html