字节跳动Android岗面试,被“插件化,组件化”问懵,37天啃透开源框架设计思想,面试官被秀了一脸

72 篇文章 0 订阅
54 篇文章 1 订阅

**前言:**在上个月的字节跳动面试中,眼看就要拿到心仪的offer了,没想到却被卡在了三面的插件化与组件化的问题上,让我与offer仅隔一步之遥。之后痛定思痛狂找相关资料,疯狂复习,最后还是在阿里工作的朋友甩给我了一本《Android设计思想解读开源框架》,里面竟然把所有Android第三方库都整理出来了,花了一个月的时间才将它吃透,之后拿到了阿里和腾讯的offer。

本文分为三个部分:第一部分是我的面经整理,第二部分是助我收到offer的《Android设计思想解读开源框架》分享,第三部分是文末福利。

一、我的字节面经:

字节一面

1、java泛型,反射

2、进程间通信的方式,安卓中有哪些方式,为什么是基于Binder的,不用传统的操作系统进程间通信方式呢?

3、一个app可以开启多个进程嘛,怎么做呢,每个进程都是在独立的虚拟机上嘛

4、异步消息处理流程,如果发送一个延时消息,messagequeue里面怎么个顺序,messagequeue是个什么数据结构

5、广播的种类,注册的方式,以及不同注册方式的生命周期。

6、局部广播和全局广播的区别分别用什么实现的。

7、activity和service的通信方式

8、进程和线程的区别

9、并发和并行分别是什么意思,多线程是并发还是并行

10、安卓11有什么新的特性。

11、HTTPS过程。

12、DNS解析过程,如果服务器ip地址改变了,客户端怎么知道呢

13、算法:二叉树的右视图。

字节二面

1、介绍一下所有的map,以及他们之间的对比,适用场景。

2、一个按钮,手抖了连续点了两次,会跳转两次页面,怎么让这种情况不发生。

3、一个商品页一个商详页,点击商详页的一个关注按钮,希望回- 到商品页也能够显示关注的状态,怎么做

4、项目中定时为什么用AlarmManager,不用postDelayed

5、项目中后台网络请求为什么用service不用线程

6、安卓的新特性。

7、内部类会有内存泄漏问题吗 内部类为什么能访问外部类的变量,为什么还能访问外部类的私有变量。

8、算法: 单链表判断有无环。

字节三面

1、介绍项目用到了contentprovider,然后问ContentProvider的生命周期,application,activity,service,contentprovider他们的 context有什么区别。

2、内存溢出和内存泄漏,提到了bitmap

3、然后问下载一个图片的时候直接下载了一个5g的图片,不压缩一定会产生OOM问题,那么怎么去获取这个图片的长宽呢,或者说这个图片的大小的大小在你没下载之前如何得到。

4、插件化框架描述:dynamicLoadApk为例子

5、热修复:Andfix为例子

6、为什么要项目组件化

7、如何组件化

8、组件模式和集成模式的转换

9、library依赖问题

10、功能组件和Common组件

11、组件之间AndroidManifest合并问题

12、工程的build.gradle和gradle.properties文件

13、

你没有看错,没有hr面了,到了第三面就被这些问蒙了。

由于资料文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容:有需要完整版资料文档的朋友可以点此处免费获取。

二、Android设计思想解读开源框架分享

第一章:热修复设计

1、AOT/JIT & dexopt 与dex2oat
2、热修复常见问题之CLASS_ISPREVERIFIED 问题
3、热修复原理
4、Tinker 的集成与使用(自动补丁包生成)

第二章:插件化

1、Class 文件与Dex 文件的结构解读
2、Android 资源加载机制详解
3、四大组件调用原理
4、so 文件加载机制
5、Android 系统服务实现原理

三:组件化框架设计

1、阿里巴巴开源路由框——ARouter 原理分析
2、APT 编译时期自动生成代码&动态类加载
3、Java SPI 机制
4、AOP&IOC
5、手写组件化架构

四、图片加载框架

1、图片加载框架选型
2、Glide 原理分析
3、手写图片加载框架实战

五、网络请求框架

1、网络通信必备基础
2、OkHttp 源码解读

六、RXJava 响应式编程框架设计

1、链式调用
2、扩展的观察者模式
3、事件变换设计
4、Scheduler线程控制

七、IOC 架构设计

1、依赖注入与控制反转
2、ButterKnife 原理
3、Dagger架构设计核心解密

八、Android架构组件Jetpack

1、LiveData 工作原理
2、Navigation 如何解决tabLayout 问题
3、ViewModel如何感知view生命周期及内核原理
4、Room架构方式方法
5、DataBinding为什么支持MVVM?
6、WorkManager内核解密
7、Lifecycles生命周期

文末福利

通过那次失败的字节面试后,从失败中获取经验,明白了只懂得单个知识点还是不够的,技多不压身这句话在哪里都是行得通的,对我们程序员也不例外,但是得**抓住中心,宁精勿杂。**小编利用空余时间把字节和阿里小米等面经都整理了成PDF文档,并且已收集到答案,另外还收集了大量2020最新BATJ面试题合集,借此机会全部打包分享给大家,希望能够帮到有需要的小伙伴,不要像小编一样到关键时候就蒙圈被面试官问到头皮发麻才懂得学习。
快速入手通道:(点这里)下载!诚意满满!!!

资料展示:


Android架构师之路很漫长,一起共勉吧!如果你正好需要这份腾讯高工纯手打Android Framework学习笔记,需要完整版PDF文档的小伙伴可以点此GitHub处免费下载。

更多资料获取通道:https://shimo.im/docs/9pWDKRg3HhGP3wDj

快速入手通道:(点这里)下载!诚意满满!!!

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值