写点什么

Android 面试反思:开发 5 年 crud 背景,惨遭字节阿里双挂,网站开发前后端分离

用户头像
Android架构
关注
发布于: 刚刚
  • 算法:


给定一个数 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 协


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


议请求过程


面试结束后已经中午吃饭了 面试官让等一会 结果又让等通知


等了有一个星期邮件通知感谢


阿里(三面挂)



初面(电话简单聊了二十分钟)

  • 项目经历 主要做过哪些业务功能

  • 性能优化

  • 有遇到过哪些比较难的问题

  • 讲一下 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 基础相关知识:


关于一些基础知识的梳理




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 动画


10.Android 文件缓存方法


11.Android 长连接,怎么处理心跳机制


12.Asset 与 raw,res、drawable


13.AsyncTask 原理与使用


14.Bitmap 相关


15.ContentProvide 用法


16.IntentService


17.Json 相比 XML 优劣势,protobuf


18.Looper、Handler、MessageQueue


19.Merge 与 ViewStub 布局标签


20.OkHttp 原理解析


21.Service 相关


22.Sqlite 基本操作


23.UIL 原理解析


24.Volley 原理解析


25.Zygote 进程启动过程


26.启动 Activity 的集中方式


27.如何保证 Service 不被 kill


28.如何加速启动 Activity


29.怎样退出终止 App


30.插件化原理


31.注册广播的两种方式


32.热补丁技术概括


33.自定义 View(所有 View 知识)


34.通过自定义 Gradle 插件修改编译后的 class 文件


数据结构:


1.各种排序算法复杂度对比


2.排序算法


3.数据结构基本概念及复杂度分析


操作系统:


1.IPC 集中通信方式


2.什么是虚拟内存


3.死锁的必要条件,怎么处理死锁


4.段储存、页储存、段页储存


5.虚拟地址、逻辑地址、线性地址、物理地址的区别


6.进程与县城


7.银行家算法

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Android面试反思:开发5年crud背景,惨遭字节阿里双挂,网站开发前后端分离