2019Android阿里&腾讯&百度&字节&美团&网易&爱奇艺校招面试汇总

系列文章

  1. 2019年Android实习面试汇总
  2. 2019年Android校招面试总结
  3. 2019Android阿里&腾讯&百度&字节&美团&网易&爱奇艺校招面试汇总

基本情况

  • 2020届硕士生,Android开发岗
  • 此文主要是2019年年初春招实习的面试和正式校招面试经验汇总,最终校招拿到了腾讯,百度,美团,网易等offer
  • 主要包括阿里4面,腾讯8面,字节3面,百度3面,美团3面,网易3面,爱奇艺3面

阿里

阿里面试很喜欢问源码,优化,原理,涉及到的范围很广,还是具有一定挑战性的,以下包括阿里实习二面和校招二面,笔者都止步于二面,阿里可以去找找内推(笔者实习投递时笔试做的差,本来以为挂了,但可能因为找的内推所以还是给我面试了,后续又加了一轮笔试,校招时也是找的内推直接面试了没有笔试)。

阿里实习一面

  • 源码:Handler消息机制(具体涉及到的类 & 细节);HashMap(数据结构 & put操作具体过程,扩容时间复杂度);ArrayMap原理
  • JVM:Java内存区域划分,堆栈的区别,哪些区域线程私有,哪些共享;栈帧,Java方法调用时的入栈出栈操作
  • 并发访问:volatile原理及作用,是否具有原子性;synchronized:修饰代码块/方法/对象的区别? (单例模式DCL会不会失效?);Lock的原理
  • Android:Activity生命周期(具体执行过程,涉及到哪些类?);ANR(什么是ANR?怎么监测:运行前,运行后,线上监测?)

阿里实习二面

  • 项目:项目使用人数,有无上架商店;有无IM通讯模块;登录模块是怎么解决的;如何让千万级别用户的APP用户实时知道自己状态(APP端 & 服务器端)
  • Java:synchronized修饰方法和类有什么区别;volatile关键字作用
  • JVM:内存分配;垃圾回收算法
  • Android:事件分发机制;消息机制(为什么Looper死循环没事?怎么实现线程间通讯?);操作系统层面死循环是怎么回事;死循环一定会导致ANR麽?;View绘制流程(具体原理,包括不限于绘制三大流程)
  • 网络:HTTP缓存

阿里校招一面

  • Android:有没有遇到OOM问题,有没有遇到内存泄漏问题,怎么解决;Handler机制原理;ThreadLocal作用及原理;Activity启动到加载View过程;View绘制过程;OKHttp框架(1. 为什么选择它 2. 性能 3. 内部有哪些设计模式);EventBus框架
  • 设计模式:用过哪些设计模式
  • 实习:实习项目中遇到的难点
  • 网络:HTTP & HTTPS区别
  • 其他:为什么选择xx部门;参加的竞赛情况

阿里校招二面

  • 项目:为什么选择OKHTTP框架;图片框架?(Glide);JSON解析框架?(Gson);怎么确定技术选型;项目APP页面个数;阿里云对象存储OSS上传凭证怎么设计缓存,怎么加密(加密算法有哪些?)
  • Android:Activity生命周期,启动透明Activity生命周期,按Home键后生命周期流程;后台杀死APP后怎么恢复数据;一个APP可以多进程吗;ListView和RecyclerView区别;RecyclerView卡顿怎么排查,RecyclerView怎么实现多Type,RecyclerView的ItemView层级过深怎么优化;Android多进程;怎么设计Android线程间通信;Handler机制,子线程可以用Handler吗?
    ANR原理?
  • Java:private protected public 关键字的用法区别;
    接口,抽象类区别,抽象类要不要实现接口的方法;
    Map的线程安全,读多写少选哪个集合;
  • 网络:HTTP/HTTPS区别;TCP是什么,握手与挥手过程;长连接;服务器推送怎么实现

腾讯

腾讯面试涉及到的范围也很广,甚至问到了C++,也具有一定挑战性的,以下包括腾讯实习四面和校招四面,最终拿到了测开岗位offer,腾讯面试过程中的感觉就是很多我不太熟悉的知识点都被问到了,甚至是不知道的知识点,但整体面试官给人的体验还不错,一般会提前打电话沟通面试时间。

腾讯实习提前批一面

  • Android:四大组件是什么,轮番介绍;Fragment是什么,与Activity区别;SurfaceView与View区别,SurfaceView原理;前台服务与后台服务区别;AIDL了解么;IPC方式有哪些,哪种方式最快;Protocol Buffer了解么;APP中多进程有什么用;方法数65536怎么解决;View显示过程
  • Java:线程同步方式;死锁是什么
  • JVM:内存分配方式;堆和栈的区别;GC算法,垃圾回收;class文件生成过程
  • 计算机网络:什么是HTTP,HTTP/HTTPS区别;TCP三次握手 四次挥手过程;TCP/UDP区别;HTTP是长连接还是短连接;HTTP状态码;抓包工具,怎么抓包HTTPS
  • 设计模式:生产者,消费者是什么;命令模式
  • 数据结构:快排及时间复杂度多少;七大排序;二叉树原理;红黑树

腾讯实习提前批二面

  • C++:class与struct区别
  • 项目:介绍项目,有什么难点;竞赛用了单片机,指令级是什么
  • Java:HashMap;ArrayList,LinkedList用法有什么要注意的;注解介绍下;泛型中类型擦除是什么
  • 数据结构:线段树;B+树
  • Android:OkHttp,OkHttp使用需要注意什么;RxJava介绍下;Activity四种启动模式;一个APP怎么退出所有Activity,如果有第三方SDK Activity,又怎么退出

腾讯实习正式批一面

  • 算法题:字符串中出现频率中位数;最长公共子串问题LCS
  • 项目:OKHTTP框架
  • 计算机网络:TCP UDP HTTP区别;TCP滑动窗口;用UDP实现TCP
  • 数据库:三大范式;索引,怎么知道命中索引
  • 操作系统:进程间通讯方式;共享内存原理

腾讯实习正式批二面

  • 项目:项目介绍;内存泄漏
  • Android:OKHTTP 对HTTP与HTTPs之间的区别;HTTPs加密原理;BlueboothAdapter;Activity在AndroidManifest.xml文件中有哪些标志位,CLEAR_TOP模式,singleTop和singleTask分别的使用场景;Android存储(文件,SP,数据库[具体介绍下SQLite]);Android虚拟机与Java虚拟机之间区别
  • Java:深拷贝 浅拷贝(内存溢出or垃圾回收时有什么区别?);多线程模型
  • 数据结构:二叉树;B树(插入/删除过程)

腾讯校招提前批一面

  • 项目:项目介绍;项目实现的功能
  • 网络:介绍下HTTP协议;HTTPS公钥暴露怎么办;HTTP分段上传文件怎么保证正确;HTTP缓存
  • Java:进程 线程区别;子线程间通讯;解决死锁的办法,怎么判断发生死锁
  • 算法题:数组重新排序保证奇数偶数顺序不变,最终使所有奇数在前,偶数在后;2数/3数之和

腾讯校招提前批二面

  • 项目:项目梳理;图片压缩算法;Bitmap JPG区别;断点重传,怎么动态确定范围;
    断点下载;CRC原理
  • 设计模式:MVC优点缺点;MVP中的MVC的C实现在哪;单例模式的饿汉与懒汉的选择,使用场景
  • 网络:HTTPS加密方式

腾讯校招正式批测开一面

  • Android:Crash,ANR怎么解决
  • 数据结构:设计世界杯32强对战数据结构
  • 益智题:2个球,一共100楼找到哪一层扔下来球刚好会坏
  • 其余:介绍测开具体工作

腾讯校招正式批测开二面

  • 项目:聊细节
  • Android:图片,语音大内存数据的性能排查,定位;Handler内存泄漏问题;ART Dalvik区别;GC机制;CountDownLatch原理
  • 算法题:不使用循环,大于号,小于号等查找数组中最大值
  • 闲聊:自我优势

字节

字节面试比较注重基础,包括在线写题,数据结构,Java基础,JVM基础,操作系统等;以下包括实习3面;字节实习面试是一天内走完所有技术面试流程,每一面结束后如果通过则15min左右就开始下一轮面试,全部为视频面试。

字节实习一面

  • 项目:介绍项目
  • Java:深拷贝/浅拷贝,怎么实现深-浅拷贝,CopyonWrite;Java内存(分配->回收的详细过程)
  • 网络:TCP挥手,第三次不挥手会怎么样;HTTPs加密的解释,对称/非对称加密
  • 算法:数组A,数组B,计算A-B;0-n之间所有质数(可以先求所有合数)

字节实习二面

  • Java:线程同步问题(为什么需要同步&怎么实现同步)
  • 设计模式:单例模式(静态内部类);其他设计模式简介
  • 数据结构:排序算法,归并/快排(实现原理/平均复杂度/能否提前结束/谁性能更优),
    堆排(怎么实现调整堆结构/k个最大的数);
  • 算法题:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组

字节实习三面

  • 自我介绍:学过的专业课程;看过哪些计算机专业书
  • 操作系统:内存分配区域(Java层面回答,对象引用在堆和栈都有么?函数内部new的对象存放在哪?);用户态/内核态;中断是什么
  • 网络:计算机网络有哪几层,分别对应什么协议;IP/TCP传输的都是什么数据;DNS是什么,有什么作用

百度

百度是现场面试,一共三面没有HR面,第三面是总监面,兼顾技术面与非技术面试,百度的面试官都比较友好,一面技术问的比较细,二面重项目,三面是聊天居多。

百度校招一面

  • 项目:项目介绍;项目中的编码规范
  • Android:Android四大组件安全性;Activity启动模式;IntentFilter匹配规则,action和category区别;Handler阻塞为什么不卡死;事件分发机制,onTouchEvent返回false处理流程, dispatchTouchEvent返回false处理流程;Looper是什么;对象池,手写对象池实现;ContentProvider原理;sp支持跨进程么,怎么解决跨进程,怎么实现进程同步;
    帧动画实现: 100张图,200ms显示一张,读取一张图要400ms,怎么解决避免卡顿;Bitmap内存复用限制条件
  • 操作系统:线程时间片分配原理

百度校招二面

  • 项目:梳理项目;项目难点;项目中技术框架
  • 算法题:手写二分法;电梯状态机设计
  • 其他:优缺点;专业

百度校招三面

  • 算法题:最长公共子串
  • Android:ART虚拟机类加载机制;okhttp原理;热修复原理
  • 其余闲聊:优点缺点;大学遗憾;作为班长组织了哪些活动;长期坚持的事情;专业去向

美团

美团面试是现场一天面完,技术面试一共两轮,最后有一轮HR面试,回忆起来似乎问的问题不是特别多,但都比较开放,聊的比较深入,技术一面直接打开美团APP聊相关页面设计实现,这种方式还是比较新颖的,二面则是聊项目比较多,问很多项目中具体实现细节。

  • 项目:实习项目;项目最难点;项目中技术选择;阿里云对象存储OSS的STS凭证设计
  • Android:Lint工具是编译期的吗,原理;美团首页设计具体实现;
    RecyclerView多Item的难点;
  • 设计模式:MVP MVVM使用场景
  • HR:现在有什么offer;选择offer依据;聊一聊怎么解决公司内沟通问题

网易

网易技术面试一共四轮,三轮技术,一轮HR,前两轮视频面试,后两轮现场面试。网易技术一面二面以基础居多,聊的都是写代码会遇到的问题,比较细,三面是比较深入的,聊了很多情景题,比如日志系统的设计的全方面,包括效率,安全等等。

网易校招一面

  • 项目:介绍实习期间解bug映像最深的
  • Android:事件分发传递过程,onTouchEvent返回flase怎么办;怎么设计缓存;Android数据持久化,数据库怎么批处理(原理);SP支不支持多线程,SP怎么实现多线程;View绘制过程;Handler消息机制
  • Java:B线程怎么实现等待A线程完成工作;线程怎么结束工作,Java结束线程的三种方法;Java线程哪些方法支持中断;设计一个有限资源的请求;怎么设计对象池(对象的存与放回);线程池的线程什么时候创建;Java中的锁,可重入锁性能
  • 算法题:两个数组交换一个值,让和相等,找到这两个值

网易校招二面

  • 项目:实习期间工作内容;参与的项目;实习期间解的bug;参与的编程规范说一下;Lint工具了解吗
  • 设计模式:单例模式
  • Android:进程间通信方式(与linux进程间通信区别);Socket怎么验证安全性;广播(全局 本地区别);怎么实现文件的多进程通讯(A进程改了文件怎么通知B进程读取);二级缓存怎么设计(网络 数据库 view间关系);volatile关键字具有原子性吗
  • View:Activity生命周期,onSaveInstanceState onRestoreInstanceState区别,调用时机,广播注册应该在Activity哪个生命周期里,怎么统计Activity onCreate的次数;Fragment与Activity区别,Fragment生命周期管理,Fragment与ViewPager怎么解决重复加载;View绘制过程,MeasureSpec的三种模式;Framelayout LinearLayout ReativeLayout中分别设置Button在右下角;margin padding区别,gone invisible的区别;requestLayout、invalidate与postInvalidate区别;Android动画怎么取消循环动画,repeat模式;drawable与view区别,有哪些drawable

网易校招三面

  • 项目介绍
  • Android:图片传输过程中URL加上大小以节省流量,如果忘记加怎么办,如果ImageView是wrap_content怎么设定大小;图片相关缓存,编码,内存复用,格式(svg等);
    drawable mutate是什么;okhttp 桥接拦截器和缓存拦截器;设计自定义DNS解析器
  • 设计题:有没有看过开源打点框架;打点系统设计,写日志文件过程中会有buffer,此时进程被杀怎么办,打点日志被用户篡改怎么办,怎么保证日志安全性,怎么保证日志没有被重复传
  • 其余:磁盘内存映射原理;平时开发有没有遇到过复用问题;最近了解了什么Android新动向;自己学习计划

爱奇艺

爱奇艺一面二面还是以基础为多,三面是总监面会深入聊一下原理问题,而且也比较细节。

爱奇艺实习一面

  • 项目:介绍实习项目;分析内存泄漏,线程同步的问题
  • 计算机网络:HTTP/HTTPS区别
  • Android:OkHttp框架(里面有那些设计模式);如何终止一个线程

爱奇艺实习二面

  • 项目:介绍项目;内存泄漏的来源,有没有做过优化
  • Android:Service的两种启动方式,区别在哪;性能优化有没有做过
  • Java:手写单例模式
  • 算法:删除链表中一个节点

爱奇艺实习三面

  • 项目
  • Java:public关键字作用;.java文件名怎么确定;外部类最多有几个,内部类最多有几个,内部类支持嵌套么;线程池怎么给新建的线程设置名字,线程池种类;
    注解的使用
  • Android:Activity的启动模式,生命周期,Activity A->B的生命周期;Handler中怎么实现Looper和线程绑定,一个线程最多有几个Looper,
    多个Looper报的异常,消息阻塞再次唤醒是什么机制;ThreadLocal是什么

最后

高频面试题总结

  • Android四大组件,Activity生命周期,Fragment
  • Handler,Looper,ThreadLocal,事件分发机制,View绘制过程,Activity启动过程
  • 内存泄漏,OOM,图片加载,ANR,ART与Dalvik虚拟机
  • 多线程,多进程,死锁
  • HTTP、HTTPS、TCP、UDP
  • HashMap及其余Java集合
  • 内存分配,回收算法,GC,堆栈区别,类加载机制
  • volatile,synchronized,Lock
  • MVC,MVP,MVVM,单例模式,观察者模式

面试心得

  • 面试首先一般都会有个自我介绍,可以事先准备下1-2min的自我介绍
  • Android岗位面试内容较广,需要做到各方面知识都要了解,在了解的基础上不断深耕
  • 现场面试的体验一般优于电话or视频面试,因为面对面交流更有效清晰
  • 至少做一个拿的出手的项目,一是面试时可以聊起来,二是简历有干货,三是通过做项目可以熟悉那些开源工具
  • Android岗位一般算法题要求不高,刷完《剑指offer》大部分就能应对了

建议

  • 主要针对非科班同学:最好系统的看下操作系统和计算机组成原理,推荐清华大学陈渝的操作系统公开课,因为看完操作系统后才能系统的认识计算机的原理,能更好的从底层去认识上层
  • 多看源码,包括Java层的代码在JVM中的实现源码(如synchronized的实现源码),Android Framework的源码(更好认识Android层的实现),Android开源库源码(OKHttp,Retrofit,RxJava,EventBus,Glide,Gson等等,更好的学习优秀开源库源码,做到用的熟,懂原理)
  • 多问自己为什么,比如两个技术点优缺点分别在哪,各自的使用场景(如单例模式下饿汉与懒汉的优缺点,使用场景),这样才能更契合实际应用开发,针对不同场景使用不同技术点
  • 及时复盘总结面试中遇到的问题,分为两方面,一是知道但不能深入的,这种需要继续多看多总结,另一种是没接触过的,这种可以先了解下,万一面试又遇到了,可以回答下了解到的,之后再去深入总结(毕竟时间有限,不可能面面俱到,只能不断学习总结)

资源

Java书单

Android书单

  • 《Android开发艺术探索》:Android四大组件原理,部分Framework源码,图片高性能加载,多进程Binder原理等等
  • 《Android源码设计模式》:设计模式,Android源码中采用的设计模式;MVC,MVP,MVVM
  • 《Android进阶之光》:各种Android开源框架源码解析
  • 《Android进阶解密》:Android系统启动流程,Activity启动流程,JNI,ART虚拟机,热修复,插件化等原理
  • 《Android Gradle权威指南》:了解Gradle原理

算法书单

  • 《大话数据结构》:基本讲了常见数据结构,且图文丰富,清晰易懂
  • 《剑指offer》:刷题

操作系统书单

  • 《操作系统概念》:操作系统基础概念

计算机网络

  • 《图解HTTP》:图文丰富,简单易懂介绍HTTP协议

优秀博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容