2018 Android春招实习面试经验

2018 Android春招实习面试经验

Android实习面试岗位,只面了这几家,过了头条,阿里,腾讯,美团挂

美团

美团面试问的还是很全面的,项目,Java,Android,计算机网络,操作系统全都覆盖到了.

  1. 自我介绍
  2. 技术规划
  3. 学习途径
  4. 介绍一个挑战最大的项目
  5. 常见的排序算法,实现思路
  6. 多线程,同步机制,synchronized底层原理(代码块和修饰方法的机制的不同,monitorIn,monitorOut,对象头信息)(这个问题答的不好。。修饰方法的时候当时没记起来)
  7. volatile关键字,happen-before原则
  8. 线程的状态有哪些,关系和区别
  9. 进程调度的算法,优点和区别
  10. 虚拟内存是啥?为啥会有虚拟内存,然后面试官问页面置换算法
  11. LRU算法,LRUCache实现
  12. TCP协议的连接过程,断开过程,为啥握手是三次,挥手四次(握手的时候服务器合并一个同步和确认,这个当时没答好)
  13. IP协议,和TCP的关系
  14. DNS协议原理,迭代,递归。DNS劫持怎样避免
  15. List Set Map区别,ArrayList,LinkedList实现,HashSet,TreeSet实现,HashMap实现。(说到我绝望。。。最后说到红黑树,说不下去了)
  16. 类加载的过程。。。(加载,验证,准备,解析,初始化。。。)双亲委托机制
  17. 垃圾回收机制。(怎样确认对象可回收,回收的算法,对象的升级,分配担保。。)感觉这个问题已经是面试必问了。。
  18. 讲两个Android你最熟的知识点(当时不知道说啥,然后面官说,比如消息机制啊,事件分发机制啊。。。然后我就说了这两个
  19. 你有没有啥想问我的

全程70多分钟,面完话都说不出来了。。。问题都很常规,没啥特别难的。然后面试官说他这里是过了,让我等HR联系。。。然后就再也没有消息了

阿里

一面

面试官感觉不是搞Android的,Java问的也不多

  1. C++内存管理机制(嗯。。还记得点点,对比Java的说了下)
  2. 你设计一个服务端响应算法
  3. Android适配 怎么搞,说错了一个地方,面试官好像不知道
  4. Java的容器类,List,Map具体实现
    问了一些底层的东西,记不得了
    记不得了。。。

二面

也不是做ANDROID的

  1. 自我介绍
  2. 实现经历
  3. 学校经历,做了啥
  4. 写算法,说思路,具体啥忘了
  5. 推送方案的实现,有哪些想法
  6. 怎让设计心跳机制,微信的设计了解过吗
  7. 记不清了

三面

  1. 实习经历,做了啥
  2. Android内存优化,MAT分析,dump堆栈信息,anr分析
  3. AOP的实现思路,ASM操作字节码,说下饿了么的lancet
  4. 线程死锁,场景分析,很烦。。。
  5. MVP,MVVM,MVC(缺点优点)
  6. retrofit 实现,动态代理
  7. 类加载机制过程,双亲委托机制,怎么绕过
  8. git rebase,merge,分支区别
  9. 最有调整的项目
  10. JVM,DVM区别
  11. JVM操作码?一脸懵逼
  12. 生命周期原理,产生的原理
  13. 设计淘口令
  14. 记不得了。。问的很难,面试官很牛逼

四面

很简单。。

  1. 自我介绍
  2. 项目经验
  3. JVM锁的实现机制,锁代码块和锁方法
  4. git cherry-pick
  5. 为啥不关cusor会内存泄漏(Native分配空间,垃圾回收回收不掉)
  6. databinding的设计,Android怎么实现的(注解生成器)
  7. 还有些常规问题。。记不得了
  8. 和面试吹逼,聊人生

头条-抖音

一面

一个问题没问,手写两个算法题

1. 两个数组,判断一个是否是另一个的子数组
int[] src = {1, 2, 3, 4, 5}
int[] data1 = {2, 3, 4}
int[] data2 = {1, 4, 5}
data1 是子数组, data2不是
2. 一个数组,前面部分是 若干个负数,中间部分是若干个零,最后部分是若干个正数,求最后一个0在数组中的位置

二面

  1. Http 状态码哪些,含义
  2. Http 请求头
  3. TCP三次握手的原因,为啥一定挥手是四次
  4. 拥塞控制,流量控制
  5. DNS的工作原理
  6. Java的类加载机制
  7. 事件分发
  8. 滑动冲突
  9. 热修复框架原理(几大套路,顺手喷了一手美团的Robust),代码修复,资源修复
  10. 记不得了

三面

  1. 介绍项目
  2. Handler源码,实现,扯了点底层C++
  3. 进程线程区别
  4. 最近看哪些书
  5. Binder底层
  6. EventBus实现
  7. 学习新技术的途径
  8. Activity生命周期,各个周期做什么
  9. 手写代码吃苹果,类似青蛙跳台阶。。。
  10. 手写代码判断一颗二叉树是否是平衡二叉树
    记不得了

即刻App

全是问api,不想写了,没意义

腾讯IEG-TIMI

一面(小组leader面)

腾讯最开始找了网校的一个学长内推,但是提前批都没人捞简历,面都没有面过,查状态就已经是不合适了。本来都准备放弃了,接到了IEG一位面试官的短信,然后约好了面试。总体感觉没啥难度,应该类似于阿里的简历评估面吧。

  1. 实习时间
  2. Android四大组件是啥?Activity的生命周期,几种状态的区别,问的很细很细
  3. 启动模式
  4. ActivityContext , ApplicationContext 的区别
  5. startService bindService区别
  6. 优化内存的意义
  7. View的绘制流程(扯了点底层渲染),流畅度。60帧是真么来的,16.66ms,渲染周期
  8. 内存区域,Java垃圾回收机制,Android组件回收顺序
  9. 四种引用类型,区别,作用
  10. HashMap源码实现,1.8优化,扩容算法
  11. 常用的设计模式==> Android中的应用,结合源码扯了下
  12. 聊项目,掌邮,开发流程,日活,Crash率
  13. 启动优化
  14. 数组找是否两数和为某一值,秒杀。。
  15. 一个阿拉伯数字你要转换成汉字,算法,边界条件。eg:1001–>一千零一
  16. 比赛项目,写过后端?Java:Spring,SpringBoot,说下AOP,Python:Flask

二面(部门老大)

  1. 自我介绍
  2. 实习经历,做了啥
  3. 掌上重邮,网校经历
  4. 从浏览器输入一个url,回车,发生了啥,详细说说(这个问题说了估计15分钟吧,http,ftp,dns,tcp,ip,缓存,浏览器渲染,服务端渲染和浏览器渲染的区别。。。)
  5. 弱网下,网络请求有问题,有啥问题,分析下

  6. 感觉你写过前端?说下知道的框架,Vue(直接说知道没咋用过)React,ReactNative的实现原理,和weex对比,diff算法

  7. 会去了解新技术吗?举点例子,Kotlin协程,AAC

三面(总监面)

  1. 最能代表你技术的项目,最难的部分
  2. 掌上重邮客户端怎样保证课表数据有缓存的同事,展示最新数据
  3. 图片下载用了开源库,讲下原理,优点缺点
  4. 学习成绩,哪些学科学的最好
  5. 怎么学习,举几个体现你热爱技术的例子
  6. 什么时候接触Android,学习途径
  7. 怎么平衡网校工作和学习的时间
  8. 为啥没参加ACM
  9. 拿了哪些offer,怎么选择
  10. 然后闲聊20分钟,帮我分析了一波offer。。。。
  11. 会联系hr给发offer,希望来腾讯

总结

  1. 基础很重要,操作系统计算机网络
  2. 大公司不会问你api的,都是源码实现,或者场景分析
  3. 多看底层的东西
  4. 一定要有亮点:
    • 某一方面的技术牛逼(Android底层啊,音视频开发、架构设计、跨平台框架(RN,WEEX…))
    • 牛逼的开源库(Github高Star的项目,千万别刷。。有人因为这个直接挂)
    • 牛逼的学习成绩(国奖,面试官还是很看重成绩的,成绩好说明潜力不错,哎。。。)
    • 互联网公司的实习经历
    • ACM获奖经历,别拿校赛出来说事了。。有个国奖就算你开发能力不怎么样甚至很差都无所谓了
    • 博客(很有影响力的那种)
  5. 互联网公司的实习经历很重要,大部分面试官会和你聊这些
  6. 项目经历,一定要是自己做过的,不然被问哭
  7. 沟通能力,学会引导面试官,千万别装逼,会死的
  8. 面试结果 = 技术实力 * 0.4 + 运气 * 0.3 + 沟通能力 * 0.3。 不是每轮面试运气都好,提升技术实力和沟通能力是最重要的