2018届校招Andoid开发工程师总结--笔经面经

校招基本告一段落,今天就来把我记忆比较深刻的一些笔经面经分享出来。

笔经

在校招中大厂基本都是要线上笔试的,其他一部分会在宣讲会之后笔试。

对于宣讲会,从我个人的经历来看,如果一般只是宣传公司的政策之类的东西的这种,有时间的话可以去看看,这个其实去的意义我个人觉得不太大,很多必要的东西是在网上可以查到的,再说了你也不会因为一场宣讲会就决定去不去投他们公司,校招无非就是广撒网,自己看得上的喜欢的都投就是了...

线上笔试

阿里、腾讯、京东、网易、小米等等大厂都是线上笔试,而且相比而言我列举的这几个的笔试时间比较早,差不多在8月底到9月中旬,想投大厂的肯定要早早准备的;

线上笔试大部分的公司都会选择两个平台,一个是牛客,一个是赛码,这两个平台也有很多大公司历年的真题,所以刷题是必须的。

一般情况,线上笔试会有单选题、多选题、填空题、简答题、算法题这些题型;我做的最多的是单选题、多选题、算法题这种组合的

选择题

选择题主要的考点是Java、Android、网络基础等、当然还会有算法,我做过的一般都会有由二叉树的前序、中序推后序,快速排序第一遍排完的结果等;另外部分大厂在选择题还会有c++的题,这个我是真的就本科学了点儿皮毛,所以笔试的时候好多都是蒙的;

算法题

我认为校招里算法比较重要的,大公司很看重,这个可以在牛客、赛码上不断刷题刷经验就好,个人的经历感觉如果能百分百AC的话,笔试一般都能通过
(也有例外的,得说一说这个有很多款app产品的奇葩公司,具体名字还是不透露了。首先给了一个从来没听说过的平台做笔试,但是我点进去做了一道题之后就进不去了,然后官方发信息说网站被黑,会后续安排第二次笔试,到了通知笔试的那一天,一直没有接收到笔试链接,直到晚上8点我在地铁上,收到了一个邮件,结果就是这个公司的笔试链接,但是上面写的是,笔试时间是晚上六点开始,到晚上10点结束....


问号.jpg

我还是在9点钟赶回去打开电脑做了一个小时,不做不知道一做吓一跳,选择题和判断题大概有30个,这里面涉及到的知识点包括java、android、ios、js、h5、python、jquery、ajax、大数据等等,基本上现在流行的常用的技术语言都有涉及,我一度认为自己打开的方式不太对,没辙,90%是蒙的吧,然后还有两道算法题,做了四十分钟两道题AC都只有0.1,无奈交卷,然而几天后告诉我笔试通过了......好吧,什么都不说了)


03df948cc11f4340b28f00707df2744d.png

算法题的形式分两大种情况:
一种是在在牛客、赛码这种平台上,他们是允许使用本地IDE的,这样平时要是依托于智能提示的也不会有什么问题;
另一种就是其他平台的,比如我印象中腾讯的就是用的另外的一个,它在算法题是不允许切屏,必须手动一个一个敲代码,所以平时练习的话最好还是多手动一个个敲,毕竟面试的时候也会让你现场手写代码,这个时候肯定是没有智能提示的吧;

面经

  • vivo

vivo这次校招给我的感受就是效率高,周六笔试的,周日给笔试结果,周二面试,周二晚上通知面试结果,前后不超过5天,还是很佩服的。
vivo的面试在北航旁边的泰富酒店,一进去就感受到了vivo真的有钱,选了一个这么豪华的酒店进行面试;

一面
应该是个技术leader,人很好
1、自我介绍
2、介绍一下自己印象最深的项目
3、如何自学Android
4、Android多线程操作
5、Activity的生命周期
6、Android多线程的处理
7、什么是多态、写一个例子
8、写一个二分查找
9、用具体项目说一说mvp的实现
10、为什么把自己定义为项目负责人
11、在团队中有什么觉得做得不足的地方
还有一些技术问题太久可能忘了,但是问的都属于相对基础的;

二面
hr面
1、自我介绍
2、谈谈自己大学比较有挑战性的事
3、对于工作地点有要求么
4、目前其他公司的面试情况
5、朋友怎么评价你的

  • 美团

一面
主要java基础和算法(当时面的不好,好多问题记不清了)
1、写一个单例模式
2、有哪些常用的排序算法、它们的时间复杂度与空间复杂度
3、项目中什么地方用过排序算法
4、写一个选择排序
5、写一个单例模式
6、单例模式不同实现方式的优缺点
7、java的四种引用类型
8、手写算法实现字符串按空格翻转
9、优化让上述算法的空间复杂度为O(1)
10、TCP/IP是什么
11、http协议,get和post的区别
12、ArrayList与LinkList的区别,底层实现方式

  • 小米

一面
1、类的三大特性
2、怎么让一个函数返回两个int值
3、重载和重写的区别
4、说一说Handler
5、Service的启动方式
6、Activity的4种启动模式
7、用过什么设计模式
8、java的8种基本数据类型
9、抽象类与接口的区别
10、java的访问修饰符及各自的限制
11、静态嵌套类和内部类
12、写算法快速找完全二叉树的最后一个结点

二面
1、聊了聊自己做的App,问了相应的布局方式
2、Android自定义View的步骤
3、补间动画与属性动画的区别
4、有没有使用过ContentProvider
5、就自己写的博客内容提了些问题
6、Sychnorized锁对象和锁方法的区别
7、java异常的抛出相关问题
8、静态嵌套类访问权限
9、讲一讲内存的栈、堆、方法区
10、 Callable和Runnable的不同,有没有用过Future
11、写一个有关线程间通信的代码(具体记不太清)
12、Android事件传递机制

  • 今日头条

一面
1、自我介绍
2、equals()和hashcode()
3、写一个快速排序
4、写一个单例模式,多种实现方式
5、Listview的优化方式
6、对注解了解多少
7、重载和重写的区别
8、有没有看过Retrofit这些的源码
9、Android事件传递机制
10、自定义listview中侧滑菜单的过程
11、StringBuffter和StringBuilder的使用
12、java四种引用类型及其特点,使用场景

二面(这个印象特别深,人很好,技术也很厉害,不会的都给讲的很明白)
1、LinkList的底层实现细节
2、一个Activity启动另外一个Activity的过程
3、如何在启动一个activity之后,前一个activity不调用onStop()方法
4、用栈实现一个队列并优化
5、给定结点数,计算一个完全二叉树的深度,详细计算过程
6、单例模式,要求线程安全的,不断按要求优化
(这一轮基本上是属于写代码和算法优化,有一部分忘了...)

  • 猫眼

1、自我介绍
2、做过的项目介绍
3、目前的面试及offer情况
4、Activity四种启动模式
5、Activity的生命周期
6、View事件分发机制
7、讲一讲volatile关键字
8、列举写代码过程中遇到过的RunTime Exception
9、Try catch finally相应问题,try中有return的情况等
10、说一说final关键字
11、Sychnorized锁方法与锁对象的不同
12、LinkList的底层实现
13、Fragment生命周期
14、写代码,字符串反转
15、写代码,字符串比较(具体的有点儿模糊,记得答案是需要先按Asc码排序)

总结

现在确实很后悔当时面试完没有做系统地总结,现在好多都忘了,基本上每一轮面试都是一个小时左右,所以问的问题还是比较多的,大厂一般会问的比较深,注重源码和算法、面试多了就会发现这些公司问的问题好多都差不多,有些是必问的,所以总结面试、刷题真的很有必要的...

另外还是附上一些我认为比较好的android面试复习资料
Android面试题收集
Android面试知识库
Android面试之开篇
Android面试总结
Android面试一天一题-goeasyway

806实验室
2017.12.12

推荐阅读更多精彩内容