程序员|Android面试反思(开发5年crud背景,惨遭字节阿里双挂,Android已死)

  • TextView的绘制流程 怎么处理换行
  • 性能优化都做了哪些
  • Shareperference实现机制
  • 插件化原理
  • ViewRootImpl都做了哪些事情
  • 都有哪些window类型 内部是怎么处理window不同权限的
  • 算法:
给定一个数N 如23121 给定一组数字A如{2,4,9}; 求由A中元素组成的、小于N的最大数,如小于23121的最大数为22999
涂鸦智能(现场面试两轮)
一面
  • 讲一下Handler消息机制
  • 项目中都做了哪些性能优化
  • 讲一下绘制流程 View和ViewGroup的区别
  • 事件分发流程是怎么执行的
  • http的请求过程
  • HashMap原理 put过程、扩容 1.7 1.8区别ConcurrentHashMap原理
二面
  • MQTT协议的特点 底层原理
  • Activity启动流程 为什么zygote使用socket通信
  • 插件化原理 遇到过什么问题 怎么解决的
  • classLoader双亲机制
  • 模块化通信 自己设计一套怎么实现
  • tcp协议请求过程
面试结束后已经中午吃饭了 面试官让等一会 结果又让等通知
等了有一个星期邮件通知感谢
阿里(三面挂)
初面(电话简单聊了二十分钟)
  • 项目经历 主要做过哪些业务功能
  • 性能优化
  • 有遇到过哪些比较难的问题
  • 讲一下MQTT协议
  • 注解和反射原理
  • HashMap内部实现原理 怎么hash的 怎么扩容 1.7、1.8什么区别 多线程会导致什么问题
  • 项目中人脸识别用到了哪些业务场景
这一面应该是筛选下简历 不算正式面世
一面(电话面试四十分钟)
  • 介绍自己做过的项目 处理了什么问题
  • ListView和ScrollView的冲突怎么处理
  • Handler怎么处理延时消息的 消息队列中死循环在native层都做了什么处理
  • 为什么用单Activity多Fragment 怎么处理传参
  • 同事代码可能导致内存泄漏和ANR 在代码层面怎么避免
  • okhttp拦截器实现 连接池的复用策略 有实现http2.0吗 okhttp和volley的区别 从实现策略讲
  • 讲一下eventbus实现原理
  • glide的三级缓存是怎么执行的 最近使用和正在使用的缓存是怎么切换的 怎么处理bitmap复用的 如果自己实现一个该怎么处理
  • 模块化怎么通信 底层怎么实现
二面(电话面试三十多分钟)
  • 介绍项目 自己处理过哪些项目痛点 怎么处理的
  • 泛型编译期信息怎么储存的 什么情况下泛型会擦除
  • MVP、MVVM优缺点
  • 与web是怎么交互通信的 这个模块怎么设计的
  • 接口 抽象类区别 可以new吗
  • JDK8的流有用过吗 解决了什么问题 写过接口的默认实现吗
  • 讲一下RN和Flutter的区别
  • 算法:查找数组中大小为x的两个数(只有一对)
三面(三十多分钟)
  • 介绍做过的项目 处理过哪些问题
  • http2.0什么特性 有哪些问题
  • 设计模式了解多少 讲一下装饰模式
  • MQTT协议解决了哪些问题 为什么
  • flutter了解多少
  • 平时都通过哪些方式学习和了解技术的
  • 都有了解其他哪方面的技术
  • 在最近的项目中学到了什么
  • 职业发展方向
  • 对于这项工作你有什么优势
中间废话有点多 面试官有点不耐烦 说尽量讲的简单些
第三天就收到邮件感谢了 -。-
阿里整体的面试难度不算太离谱,可能刚好都是比较擅长的,但面试周期较长,面到三面的时候已经多半个月了,有点力不从心;也有自己没有准备好的原因,有点懈怠了,三面问的问题大白话的偏多,奈何本人嘴笨,血压逐渐拉满,不过也算没有遗憾,深知能力有限,就酱吧~
整理了下其他面试中都涉及过的问题
网络
http请求、tcp握手回收、MQTT相关
数据结构
树、链表
Java
  • GC、Collection、Map
  • 多态
  • 多线程、各种锁机制
Android
  • 性能优化、ANR、内存泄漏
  • Activity启动模式、启动流程
  • 四大组件
  • Hanlder机制、事件分发、绘制流程
  • MVP、MVVM、插件化(hook)
  • 跨进程通信、aidl、广播、ContentProvider
  • okhttp、retrofit、glide、eventbus底层原理
Kotlin
  • kotlin反射、kotlin泛型
  • 协成原理 await、async区别
  • lateinit和by lazy区别
程序员|Android面试反思(开发5年crud背景,惨遭字节阿里双挂,Android已死)
文章图片

很多技术细节,工作中用不太到,但是面试不得不去准备,还是要把基础打牢固,下面就分享一些我梳理的一些Android基础相关知识:
关于一些基础知识的梳理
Java基础:
1.ArrayList、Linkedlist、Vector
2.BlockingQueue、CountDownLatch
3.Collections、Arrays
4.Exception与Error包结构,OOM,SOF的各种情况
5.HashCode作用
6.Java1.7、1.8新特性
7.Java NIO
8.Java基本数据类型以及相关操作
9.Java的四种引用,强弱软虚,用到的场景
10.Map、Set、List、Queue、Stack的特点与用法
11.Map相关子类区别
12.Object共有方法以及wait和sleep区别
13.Override与Overload区别
14.String相关内容学习
15.foreach与for循环效率对比
16.interface与abstract类的区别
17.static关键字
18.synchronized、lock、reentrantLock区别
19.不同清醒下return与finally的执行顺序
20.transient、volatile
21.反射原理及应用
22.反省特点以及类型转换
23.生产者消费者问题的五中实现
24.县城以及ThreadLocal
25.线程池的使用
26.解析XML的DOM与SAX以及PULL区别
27.锁的等级:方法锁、对象锁、类锁
28.面向对象的特征和含义以及多态实现原理
Android:
1.在AS中定义Gradle插件
2.Activity与Fragment生命周期
3.Activity卡顿原因
4.Activity启动过程
5.Activity四种启动模式与IntentFilter匹配规则
6.Activity的状态保存
7.Android5.0、6.0、7.0、8.0、9.0、10.0特性
8.Android内存优化方法
9.Android动画
总结
我最近从朋友那里收集到了2020-2021BAT 面试真题解析,内容很多也很系统,包含了很多内容:Android 基础、Java 基础、Android 源码相关分析、常见的一些原理性问题等等,可以很好地帮助大家深刻理解Android相关知识点的原理以及面试相关知识。
这份资料把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节;还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
这里也分享给广大面试同胞们,希望每位程序猿们都能面试成功~
领取方式:点击直达GitHub
Android 基础知识点
程序员|Android面试反思(开发5年crud背景,惨遭字节阿里双挂,Android已死)
文章图片

Java 基础知识点
程序员|Android面试反思(开发5年crud背景,惨遭字节阿里双挂,Android已死)
文章图片

Android 源码相关分析
程序员|Android面试反思(开发5年crud背景,惨遭字节阿里双挂,Android已死)
文章图片

常见的一些原理性问题
程序员|Android面试反思(开发5年crud背景,惨遭字节阿里双挂,Android已死)
文章图片

腾讯、字节跳动、阿里、百度等BAT大厂 2019-2020面试真题解析
程序员|Android面试反思(开发5年crud背景,惨遭字节阿里双挂,Android已死)
文章图片

%E9%AB%98%E8%96%AA%EF%BC%81.md)**
【程序员|Android面试反思(开发5年crud背景,惨遭字节阿里双挂,Android已死)】Android 基础知识点
[外链图片转存中…(img-aq72ujjk-1645101300610)]
Java 基础知识点
[外链图片转存中…(img-xYSDq0C0-1645101300611)]
Android 源码相关分析
[外链图片转存中…(img-zqmWt6bB-1645101300612)]
常见的一些原理性问题
[外链图片转存中…(img-PLlKXkL9-1645101300612)]
腾讯、字节跳动、阿里、百度等BAT大厂 2019-2020面试真题解析
[外链图片转存中…(img-oSyQkx6v-1645101300613)]

    推荐阅读