美文网首页Android开发经验谈Android技术知识Android开发
一年Android岗工作经验试水杭州,快手 美团...面经分享

一年Android岗工作经验试水杭州,快手 美团...面经分享

作者: Android架构师丨小熊 | 来源:发表于2019-10-08 21:42 被阅读0次

人生困难重重,在漫长而艰辛的前行路上,坚持不懈、脚踏实地的“低头拉车”固然重要。但认清形势、找准目标的“抬头看路”也很关键,甚至决定着你能否达到成功彼岸。只寻求远方的梦想,而不付出当下的努力,那是迷梦;只知道埋头苦干,而不认清方向,那是徒劳。

这是我的一个朋友,先简单说说他最近的面试经历吧。面试的公司很多,大部分最后都能得到令人满意的结果,将这些体会记录下来,面了这么多公司,如果不留下什么,那岂不是太浪费了。对于自己来说,这也是一次自我检查,在这次面试中总结经验,认清自己,同时希望这些对即将换工作或者打算看看其他机会的你有一些帮助。

以下的部分有具体的面试经历,也有自己的一些总结面试必备技能和自己的一些感想。

为何离开华为

来华为的主要原因是:增长自己的见识,很好的发展自己。很好的发展自己,就需要一个平台,通常这个平台是大公司才能提供,大公司会有一套完整的机制来培养你,让你有更多的选择,可以选择自己喜欢做的事情。所以我建议刚毕业的同学,最好还是选择大公司,哪怕以后要跳槽,大公司也是非常好的跳板。在华为的这一年,最大的收获并不是技术上的成长,而是自己的见识和思考问题的能力。虽然有很多人不满华为,公司大了,肯定不可避免会出现很多问题,但是总体来说华为还是一个非常了不起的企业。

离开华为的主要原因是:我的职业规划与华为给我的规划不相符,还有就是流程化的东西太繁琐,自己有一些不适应,所以选择离开了华为。领导开诚布公的跟我聊了很多,最终我还是下定决定要离开华为,领导建议我先去面试一些公司,等找到合适的再走,裸辞的话社保和心态上都会有一些问题,这样的领导真是没话说了,在华为很多领导都是不放人的,很多都把员工的下一家拖黄了才放人。在这一年获得的成绩:

  1. 北京研究所第一届Hackathon 二等奖
  2. 转正绩效是A
  3. 年终绩效 B+,获得明日之星

准备

其实我很早就开始准备了,准确来说也不算准备,只是一直在总结Android相关方面的知识,因为在华为虽然工作有时候比较多,但是还是有大把时间可以自己学习一些感兴趣的方向。从过完年回来,我就有计划的复习和总结了一些知识。


看过的书籍,这里并不是泛泛的读一遍,而是详细理解了大多数内容,通俗一点就是可以用自己的话将相应的知识解读出来。《Android开发艺术探索》(这本书真心不错,我反复读了4、5遍)、《Android群英传》(比较接近开发使用,因为做过一些应用开发,读起来还是比较简单的,读了2遍)、《深入理解Java虚拟机》(也是一部神作,可以让你清晰的理解JVM,读了2遍,理解的不是很透彻)、《剑指offer》(感觉面试中碰到的算法,80%都能找到相应的题目,保证所有的题都可以手写出来就行)。4个月精读了以上书籍,还有其他的都是简单了解,这里就不列举了,读完这些书,应该可以让你上一个层次吧(妈妈再也不用担心我面试啦…)。
刷题,主要是LeetCode(大概刷了300道题左右,每天3-6道,坚持下来,需要多复习,因为很多题过一段时间会忘记),还有看过一些牛课网。
看别人的面试经验,主要在网上,这里我列举两个比较好的。
Android客户端面试题集锦
Android阿里面试题锦集
投递简历

一份好的简历是非常有必要的,需要突出你的重点和闪光点,具体怎么写简历可以参考

CodeKK说简历

有了一份好简历,接下来就是投递简历,一般是:拉钩+BOSS直聘+内推,从我这次面试机会来看,三者比例是2:2:1,也可能我工作经验还不到一年,内推滴滴、阿里和腾讯直接就把我的简历刷掉了,但是内推也是具体到某个部门,如果被刷掉也不要灰心,现在大公司基本上各个部门都有自己的hr,可以在拉头和BOSS上多投递一些,万一其他部门看中你呢?

面试经过

这里我仅仅记录一些问过的题目(能记住的),答案我就不写出来,基本上都可以在网上找到相应的答案。


作业盒子

时间有点久,很多问题记得不太清,大概有以下内容。

一面

  1. Android一些优化方案
  2. 什么是过渡绘制,如何防止过渡绘制
  3. 事件分发机制
  4. ListView的优化
  5. Binder机制
  6. 在多进程中,Application会启动几次
  7. 单例模式,双锁原理,volatile原理,静态内部类实现单例的原理。
    二面

二面面试官是leader?反正应该不是做android的,Android的相关知识问的也不多,大多是项目上的东西。

  1. Java多线程,synchronized
  2. 聊项目,都具体做了什么。
  3. Binder机制
    三面

应该是leader吧,主要了解一些个人的情况,以及一些项目,最后问了期望的薪资,然后当场就给了offer。

毕竟1年多没有面试了,第一场面试还是给我了很大的自信,也知道现在自己大概能要多少工资是合适的,所以同学们准备跳槽的时候,最好先面几家小公司,盒子还是一个很不错的公司,整体的办公环境挺好的,现在也处于盈利状态,在教育类的app中也排的上名次。

快手

快手就在五道口地铁站出口不远地方,能看到很显眼的LOGO,看上去很霸气的样子,但是当我进入到快手前台的时候,连一个标示符都没有, 一度以为自己走进了假快手,好吧,我是来面试,这些都不重要,接下来接待的人员把我领进了一个小屋里,等待面试的开始。

一面
面试官是一个很fashion的人,是从小米核心部门过来的,是Android小组的领导。

  1. 问了关于数据库的一些问题,SQLite的相关操作,没办法,我在华为唯一一个做的和java相关的项目,但是不太擅长数据库。
  2. 网络相关的问题,网络的五层模型,又问了TCP和UDP,还有Android相关的长连接,这里问的比较深。
  3. 开始Android先关的知识,Handler机制,Acticity的生命周期以及四种启动模式,各自特点,Service的两种启动模式生命周期,如果同时使用两种启动模式是否可以,顺势讲到Binder,什么时候可以得到控件的大小,最后写了一道链表反转的算法题
    第一面这就算过关了等待二面。

二面

  1. 问了项目相关的问题,这部分根据自己的项目经验,由于大家的经验都不同,这里我就不详细说了。
  2. 设定一个场景,怎么去实现相应的功能,因为快手这个部门想做社交,因此这里是问我是如何实现微信的联系人页面(包括与服务端有什么样的交互)
  3. 最后也是一个算法,写出所有数组的子序列
    二面面试官是这个组的leader,跟我讲了现在这个组的发展情况和快手现在的情况,由于快手成长很快,所以不能仅仅依靠一个APP,还需要在其他方面进行一些尝试,而这个组的任务就是在一些方面做一些尝试,大概就是这个样子。

二面也顺利通过,接下来就是HR面了,这时候正好是12点,他们要去吃饭,不过快手是提供午餐和晚餐的,第一个面试官带给我一份饭,还不错,后来HR跟我说,现在只是过渡时期,后面午餐和晚餐会改成自助餐的形式。

三面
HR上来很亲切,问了我一些面试的情况,难不难之类的,然后又聊了聊我大学和研究生情况,我只想说我“too simple , too naive “,大概了解我后,只跟我聊我的不足,以此来压低我期望的薪水。说了一下薪资期望,加了微信,让我回去等待,说发offer大概是2周时间,因为需要走各种审批流程,让我不要着急。

快手是一个很年轻的公司,技术还是需要一定的积累,希望不要像小咖秀一样昙花一现。

美团外卖

一面
简历上写的项目问了一遍,然后开始问知识点。

  1. volley的源代码,在图片缓存部分讨论了挺长时间,http中缓存机制,Last-Modify的作用等。
  2. fragment的生命周期
  3. service一些知识
  4. 事件分发机制
  5. Binder实现机制,Stub类中asInterface函数作用,BnBinder和BpBinder区别。
  6. gradle中buildToolsVersion和TargetSdkVersion的区别是什么
  7. 手机适配一些方案
  8. hashmap的实现原理
  9. 静态方法是否能被重写
    这些大概聊了1个半小时,开始的时候还有些紧张,慢慢聊开了,就好多了,面试官的语速有点快,老是需要面试官重复一遍,我也不经意间语速也变快了,不过能看出来面试官还是很厉害的。

二面

  1. 3次握手和4次挥手的原因,以及为什么需要这样做。
  2. 数据结构,搜索二叉树的一些特性,平衡二叉树。
  3. hashmap是如何解决hash冲突的
  4. 进程与线程区别
  5. 写了一个二分查找和单例模式
  6. http中的同步和异步
  7. 聊了一些项目上做的东西,问了问职业规划
    由于二面面试官不是做Android,本来面试我的人临时开会去了,所以这一轮面试没怎么问android相关知识,不过二面面试官一直是微笑,所以这一轮很轻松,更像是一起讨论问题。

面试完已经是下午4:30了,由于面试当天是星期五,而周五美团的会议比较多,所以等了会,二面面试官说三面面试官在开会,面试另约时间,我还是说这次一次面试完吧,这一等就等了2个半小时,期间hr跟我说三面面试官是个大牛。

三面

  1. 我认为Android做的优秀的几个地方,然后又根据我说的问了问比较深入问题。
  2. Android是如何进行资源管理的。
  3. java比较重要的几个特性
  4. 网络五层结构,每一层协议,由于我网络不是很好,还问了一些其他的问题(例如MAC地址和ip地址的区别等)。
  5. 为什么离开原来公司,以及职业规划,然后因为面试完大概就晚上8点了,就先让我回去,下周让hr跟我联系,我想这是应该通过面试了吧。
    美团技术还是很厉害的,从面试官的水平就可以看出来,尤其是外卖核心部门,办公环境是不错,但是感觉就是有点乱,不知道是不是因为今天面试的人很多,基本上一直有很多人来回走动,有一些嘈杂。

总结

自己对于互联网有一些小小的见解:随着资本的冷却,整个互联网市场也逐渐的冷静下来。Android应用开发从一开始能说几个四大组件的名词,能随便写个监听事件,就能拿到高达上万的月薪的时代了。归根到底并不是工作难找了,而是Android应用开发工程师这个职位已经趋于正常,再也不是没什么技术也能拿高工资的香饽饽。当然这个也不是绝对的,对于中高级的开发人员来说,市场还是比较缺少的,尤其是知名企业对于招聘员工来说,不仅要求有过硬的技术,还要求有高素质,好的教育背景等等。总的来说,高工资可以给你,但是前提条件是你要足够优秀,或者说让面试官觉得你很优秀。

其实面试过程就是一个把你自己推销给别人的过程,对于我们(毕业不久的同学,因为我毕业不到一年)来说就是要让面试官感觉你技术好,有培养价值。感慨有点多了,还是来点干货吧,大概列举一下每一轮面试的大概范围和深度,但是也不是绝对的,还是要看具体情况。

笔试

对于社招的同学来说,基本上不需要笔试,但是也有公司是需要的,例如 今日头条和网易都有笔试。笔试都是比较基础的一些知识,Java、Android等方面的,一般不会有网络,计算机等方面的笔试,一般情况下大家都能答出来。

一、二面

近一段时间的面试经历来说,一、二面的问题没有什么很大的区别(公司基本上都有3面技术面,但是也有例外,我在网易就是2面技术面。),基本上都是一线开发人员。主要考察你是否有牢固的基础知识和是否在平常开发中能熟练使用。

是否能讲解清楚你所做的项目,以及使用到的相关知识。
Android基础知识
Java基础知识,大概是多线程,线程安全,集合类,JVM,类相关知识等。
Android一些源码的阅读
优秀的第三方框架源码阅读

三、四面

一般公司都是三轮技术面,但是也有四轮技术面的,不过不多。很多公司基本上每一轮面试官都会记录他所询问的问题,以便给下一轮面试官作参考,还有就是避免对同一个知识点多次询问。所以到了这轮面试,基本上不会再询问比较基础的知识。

会从两个方面考察,
广度:比较新的技术(Rxjava,插件化等),JVM,GC,网络,数据库,Android(一般不会询问之前面试官问过的问题)。
深度:一般会通过1或2个问题来考察,例如:map接口下都有什么子类->hashmap和hashtable区别->hashmap实现原理->怎么解决hash冲突->是否了解concurrentHashmap->concurrentHashmap实现原理->volatile实现原理(concurrentHashmap读是不加锁的,使用到了volatile)。
项目中的贡献,所做的优化。
设计能力,基本上不多,这个要看面试的岗位,因为我这里面试的只是高级开发,并不是架构。
工作中的亮点和突出。

hr面

基本上到了这轮,你就算通过面试了。hr会询问一些你的经历,最主要的还是和你商定薪资待遇。在这轮,大家应该要对自己的薪资水平有一个大体的了解,一般都是在原来的工资基础上增长20%~30%的样子,当然,如果你在面试过程中表现非常优秀,也可以不受这个限制。当然如果公司诚心要你,就算你要的工资过高,hr也会委婉的告诉你,不会直接把你pass。

最后

漫漫开发之路,我们只是其中的一小部分……只有不断的学习、进阶,才是我们的出路!才跟得上时代的进步!我花一个月的时间收录整理了一套知识体系,如果有想法深入的系统化的去学习的,可以加群:797404811我会把我收录整理的资料都送给大家,帮助大家更快的进阶。


相关文章

网友评论

    本文标题:一年Android岗工作经验试水杭州,快手 美团...面经分享

    本文链接:https://www.haomeiwen.com/subject/dovbpctx.html