写点什么

Android 高级面试题:面试十几家公司入职外企后,掌握这几个关键点面试通过率很大

用户头像
Android架构
关注
发布于: 1 小时前

接下来再附上入职前面试几家公司的面试题:


t 讯地图

  • 算法:非递归实现二叉树前序遍历;

  • 手写:双重检查单例类(其中 volatile 关键字作用)

  • GreenDao 底层实现

  • binder 用处和原理

  • messager 用处和原理

  • Android 中的内存泄露

  • oom 原因及如何定位

  • 如何降低程序崩溃率

  • okhttp 源码理解,使用拦截器的用处和好处

  • 项目中的难点

  • 组件化、插件化

  • ExoPlayer 源码

  • 图片优化,如何压缩、如何缓存

b 度

  • 算法:检测字符串是否符合 ipv4 要求

  • 结合各种启动模式,Activity 各种情况下的生命周期

  • 多任务栈情况下的生命周期

  • 多任务栈情况下 startActivityForResult 和 setResult 有用吗

  • 同时启动两个 Activity,各自生命周期如何执行

  • 同已 service,start 之后又 bind,最后 unbind 时会执行 destroy 吗

  • IntentService 和 HandlerThread 源码

  • HashMap 线程不安全的体现

  • equals 和 hashcode 的区别

  • 方法的重写和重载

  • 重载时传入泛型不同的 list,会有问题吗

  • 泛型通配符的使用,存入本身类对象会出问题吗

  • 同一对象的两个锁,分别执行 wait 和 notify,代码执行顺序

  • 本地广播可以跨进程接受吗

  • 自己设计实现本地广播功能

  • handler 源码

  • message 的 next 方法哪些地方调用到(获取下一 message、消息池)

  • 延时处理 msg 时,native 层做了什么

  • handler 构造中传入 callback,该接口的 handlerMessage 方法的返回值有何用处

  • EventBus 中,父类对象和子类对象同时注册,有什么问题

  • EventBus 是运行时注解还是编译时注解

  • Dalvik 和 ART 的区别

  • B 站弹幕的源码

  • Mediaplayer 如何实现音画同步

a 奇异

  • Handler 的 postDealy 中的 runnable 何时添加

  • onSaveInstanceState 调用的时机,其中系统保存了什么,与 onRestore..是成对执行吗

  • SparseArray 和 ArrayMap 源码和区别

  • 线程池的饱和策略

  • Activity 的各种启动模式和 flag、对应生命周期

  • okhttp 线程池源码

  • runnable 和 callable 区别

  • 处理注解的时机(运行时和编译时)

  • 如何封装播放器

  • 播放器各状态的处理

t 条

  • 算法:递增二维数组查找

  • mvc、mvp 和 mvvm 的具体使用和区别

  • mvvm 不用 databinding 如何实现

  • glide 和 imageloader 区别

  • glide 如何做到生命周期绑定

  • 安卓中常见的内存泄露

  • 安卓中常见的 oom、如何避免

  • merge、include 和 viewstub 的使用

  • 如何实现即使通讯

t 探

  • okhttp 拦截器的作用和好处

  • 自定义拦截器添加的位置

  • okhttp 连接复用原理

  • rxjava 各操作符、map 和 flatmap 却别

  • rxjava 如何线程调度、原理

  • glide 源码

  • 手写实现图片加载

  • ijkPlayer 源码

  • 事件分发

w 吧

  • fragment 的 begin..方法在做什么

  • commit 和 commitAllowStateLoss 有何区别

  • LinkedHashMap 实现原理(单链表还是双链表)

  • HashMap 扩容的具体操作

  • Handler 源码,消息轮询会一直进行吗

  • 自定义 View,子 View 决定父 View 的大小

  • rxJava 操作符,map 和 flatmap 的区别

  • volatile 操作符的作用

  • tcp 三次握手和四次挥手

  • tcp 数据丢失怎么处理,滑动窗口

  • 播放器丢帧怎么处理

  • im 长连接如何实现

  • okhttp 连接复用如何实现

  • jvm 内存模型、垃圾回收

  • 如何判断对象是否存活

  • threadLocal 作用和原理

  • diskLruCache 的使用和源码

m 蚁金服

  • 父类 static 方法能否被子类继承、重写

  • 普通内部类和静态内部类的区别

  • 非安卓方法实现线程之间通信

  • 发生异常时,synchroized 和 lock 的区别

  • jvm 内存模型

  • AsyncTask 一个对象可以重复执行吗

  • Handler 源码

  • handler 的 poistDealy 源码

  • view 的绘制流程

  • 执行 requestLayout 时,draw 方法执行吗

  • java 和 js 互调及优化

  • 播放器编码解码

  • 弹幕流的处理

  • 如何做单元测试

  • 编译时和运行时

  • okhttp 连接复用原理

  • SQLite 批量插入和查询,如何优化

最后,面试前该准备哪些资源复习?

其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自


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


己复习到了哪个阶段就好。


这里再分享一下我面试期间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)


《Android 开发七大模块核心知识笔记》





《960 全网最全 Android 开发笔记》



用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Android高级面试题:面试十几家公司入职外企后,掌握这几个关键点面试通过率很大