应届毕业生Android面试经验小谈

前言
2016年开始接触Android,从刚开始接触就不断地听到Android市场饱和工作难找等消息。 虽然当时也非常迷茫,不过由于第一次深入接触编程语言,再加上自己的一点兴趣,就一直坚持下来了。
通过两个月的面试经历,确实发现Android岗位比较少,而且通常要求比较高,不仅需要 Android 开发经验,往往还需要会React Native,JavaScript等,甚至还期望你能具有IOS开发经验。
不过作为应届生还是有些优势的,那就是一些一线的互联网公司还是比较看中个人基础以及发展潜力的,所以如果能在自己的专业方向上具有扎实的基础,1-2个实际开发项目以及个人的兴趣,还是能够找到一个满意的Android岗位的工作的。目前这些素质,自己也很欠缺,通过下面的面试经历就可以看出来,不过最起码有个努力的目标,可以好好准备为秋招做准备。

面试经验
自己大大小小投了也有20多家公司,不过经历简历筛选以及笔试淘汰,最终就经历了7家公司的面试。下面我就把自己面试中问到的问题贴出来供大家参考,一些具体项目相关的就不贴了。

阿里巴巴

阿里是3月初开始投的,是自己第一次面试大型的互联网公司,当时自己的准备也不够充分,表现不是很好,经历了三次技术面,最后挂了。

阿里一面

  • 排序,快速排序的实现
  • 树:B+树的介绍
  • 图:有向无环图的解释
  • TCP/UDP 的区别,滑动窗口,如何确保有效性
  • volatile
  • synchronized与Lock的区别
  • Java线程池
  • Java 中对象的生命周期
  • 类加载机制
  • 双亲委派模型
  • Android事件分发机制
  • MVP模式
  • Rxjava

阿里二面

  • 抽象类和接口的区别
  • synchronized与Lock
  • 集合Set实现Hash怎么防止碰撞
  • JVM内存区域开线程影响哪块内存
  • 垃圾收集机制、对象创建,新生代与老年代
  • 二叉树、深度遍历与广度遍历
  • B树、B+树
  • 消息机制

阿里三面

  • 项目介绍
  • 项目中做了哪些?主要解决的问题
  • 为什么选择Retrofit,Rxjava
  • Rxjava特点
  • 进度调度
  • 进程与线程
  • 死锁
  • 进程状态
  • JVM内存模型
  • 并发集合了解哪些
  • ConCurrentHashMap 实现
  • CAS介绍
  • 锁synchronized,lock
  • 开启线程的三种方式,run()与start()方法的区别
  • 线程池
  • 常用的数据结构简介
  • 判断环
  • 排序、堆排序实现
  • 链表反转
  • 海量数据 字典查找
  • 平时看什么书

网易游戏

网易游戏当时投的时候就没抱希望,招聘信息上明确指定只招固定的那几所学校,就随便投了,没想到笔试都没做就直接打电话面试了,不过问的问题确实很深入,结果显而易见,一面就挂了。

网易游戏一面

  • 集合
  • concurrenthashmap
  • volatile
  • synchronized与Lock
  • Java线程池
  • wait/notify
  • NIO
  • 垃圾收集器
  • Activity生命周期
  • AlertDialog、popupWindow、Activity的区别

远景能源

远景能源是一家互联网能源公司,给出的实习待遇是相当好,经室友推荐就投了简历。最后流程走完,得知挂在了二面上,大概原因就是没有拿得出手的项目,实际项目经验不足。

远景能源电话面试

  • 四大组件
  • Android中数据储存方式
  • 微信主界面的实现方式
  • 微信上消息小红点的原理
  • 做的项目,一个印象深刻的问题
  • 看的技术博客,印象深刻的

远景能源一面

  • 两个不重复的数组集合中,求共同的元素。
  • 上一问的拓展,海量数据,内存放不下,怎么求出?
  • Java中String的了解
  • ArrayList与LinkedList的区别
  • 堆排序过程,时间复杂度,空间复杂度
  • 快速排序的时间复杂度,空间复杂度

远景能源二面

问的都是一些项目问题,比较宽泛,没问具体技术点

字节跳动

字节跳动是在四月初投的,当时找了一个月,都没拿到拿得出手的offer,有点心烦意乱,就海投了一波。4.18做了字节跳动的笔试,4.25进行的视频面试。一共进行了3轮视频面试,字节跳动的面试官很好,看的出来技术是很强的,也很注重算法。三轮技术面后,hr 通知通过,给了个秋招终面直通卡,具体发不发offer两周内答复。这两天已经陆续开始发offer了,目前还没收到,可能备胎了吧。

字节跳动一面

  • 数据结构中堆的概念,堆排序
  • 死锁的概念,怎么避免死锁
  • ReentrantLock
  • synchronized
  • volatile
  • HashMap
  • singleTask启动模式
  • 用到的一些开源框架,介绍一个看过源码的内部实现过程
  • 消息机制实现

字节跳动二面

  • synchronized与ReentrantLock
  • ReentrantLock 的内部实现
  • 用到的一些开源框架,介绍一个看过源码的内部实现过程
  • Java中的异常
  • APP启动崩溃异常捕获
  • 事件传递机制的介绍
  • ListView的优化
  • 今日头条推荐新闻去重,推荐的时候去掉用户已经看过的新闻
  • 二叉树,给出根节点和目标节点,找出根节点到目标节点的路径,手写算法。
  • 模式MVP ,MVC介绍
  • 断点续传实现

字节跳动三面

  • 介绍集合的接口和具体实现类
  • TreeMap实现
  • synchronized与ReentrantLock
  • 手写生产者/消费者模式
  • 逻辑地址与物理地址,为什么要使用逻辑地址
  • volatile
  • 一个无序,不重复数组,输出N个元素,使得N个元素的和相加为M,给出时间复杂度、空间复杂度并手写算法。
  • Android进程分类
  • 前台切换到后台,然后再回到前台,Activity生命周期回调方法,弹出Dialog,生命周期的回调方法。
  • Activity的启动模式

触宝科技

触宝科技是一家上海的互联网公司,是通过实习僧上简历投递获得的这次面试机会,一共进行了两轮电话面试,最终获得了offer。触宝科技的hr人很好,时间观念很强,整个流程走的比较顺利。

触宝科技一面

  • Rxjava的作用,与平时使用的异步操作系统来比的优势
  • Android的消息机制原理
  • Binder机制介绍
  • 为什么不能在子线程更新UI

触宝科技二面

  • JVM内存模型
  • Android中进程内存的分配,能不能自己分配定额内存
  • 垃圾回收机制与调用System.gc()区别
  • Android事件分发机制
  • 断点续传实现
  • Rxjava的实现,优缺点

爱奇艺

爱奇艺也是通过实习僧上简历投递获得的机会,本来不抱希望,结果过了 10天左右约我面 试。面了大概一个小时,聊得还不错,最后第二天通知我挂了,有点不知所措,可能是实习时间达不到要求吧(只能这样安慰自己了)。

爱奇艺一面

  • Rxjava的功能与实现原理
  • RecycleView的使用、原理及优化
  • ANR的原因
  • 四大组件
  • Service的开启方式
  • Activity与Service的通信方式
  • Activity之间的通信方式
  • HashMap的实现与HashSet的区别
  • JVM内存模型,内存区域
  • Java中同步使用的关键字,死锁
  • MVP模式
  • Java设计模式,观察者模式
  • Activity与Fragment之间的生命周期比较
  • 广播的使用场景

携程

携程是3月份投的内推,结果挂掉了,后来通过笔试又获得的机会,笔试完快一个月才收到的通知,本来都快忘记了。既然通知了,就去面了。今天刚去面的,经2轮技术面,1轮hr面,第二轮技术面是总监面,主要聊了聊项目上的问题。下周一会根据排名发offer,现在暂时进入备胎池。

携程一面

  • Activity启动模式
  • 广播的使用及使用场景
  • APP中唤醒其他进程的实现方式
  • AndroidManifest的作用与理解
  • List、Set、Map的区别
  • HashMap与HashSet怎么判断集合元素重复
  • Java中内存区域与垃圾回收机制

携程二面

  • EventBus作用、实现方式、代替EventBus的方式
  • Android中开启摄像头的主要步骤
  • Github上传了哪些东西,代码量。

如上为本菜鸡面试中遇到的各类问题,希望对参与面试Android岗位的小伙伴们有一定的帮助。

你可能感兴趣的:(应届毕业生Android面试经验小谈)