我的实习面经安卓开发(已拿阿里,华为,CVTE Offer)
忙过了一段时间,终于有空坐下来写一篇面经,记录一下自己前面一段时间找实习的过程和经验,希望对阅读到这篇面经的你有所帮助。
先介绍一下我的基本情况:
学校专业:本人某普通211通信工程专业本科生(非计算机科班出身)。
面试岗位:Android客户端开发工程师
面试公司:阿里巴巴,华为,CVTE
面试结果:阿里巴巴,华为,CVTE都给了Android客户端开发工程师的实习Offer。
一 阿里巴巴
阿里是内推面试的,不需要笔试。(PS:听说阿里的笔试还是很有难度的,大家找实习时可以先试试内推,只要你简历有让HR觉得有亮点的地方,还是有机会内推成功的。)阿里是我面试的第一家公司,也是最后给我发Offer的公司(PS:可见阿里的流程跑的有多慢,面过阿里的应该都有体会,官网状态卡在“面试中”巨久。。。不过大公司好像都这样,跑流程需要时间,所以大家面试完不要着急,耐心等待,该来的总会来)。阿里面试轮次是最多的,我经历了四轮(三轮技术+一轮HR),听说部分同学还有交叉面,那就更多了。好了,废话不多说,上面经。
阿里实习一面:
阿里一面是电话面试,也是我人生第一次面试,其实还是蛮紧张的。大概在内推简历投出去一个星期后来的电话,当时很多知识还在复习,准备的不是很充分。大部分公司的一面都是技术基础面,主要问的是Java基础+数据结构/算法+计算机网络+操作系统+Android基础。在这里想强调一句,基础真的很重要,很重要,很重要(重要的事说三遍)。因为大公司一般都很看重基础,只有基础扎实,才能在这个基础上深造。
阿里一面问的问题整理如下(因为过去有些时日了,我尽量凭记忆将我被问到的问题记录下来,后面的面经也是一样):
1.Activity的生命周期方法描述
2.Activity四种启动模式及其特点和应用场景
3.Service的分类,前后台,优先级,生命周期,两种启动方式及其不同
4.广播的两种注册方法及其区别
5.ContentProvider的用途
6.强弱软虚四种引用的特点和使用场景
7.自定义View的步骤,需要重写的方法和注意点
8.使用过什么框架,是不是看过底层源码,说说原理结构
9.进程和线程的区别
10.线程池技术
11.死锁的四个必要条件和如何处理死锁
12.线程同步的方法,sychronized和lock的区别等。
13.Handler和AsycTask
有些不太记得了,大概问了十多个问题,层层深入,自己也是尽力回答了。最后面试官问我最近看些什么书啊学些什么啊,简单聊了会儿天。后来面试官问我有什么问题问他,我问了一下他对我的面试过程怎么评价,他直接跟我说基础不错,一面通过了,叫我等二面通知。当时是相当开心啊。
阿里实习二面:
时隔一周之后,阿里二面来了。这次是大中午我在睡午觉,突然一个电话过来了,猝不及防。二面是项目面。二面面试官上来让我简单自我介绍之后就开始问项目。我把自己做过的项目按时间远近顺序跟面试官聊了一遍。面试官对每一个项目几乎都会就其中的一些细节提问。比如项目中使用到的框架,对框架底层源码的理解;还有项目中用到的算法,和对算法的理解和改进等。最后面试官问了我一个Http中get和post的区别,这个我复习过,所以就以为很简单的按照自己记住的几个点回答了。不过面试官貌似对我的回答还不满意,让我进一步解释为什么post比get安全,然后我又答了一通,然后他又说还有些点没有答到,让我再想想。这个问题就这样讨论了好久,到最后我好像还是没能完全让面试官对我的答案满意。然后面试官说那好今天就到这里吧,然后就say拜拜了。当时感觉这一轮面试估计要跪了,面试官甚至连让我问问题的环节都没有了。结束之后我回去搜了一大堆关于讨论get与post区别的博客,好好理解了一番它俩的区别。
阿里实习三面:
然而奇迹还是发生了,大概五天之后三面来了。三面还是项目面,不过侧重点感觉有点不同。三面面试官还是让我自我介绍完后开始聊项目,感觉气氛没有二面那么紧张,相对比较轻松。问的问题大部分也都能回答上来了。主要是聊项目,然后问了些设计模式相关的问题。对了记得还问了个Android里面手机分栏放置若干图片如何让两边总高度相差最小的算法设计题。面试完面试官说后面会有HR联系我,等HR面。到这里,三轮技术面结束了。
阿里实习四面:
HR面主要是问了一些在大学里面做项目的经历和未来规划等之类的问题,这里就不多说啦。
四面结束后过了N久才发的录用意向书,期间经历了华为和CVTE的面试。
二 华为
华为是现场面试,上研所的招聘团队来到了我们这边。先是统一在线笔试,笔试通过后性格测试。再之后短信通知让去附近的酒店面试。面试只有两面,初面+综合面。
华为初面:
初面是一位感觉很有经验的面试官,上来让我自我介绍之后看着我的简历开始让我介绍项目。在问项目的过程中穿插着基础知识的提问。刚开始还是比较紧张的,但随着对问题的深入讨论,就忘记了紧张了。之后让我用笔纸画项目的框架图和算法流程。然后问了一些基础问题,整理如下:
1.Android图片缓存的优化
2.遇到的OOM场景如何解决,和SOF的区别;
3.Android滑动冲突的处理;
4.项目中遇到的问题,如何解决的;
5.最有成就感的一次开发体验。
还有一些问题不太记得了。面试过程挺顺利的。
华为综合面:
二面是一位看起来比较有气场的面试官,后来得知是部门的主管。上来还是简单自我介绍后开始聊项目,对项目的深入程度很高,对很多细节进行了提问。问完项目之后聊了聊未来的规划啥的。面试官是很友好的,跟我握了两次手,直接告诉我通过了面试。就这样比较顺利的拿到了华为的实习Offer。
三 CVTE
CVTE也是先笔试,然后三轮面试(两轮技术面+一轮HR面)。CVTE的笔试不是很难,但是编程题的编辑框除了语法着色之外如同一个Windows记事本,不能用本地IDE,而且考试页面没有调试按钮(也就是完全不知道敲完代码后输出会是什么,连试运行都没有),敲完代码后纯人工检查一遍然后提交了。本来以为估计悬了,不过还是接到了面试通知。
CVTE实习一面:
一面是电话面试。问的是Android基础+Java基础+数据结构。问到的一些问题整理如下:
1.Activity的生命周期
2.Service的生命周期和两种启动方法,使用经历等
3.SQLite的使用
4.Handler机制原理
5.Android常用的几种布局和特点
6.如何自定义View
7.ListView的优化,图片缓存等
8.HashMap的底层源码看过吗?如何实现一个HashMap
9.Java虚拟机内存模型
10.GC算法
11.了解哪些设计模式,口述如何实现单例模式
12.java1.8的新特性
大概是这些,主要都是些基础问题。面完很快微信公众号查到面试通过了。
CVTE二面:
二面是视频面试。约了一个下午。上来用的是牛客网的远程面试平台。上来简单聊了几句,问问项目,然后问我对音视频处理的算法有没有了解。之后就开始让我现场敲代码,(PS:他可以远程桌面看到我这边敲的过程)出了一道字符串处理相关的算法题,刚开始还是挺紧张的,因为那个网页版的IDE不太好用。大概过了一会儿敲完,再简单聊了几句就结束了。总体还算顺利。
CVTE三面:
三面是HR面,CVTE的HR面问的问题比较多,比如对未来五到十年的规划,成长的经历,对加班的看法,对CVTE的了解等等。对了,面试前还有一份问卷要做。面完大概三天后告知通过。就这样CVTE的实习Offer也Get了。
总结:三月份开始,四月份结束。这历时一个多月的春招找实习之旅就结束了。。在这之前的自己没有过实习经历,没有过面试经验。这段时间的面试过程还是挺受益匪浅的。自己总结了一下,面试成功=平和心态+扎实基础+项目经验。技术基础和项目经验是硬实力,那么平和自信的心态和良好的沟通则是软实力。机会是留给有准备的人的,一路走来,自己也是不断成长,不断准备不断学习然后不断挑战,人生本来也是如此。找实习找工作是一场战役,一次挑战,如果阅读到这里的你也正在这场战役之中,愿君积极准备,调整好心态,相信大家最后都会拿到Offer的。加油,共勉!
#阿里巴巴##华为##广州视源电子科技股份有限公司##安卓工程师#