现在的位置: 首页 > 综合 > 正文

百度Android客户端研发面试经验

2018年05月04日 ⁄ 综合 ⁄ 共 4622字 ⁄ 字号 评论关闭


百度、阿里、腾讯(BAT)无疑是国内互联网行业的三巨头,虽然业务侧重各有不同,但是在移动互联网时代,无线入口是必争之地,三巨头也各自发力,招兵买马,大力推动移动端产品研发,以抢占更多智能终端用户,对很多想加入百度的同学来说,是很好的机会,但是很多应聘者对BAT内部不是很了解,以致不知道如何准备,需要注意哪些事项,以获得这些互联网巨头们的青睐。


GG今天先从Android户端研发岗位开始,给大家介绍一些面试相关的注意点,橙GG在百度工作数年,面试过很多应聘者,不少应聘者本身能力还是不错,但是明显感觉在某些关键技术点上欠缺准确和深度的了解,以致最终与百度失之交臂。

从百度招聘的理念上来讲,比较讲究实用主义,和传统的大公司、大外企不一样,百度对学位和专业的包容力很强,只要能力足够,均可以破格录取。基本上,百度在人才筛选上重视以下几点:

1.扎实的程序设计基础

技术基础是任何业务及系统实现的根基,不管你到百度是做音乐,地图,视频还是移动云,都离不开扎实的技术基础,对于Android客户端研发职位来说,通常会从以下几个方面来考察基础。

1/1.基本语言开发能力,如Java的多线程知识,如何创建使用线程,extend
Thread 
implement Runnable差异在哪里,线程间的同步,overrideoverload,或者问static关键字有哪些用法,final的意义等等,总之会围绕非常常用和重要的一些基础知识来判断应聘者基本的语言能力,这部分如果回答的比较糟糕,那就基本没后戏了,我面试过程中发现,好多应聘者虽然对用过的东西比较熟,但是明显发现没有系统学过,看面试宝典看得不够透彻,稍微再问多一点,就完全没概念了,例如问static关键字的用法,静态变量是一定会回答的,但是面试官再跟进一句,在我们系统中,static用得太多,会有什么问题,使用静态变量要注意什么,好多面试者就No
idea
了。

1/2 Android相关基础,既然做Android研发,这块当然是重点,七成面试内容,就是和Android相关的。橙GG
08
年开始写Android,当时写Android的人很少很少,如今Android研发人员一大堆,但是优秀的Android工程师还是有限,如何来鉴别?Yes,就是看这个工程师对基础、要点理解的到不到位,几乎所有人都能回答Android的生命周期,每次问到这个问题,就像小时候学英语对话,how
are you, fine thankyou and you, 
眼睛不眨一下就把结论背出来了,不管自己今天是不是伤风感冒,女朋友吹了,反正就是fine thank youand you? 面试官再跟进一下,每个生命周期的节点有什么意义,到某个周期节点后,我们不应该做什么,好多就不清楚了,要是再让面试者结合

Android几种不同类别的进程做个对应的分析阐述,抓瞎的就更多了。跟这个类似的是问Activity的启动模式,大多数人都能回答出来,再要他们仔细阐述每种启动模式的意义,很多就只能死背了,一听就听出来,没有自己写代码测过、用过。基本上,对基本组件的一些使用场景和方法,一定会问到,例如会问问Service的使用,怎么使用,两种使用方式的差别,适合什么样的场景,如何尽量避免Service被杀。或者ContentProvider什么意义,和数据库存储什么关系。要做一个开机自启动的网络请求工作,怎么做,等等,这些都算基础。

提高一点的,会问performance相关以及一些深度一点的问题了,事实上这部分的回答,很可能影响到你是T4还是T5 J,例如,怎么检查应用是否有内存泄露问题,如果有泄露,可以用什么工具什么方法排查。我们写代码的时候要注意哪些方面,以避免出现内存泄露。再比如,联系人列表有好多人,有什么方法来改善滑动性能。 HandlerthreadmessagemessageQueuelooper具体什么含义,以及他们之间的关系,因为这是一个最常用的消息处理模型。WeakreferencesoftReference什么意思,使用场景在什么地方。

1/3.设计模式,这一块稍微高一点的职位都会问到,问一些常见的设计模式,单例类如何实现,单例类创建的单例怎么释放(你思考过没)?适配器模式的意义在哪里,为什么我们要适配器模式?观察者模式的UML模型,能结合Android讲一下观察者模式吗?再提高一点,会直接问系统设计的思路和设计模式的综合应用,例如带业务类别和优先级区分的HTTP请求线程池,如何实现,等等。这一块是提高部分,基础岗位如果没有回答出这些问题,只要态度诚恳、好学,基本上也不影响offer,百度还是有一定的培养心的。

1/4.算法,可恶的算法,某些世界著名的企业,例如微X,亚马X(绝对不是亚马碟),谷XIBX,不管什么部门,有事没事就问你一些算法,什么分治算法,回溯算法,据说这些装X企业的员工,一年到头写不上千儿八百行代码,没事每天就折腾这些算法,以便在应试者面前显得很牛X的样子。算法这个事,个人觉得很有用,但是要看部门,看工作内容,百度还是比较有节操的,做基本应用开发的,很少问一些乱七八糟的算法相关的问题,实际上在互联网时代,真的需要用到分治算法的时候,我想大家这么聪明,借着百度文库现学现用,掌握不难。做Android客户端,最多问问一些常用的排序算法,基本就足够了。

2.相关的项目经验

目前公司大多都是实用主义,一般search简历的时候,尽量会找有相关业务经验的,比如做视频的,那么最好应聘者也是做视频业务的,最最好的是做完全一样的项目的,最最最好的是来自于竞品团队的(一举两得啊,哈哈,360和百度喜欢互挖,这个是业内都知道的秘密)。看项目经验,无非考虑到以下几点:

2/1,上手快,业务理解快。天下应用一大抄,界面变化再多,产品理念差异再大,来往和微信也就TM一回事,百度地图和高德地图也是一回事,做过相同的东西,对相关技术比较清楚,对业务理解也比较清楚,所以一般入手都比较快,没节操的程序员,可以直接把前一家公司的某块代码直接拷贝过来,没节操的二货程序员,连特么的copyright申明或者author邮件地址都可能没改,出活快不快?

上面都是扯淡,Hint在哪里?面试前,你一定要认认真真总结自己做的项目,对业务和使用到的主要技术,要很清楚,你来做音乐客户端,多线程下载、断点续传你都没做过,呃~好吧,只能说我们产品理念不同,世界观不同~~

2/2,快速解决类似问题。各位做大型项目基本都“挖过坑,埋过人,跳过陷阱撞过门”吧,这些经验相当宝贵,产品姐姐妹妹们冒出个想法很正常,R&D们要支持,谁让人家那么漂亮?做呗,于是乎,“栽栽愣愣来编程,坎坎坷坷全是坑,坑里TM全是水,水里尼玛还有钉儿”,悲催不?这时候,做过相关的项目的,可能就预知问题所在,或者能快速定位问题,“小心翼翼拔出钉儿,拼劲全力爬出坑,栽楞走过坎坷路,回头微笑看人生”,牛X不?

上面还是扯淡,Hint在哪里?面试前,你总结过你做的这些项目难点在哪里,重点在哪里了吗?一般的面试官都会问你遇到的难点,或者项目中的难点和陷阱,你要对这些很清楚。

Lastbut not least,别装X,装X容易遭雷劈,相关项目经验如果和目标职位基本一样的话,要实事求是,装X会死得很惨,因为一般面试官的人,都是比较了解项目,很有可能在爬坑过程中。我面过一个candidate,我们当时正在做DLNA,那货告诉我很懂DLNA,我就问了一个DLNA
controller
发给rendermessage,出现丢失和延迟的原因及如何优化,那货死得很惨,好吧,是他逼我出手的~~

3.踏实的工作态度

很多时候,老实说,项目的七成工作是属于基建,拼的不是聪明,而是踏实细心,对于“角色码农”来说,不需要牛X的突破能力,也不需要牛X的隔人暴扣,“踏踏实实投好篮,认认真真抢好板”,才是王道,一个球队五个科比,未必能进得了季后赛,“角色”很重要。所以,踏实认真,肯做事的态度,在互联网行业还是非常受欢迎的,老罗5.20锤子手机发布会上都煽情说,“我们不是为了输赢,为了认真”,认真,踏实认真!同样百度也是喜欢踏实干活的人,面试者除了展现能力和自信,也一定要控制好自己,不要表现的浮在上面,空杯心态,这个最好。所以,面试官可能会问你一些让你不爽的问题,或者你认为是刁难的问题,或者让你回答很基础的问题,都要耐心,别急躁,别骄傲。

4.思路清晰,有较强解决问题能力

谈到思路,你是不是想到什么“美国有多少条公路?”,“井盖为什么是圆的?”,“带两根一米长的模板怎么过宽一米二的矩形护城河?”,“你二大爷他七大姑的三姨你叫什么?”??叫去你大爷的,这种two hundred andfifty的问题,据说也只有著名的世界五百强XX企业年薪百万的岗位才问的问题,据说百度内部是严禁问这些问题的,如果哪个面试官问你这类问题了,你小报告给我,橙GG我在内部红黑榜里面给他上一回头条,如何?

我们这边所说的思路,还是主要针对实际需求的设计思路和分析思路,这个依赖于一定的经验,但是确实也需要较强的分析和知识整合能力,很多所谓的新玩意儿,实际上是借鉴其它相似技术的思路,做的延伸。举个例子,我要做两个手机之间高速传输文件的应用,让你设计一下技术架构,你怎么思考,可能你就从来没做过,那么你自己有个清晰的思路,考虑大概通过什么方案来实现,蓝牙行吗,WiFi行吗,怎么发现对方,怎么传输文件,需要定义消息么,文件传输怎么做,思考一下,心里就有底了。

所谓思路,实际上还是建立在个人知识体系之上的,知其然而不知其所以然的话,很难触类旁通,很难有思路,深度理解两三个技术框架和实现原理很有必要,能加重你的分量。

5.较强团队协作能力、沟通能力

互联网产品的团队都是快节奏的团队,考察个人的合作能力和沟通能力,也是必须的,这个HR面试会问的多一些,不过在百度这种业务主导的企业,HR的影响力有限,主要是协助考评。主要还是在于和技术面试官的沟通和交流,两个码农的心其实是很容易贴近的,沟通过程中,要有积极参与的心态,该倾听的地方认真倾听,要提问的时候大胆提问,很简单,所以一般倒在沟通上的candidate很少,除非你要装X,搞的很强势,或者很拽,或者人品有bug,三观crash,性格out
of memory
,那么没办法,No zuo No die

好了,橙GG今天扯蛋为主,给各位对互联网行业感兴趣的同学简单介绍了一下百度Android客户端研发招聘的一些衡量标准,以及个人的一些面试建议,干货不多,文章稍长,希望对你有一点点帮助。从本周开始,我会在贝橙咨询上陆续释放干货,发送一些面试的常见问题,抛砖引玉,和大家一起来掌握Android/iOS移动客户端研发的一些关键技术要点,Thanks
All
,掌声在哪里?:-

请关注我们的微信公共账号ibetterchange,你也可以给橙GG
mail
hi@betterchange.net,男码农如果对我们几个橙mm感兴趣,求爱信我一定转交,橙GG很直。


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

欢迎关注贝橙咨询(微信号:ibetterchange),贝橙致力于移动互联网信息咨询、就业推荐、面试辅导、及职业发展规划。

抱歉!评论已关闭.