写点什么

真的强!借助阿里技术博主分享的 Android 面试笔记,我拿到了字节跳动的 offer

用户头像
Android架构
关注
发布于: 3 小时前
  • 线程间 操作 List

  • App 启动流程,从点击桌面开始

  • 动态加载

  • 类加载器

  • OSGI

  • Https 请求慢的解决办法,DNS,携带数据,直接访问 IP

  • GC 回收策略

  • 画出 Android 的大体架构图

  • 描述清点击 Android Studio 的 build 按钮后发生了什么

  • 大体说清一个应用程序安装到手机上时发生了什么;

  • 对 Dalvik、ART 虚拟机有基本的了解;

  • Android 上的 Inter-Process-Communication 跨进程通信时如何工作的;

  • App 是如何沙箱化,为什么要这么做;

  • 权限管理系统(底层的权限是如何进行 grant 的)

  • 进程和 Application 的生命周期;

  • 系统启动流程 Zygote 进程 –> SystemServer 进程 –> 各种系统服务 –> 应用进程

  • recycleview listview 的区别,性能

  • 排序,快速排序的实现

  • 树:B+树的介绍

  • 图:有向无环图的解释

  • TCP/UDP 的区别

  • synchronized 与 Lock 的区别

  • volatile

  • Java 线程池

  • Java 中对象的生命周期

  • 类加载机制

  • 双亲委派模型

  • Android 事件分发机制

  • MVP 模式

  • RxJava

  • 抽象类和接口的区别

  • 集合 Set 实现 Hash 怎么防止碰撞

  • JVM 内存区域 开线程影响哪块内存

  • 垃圾收集机制 对象创建,新生代与老年代

  • 二叉树 深度遍历与广度遍历

  • B 树、B+树

  • 消息机制

  • 进程调度

  • 进程与线程

  • 死锁

  • 进程状态

  • JVM 内存模型

  • 并发集合了解哪些

  • ConCurrentHashMap 实现

  • CAS 介绍

  • 开启线程的三种方式,run()和 start()方法区别

  • 线程池

  • 常用数据结构简介

  • 判断环(猜测应该是链表环)

  • 排序,堆排序实现

  • 链表反转


[](


)字节跳动




  • synchronized 用法

  • volatile 用法

  • 动态权限适配方案,权限组的概念

  • 网络请求缓存处理,okhttp 如何处理网络缓存的

  • 图片加载库相关,bitmap 如何处理大图,如一张 30M 的大图,如何预防 OOM

  • 进程保活


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


  • listview 图片加载错乱的原理和解决方案

  • https 相关,如何验证证书的合法性,https 中哪里用了对称加密,哪里用了非对称加密,对加密算法(如 RSA)等是否有了解


[](


)美团




  • MVC、MVP、MVVM

  • 广播(动态注册和静态注册区别,有序广播和标准广播)

  • service 生命周期

  • handler 实现机制(很多细节需要关注:如线程如何建立和退出消息循环等等)

  • 多线程(关于 AsyncTask 缺陷引发的思考)

  • 数据库数据迁移问题

  • 设计模式相关(例如 Android 中哪里使用了观察者模式,单例模式相关)

  • x 个苹果,一天只能吃一个、两个、或者三个,问多少天可以吃完

  • TCP 与 UDP 区别与应用(三次握手和四次挥手)涉及到部分细节(如 client 如何确定自己发送的消息被 server 收到) HTTP 相关 提到过 Websocket 问了 WebSocket 相关以及与 socket 的区别

  • 是否熟悉 Android jni 开发,jni 如何调用 java 层代码

  • 进程间通信的方式

  • java 注解

  • 计算一个 view 的嵌套层级

  • 项目组件化的理解

  • 多线程断点续传原理

  • Android 系统为什么会设计 ContentProvider,进程共享和线程安全问题

  • jvm 相关

  • Android 相关优化(如内存优化、网络优化、布局优化、电量优化、业务优化)

  • EventBus 实现原理


[](


)网易




  • static synchronized 方法的多线程访问和作用,同一个类里面两个 synchronized 方法,两个线程同时访问的问题

  • 内部类和静态内部类和匿名内部类,以及项目中的应用

  • handler 发消息给子线程,looper 怎么启动

  • View 事件传递

  • activity 栈

  • 封装 view 的时候怎么知道 view 的大小

  • arraylist 和 linkedlist 的区别,以及应用场景

  • 怎么启动 service,service 和 activity 怎么进行数据交互

  • 下拉状态栏是不是影响 activity 的生命周期,如果在 onStop 的时候做了网络请求,onResume 的时候怎么恢复

  • view 渲染


[](


)拼多多




  • 数据结构中堆的概念,堆排序

  • 死锁的概念,怎么避免死锁

  • ReentrantLock 、synchronized 和 volatile(n 面)

  • HashMap

  • singleTask 启动模式

  • 用到的一些开源框架,介绍一个看过源码的,内部实现过程。

  • 消息机制实现

  • ReentrantLock 的内部实现

  • App 启动崩溃异常捕捉

  • 事件传递机制的介绍

  • ListView 的优化

  • 二叉树,给出根节点和目标节点,找出从根节点到目标节点的路径

  • 模式 MVP,MVC 介绍

  • 断点续传的实现

  • 集合的接口和具体实现类,介绍

  • TreeMap 具体实现

  • synchronized 与 ReentrantLock

  • 手写生产者/消费者模式

  • 逻辑地址与物理地址,为什么使用逻辑地址

  • 一个无序,不重复数组,输出 N 个元素,使得 N 个元素的和相加为 M,给出时间复杂度、空间复杂度。手写算法

  • .Android 进程分类

  • 前台切换到后台,然后再回到前台,Activity 生命周期回调方法。弹出 Dialog,生命值周期回调方法。

  • Activity 的启动模式


[](


)京东




  • RxJava 的功能与原理实现

  • RecycleView 的使用,原理,RecycleView 优化

  • ANR 的原因

  • 四大组件

  • Service 的开启方式

  • Activity 与 Service 通信的方式

  • Activity 之间的通信方式

  • HashMap 的实现,与 HashSet 的区别

  • JVM 内存模型,内存区域

  • Java 中同步使用的关键字,死锁

  • MVP 模式

  • Java 设计模式,观察者模式

  • Activity 与 Fragment 之间生命周期比较

  • 广播的使用场景

  • Bitmap 使用时候注意什么?

  • Oom 是否可以 try catch ?

  • 内存泄露如何产生?

  • 适配器模式,装饰者模式,外观模式的异同?

  • ANR 如何产生?

  • String buffer 与 string builder 的区别?

  • 如何保证线程安全?

  • java 四中引用

  • Jni 用过么?

  • 多进程场景遇见过么?

  • 关于 handler,在任何地方 new handler 都是什么线程下

  • sqlite 升级,增加字段的语句

  • bitmap recycler 相关

  • 强引用置为 null,会不会被回收?

  • glide 使用什么缓存?

  • Glide 内存缓存如何控制大小?

  • 如何保证多线程读写文件的安全?



[](

)字节跳动面试分享(三轮压力面)


下面的面试题我把答案整理在了文档内了,答案和解析都是面试后续进行整理和总结的,包括个人见解和思考,不完全正确,具有一定参考价值,**如果需要答案分享的可以直接去我 [CodeChina 地址:https://codechina.csdn.net/u012165769/Android-T3](


) 访问查阅。**

[](

)一面


  • 介绍项目,讲述一下项目之中遇到过的难点,你是如何解决的?

  • Activity 的生命周期和启动模式

  • 什么是内存泄漏,Android 里有哪些内存泄漏的场景,原因是什么

  • JVM 的 GC 过程,GC 的算法都有哪些

  • 进程和线程的概念,Android 里怎样实现多线程?(Thread Handler AsyncTask IntentService 等等)

  • Handler 的原理和使用

  • Handler 是怎么和线程绑定的(Looper),为什么 Looper.loop()要设计成死循环

  • Android View 绘制流程,当一个 TextView 的实例调用 setText()方法后执行了什么?

  • 热修复的原理,你都了解过哪几种热修复框架

  • OkHttp 的原理

[](

)二面


  • Android 线程池设计原理

  • Android 如何实现多进程,应用场景是什么

  • Android 的 IPC 机制(Binder)

  • Binder 的大体设计模式

  • RemoteViews 实现和使用场景

  • RecyclerView 绘制步骤和复用机制

  • EventBus 源码和设计模式

  • 怎么解决用户高频点击打开新 Activity 导致的多实例问题(Activity 启动模式)

  • 怎么判断两个无环单链表是否相交

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
真的强!借助阿里技术博主分享的Android面试笔记,我拿到了字节跳动的offer