太牛了!2020Android阿里&腾讯&百度&字节&美团校招面试汇总

本文是一位2021届硕士生的Android开发实习和校招面试经验分享,涵盖了阿里、腾讯、字节跳动、百度和美团的面试经历。面试涉及源码分析、JVM、并发、Android系统、网络、设计模式等多个方面,强调了扎实的基础知识和项目经验的重要性。面试过程中,算法题要求不高,但Android相关知识需广泛且深入。作者指出,具备出色的技术能力是应对互联网寒冬的关键。
摘要由CSDN通过智能技术生成

#基本情况

2021届硕士生,Android开发岗

此文主要是2020年年初春招实习的面试和正式校招面试经验汇总,最终校招拿到了腾讯,百度,美团等offer

主要包括阿里4面,腾讯实习4面和校招4面,字节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依据;聊一聊怎么解决公司内沟通问题

#面试心得

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

作者:Hengtao24
链接:https://www.jianshu.com/p/7a8a10f541c8
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕!我这边专门针对Android开发工程师整理了一套【Android进阶学习视频】、【全套Android面试秘籍】、【Android知识点PDF】。如有需要获取资料文档的朋友,可以点击我的GitHub免费获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值