写点什么

直接上干货!这些细节在 Android 面试上要注意了

发布于: 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 依据;聊一聊怎么解决公司内沟通问题

如何成为 Android 高级架构师!

架构师必须具备抽象思维和分析的能力,这是你进行系统分析和系统分解的基本素质。只有具备这样的能力,架构师才能看清系统的整体,掌控全局,这也是架构师大局观的形成基础。 你如何具备这种能力呢?一是来自于经验,二是来自于学习。


架构师不仅要具备在问题领域上的经验,也需要具备在软件工程领域内的经验。也就是说,架构师必须能够准确得理解需求,然后用软件工程的思想,把需求转化和分解成可用计算机语言实现的程度。经验的积累是需要一个时间过程的,这个过程谁也帮不了你,是需要你去经历的。


但是,如果你有意识地去培养,不断吸取前人的经验的话,还是可以缩短这个周期的。这也是我整理架构师进阶此系列的始动力之一。



成为 Android 架构师必备知识技能
对应导图的学习笔记(由阿里 P8 大牛手写,我负责整理成 PDF 笔记)
部分内容展示

《设计思想解读开源框架》


  • 目录

  • 热修复设计

  • 插件化框架设计

  • 《360°全方面性能优化》

  • 设计思想与代码质量优化

  • 程序性能优化


本文在开源项目:【GitHub 】中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

用户头像

VX公众号:编程进阶路 2020.11.28 加入

还未添加个人简介

评论

发布
暂无评论
直接上干货!这些细节在Android面试上要注意了