前段时间,有个朋友又出去面试了,这次他面试目标比较清晰,面的都是业务量大、业务比较核心的部门。前前后后去了不少公司,几家大厂里,他说给他印象最深的是字节。

![](https://upload-images.jianshu.io/upload_images/26461329-408a0c5f07d8a231.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

3轮技术面 + 1 轮 HR 面,他最终拿到了 35k*15薪 的 Offer。

主要考察对应⽤技术和底层原理的掌握,以及对过往项目的业务理解。之所以令他印象深刻,是因为每轮都聊了一个半小时以上,确实让他受益匪浅。

## 一面

1.算法题:两个栈实现队列

2.算法题:输入一个数组,想一种方法让这个数组尽可能的乱序,保证功能能实现的情况下时间复杂度和空间复杂度尽可能的小,可使用随机数函数。(面试官最后说了 O(n)的时间复杂度能实现)

3.写一个单例(自己写一种就行)

4.ActivityA -> Activity B -> Activity A

Activity A 启动模式为 singleTask

Activity B 启动模式为常规模式

问A 启动 B,B 又启动 A 的生命周期调用顺序?

5.说一下onsaveinstancestate() 调用时机,它用来干什么的。

6.onsaveinstancestate() 保存的那个参数叫什么?Bundle 里面都放一些什么东西?怎么实现序列化?Parcelable 和 Serializable有什么区别?

7.数组和链表的区别

8.HashMap 的结构以及原理

9.你能说一下retrofit它是做什么的,如果知道基本框架也说一下

10.了解 View 的绘制机制吗,能说一下吗

11.我看你项目里用的 Fragment 能说一下 Fragment A 启动了 Fragment B,Fragment B 中按下返回键只退出 Fragment B 怎么实现。

12.为什么handler可以线程切换

13.Rxjava map关键字的作用是什么

14.怎么获取view的宽高,如何确定值是准确的,说了view.post()补充viewTreeObserverOnGlobalLayoutListener

15.你还有什么要问的吗?

## 二面

1.算法题:一个字符串,求最长没有重复字符的字符串长度

2.string stringbuffer 和 stringbuilder 区别

3.final finally finalize区别

4.数组和链表的区别

5.HashMap 了解过吗

6.Tcp 三次握手四次挥手

7.get 与 post 的区别

8.synchronized 的作用

9.你知道哪些设计模式

10.Android 进程通信的方法

11.那你能说一下 Intent 是怎么进程通信的

12.内存泄漏有哪几种情况,怎么查看内存泄露的问题

13.还有什么要问的

## 三面

1.项目深挖

2.ARouter路由原理

3.如何管理过多的路由表?

4.看视频的时候网络请求很慢怎么优化?

5.说说HTTP3.0有什么改进?

6.App上线后用户使用时卡顿怎么查看是什么原因?

后续就是HR面了,这里就省略了,这些大厂都不会有太大的差别。

我朋友最终选择字节,除了这是核心项目之外,还有一个原因,字节的福利号称业内最好,薪资也是同类公司中最高。

“薪资高、发展好、福利待遇优” 似乎已经成为字节跳动的标签。

而很多人觉得大厂门槛高:

**“渣本双非学历进不了大厂!”**

**“工作不满 3 年进不了大厂!”**

**“非科班毕业的,进不了大厂!”**

可对于我这个渣本双非毕业的朋友来说,进字节,似乎并没有那么难。用他的话说,进大厂就靠一条:技术实力。

你只要技术实力够好+在面试中表现得还不错,就能拿下 Offer。

下面是他分享给我的他的复习资料,在这里分享给大家,最后希望大家尽量避坑,可以拿到理想的offer。

#### 《高级UI》

UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。

不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!

![](https://upload-images.jianshu.io/upload_images/25094154-5e8f92bc581234cd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![](https://upload-images.jianshu.io/upload_images/25094154-25b2978e4c4d3184.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#### 《Framework精编内核解析》

主要内容包含:

* 深入解析Binder
* 深入解析Handler
* Dalvik VM 进程系统
* 深入解析 WMS
* PackagerManagerService

![](https://upload-images.jianshu.io/upload_images/25094154-785db6e616b6206f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#### 《360°全方面性能调优》

**内容主要包含一下几点:**

1、设计思想与代码质量优化

2、程序性能优化

* 启动速度与执行效率优化
* 布局检测与优化
* 内存优化
* 耗电优化
* 网络传输与数据储存优化
* APK大小优化

3、开发效率优化

* 分布式版本控制系统Git
* 自动化构建系统Gradle

4、项目实战

* 启动速度
* 流畅度
* 抖音在APK包大小资源优化的实践
* 优酷响应式布局技术全解析
* 网络优化
* 手机淘宝双十一性能优化项目揭秘
* 高德APP全链路源码依赖分析
* 彻底干掉OOM的实战经验分享
* 微信Android终端内存优化实践

![](https://upload-images.jianshu.io/upload_images/25094154-1c4e54df99a19a78.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#### 《Android第三方框架》

**本篇内容要点(1042页)**

* 热修复设计
* 插件化
* 组件化框架设计
* 图片加载框架
* 网络请求框架
* RXJava 响应式编程框架设计
* IOC 架构设计
* Android架构组件Jetpack

![](https://upload-images.jianshu.io/upload_images/25094154-f3df5605442c48a6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#### 《NDK模块开发》

NDK是原生开发工具包,这套工具允许Android使用C/C++代码,并提供了众多的平台库。

**主要内容包含:**

* NDK 模块开发
* JNI 模块
* Native 开发工具
* Linux 编程
* 底层图片处理
* 音视频开发
* 机器学习

![](https://upload-images.jianshu.io/upload_images/25094154-3244c863a4ae8197.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![](https://upload-images.jianshu.io/upload_images/25094154-3184125daed25f15.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#### 《Jetpack架构组件从入门到精通》

* Android Jetpack - Navigation
* Android Jetpack - Data Binding
* Android Jetpack - ViewModel & LiveData
* Android Jetpack - Room
* Android Jetpack - Paging
* Android Jetpack - WorkManger
* Android Jetpack架构组件之Lifecycle
* Android Jetpack Compose 最全上手指南

![](https://upload-images.jianshu.io/upload_images/25094154-77a1aeee7777c357.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#### 《Flutter技术进阶》

* Flutter跨平台开发概述
* Windows中Flutter开发环境搭建
* 编写你的第一个Flutter APP
* Flutter Dart语言系统入门

![](https://upload-images.jianshu.io/upload_images/25094154-0c07ca5faee0f3e8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#### 《2020大厂面试高频知识点》

一、图片
二、网络和安全机制
三、数据库
四、插件化、模块化、组件化、热修复、增量更新、Gradle
五、架构设计和设计模式
六、性能优化
七、Android Framework
八、Android优秀三方库源码

![](https://upload-images.jianshu.io/upload_images/25094154-0d5ff028ab165854.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](https://upload-images.jianshu.io/upload_images/25094154-9a2586ec852baa48.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#### **所有资料已经全部上传至开源项目[**【GitHub】**](https://github.com/zhireshini/Bytedance-Android-Learning-route/blob/main/%E5%AD%97%E8%8A%82%E8%B7%B3%E5%8A%A8%E7%A7%BB%E5%8A%A8%E6%9E%B6%E6%9E%84%E5%B8%88%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.md),有需要的朋友自取。**

收到字节月薪35k Offer,揭秘面试流程及考点的更多相关文章

  1. BAT Android工程师面试流程解析+还原最真实最完整的一线公司面试题

    尊重原创,转载请写明原文出处:http://blog.csdn.net/sk719887916/article/details/47040931 (skay) 求职和我们每个人息息相关,而求职也有门道 ...

  2. Java面试总结(面试流程及核心面试题)

    Java面试流程及核心面试题 面试整体流程 1.1 简单的自我介绍      我是xxxx,工作xxx年.我先后在xxxx公司.yyyy公司工作.先后做个xxxx项目.yyyy项目. 1.2 你简单介 ...

  3. 2020 校招,我是如何拿到小米、京东、字节大厂前端offer

    前言 Hi~,我是 2020 届物联网专业毕业生,现就读于杭州.谨以此文来记录我的秋招以及入门前端以来的学习历程,如有错误,希望大家能及时提出! 面试情况 从19年8月初到11月底,前前后后一共面试了 ...

  4. 不等"金九银十",金风八月,我早已拿下字节跳动的offer

    字节跳动,我是在网上投的简历,之前也投过一次,简历都没通过删选,后来让师姐帮我改了一下简历,重新投另一个部门,获得了面试机会.7月23日,中午HR打电话过来预约了下午4点半面试,说会在线写代码,让我准 ...

  5. 剑指Offer——中国银行面试知识储备

    剑指Offer--中国银行面试知识储备+面试内容 事件介绍 时间:2016.11.23 08:30 地点:北京市海淀区永丰路299号南门(中国银行软件中心) 事件:中国银行面试(中英文面试) 注意事项 ...

  6. BAT大厂面试流程剖析

    在当今互联网中,虽然互联网行业从业者众多,不断崛起的互联网公司也会很多,但如BAT等大厂,仍然是很多同学想要进入的企业.那么本篇文章将会为大家很直白的讲解大厂的面试流程以及侧重点. 首先闲聊一下,为什 ...

  7. 揭秘jbpm流程引擎内核设计思想及构架

    揭秘jbpm流程引擎内核设计思想及构架 作者 胡长城(银狐999)   1     前言 2     阅读本篇的基础准备 2.1      概念的基础 2.2      环境的基础 3     什么是 ...

  8. php面试专题---5、流程控制考点

    php面试专题---5.流程控制考点 一.总结 一句话总结: 看代码不要先看函数里面的内容,要用的时候再去看:注意静态,注意变量作用域,php中的内置函数需要去归类总结,就是太容易忘记了 1.写出如下 ...

  9. php面试专题---4、流程控制考点

    php面试专题---4.流程控制考点 一.总结 一句话总结: 理解循环内部机制(指针操作),更易于记忆foreach的reset特性,分支结构中理解了switch...case的执行步骤(跳转表)也就 ...

随机推荐

  1. 07 修改JumpServer网页信息

    1.7.修改JumpServer网页信息 注意:在修改相关配置文件之前要先进行备份,防止文件修改错误无法恢复. 1.Luna图标: /opt/luna/static/imgs/logo.png 2.j ...

  2. 39、mysql数据库(视图)

    39.1.视图: 0.创建表及插入数据: 1.创建teacher表及插入数据: (1)创建表: CREATE TABLE teacher( tid int PRIMARY KEY auto_incre ...

  3. hive学习笔记之八:Sqoop

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. k8s部署docker容器

    一.环境 需机器已部署好k8s和docker的环境 二.操作步骤 1.将制作好的镜像推送到docker仓库 docker tag nginx:test harbor:test-nginx docker ...

  5. 想成为Java高手的25个学习目标

    本文将告诉你学习Java需要达到的25个目标,希望能够对你的学习及找工作有所帮助.对比一下自己,你已经掌握了这25条中的多少条了呢? 1.你需要精通面向对象分析与设计(OOA/OOD).涉及模式(GO ...

  6. linux学习之路第九天(任务调度)

    crond 任务调度 概念 任务调度:是指的系统在某个时间执行的特定命令或程序. 比喻理解: 可以这样理解,比如生活中有闹钟,闹钟的作用是不是叫人起床的,那古时候没有闹钟,叫人起床的工作是不是要人去完 ...

  7. 根据使用者反馈,对开源项目 go-gin-api 新增两个功能

    目录 前言 接口返回的错误信息支持中英文 代码位置 使用方式 错误信息自定义 参数验证的错误信息支持中英文 代码位置 使用方式 错误信息语言包 示例 小结 推荐阅读 前言 根据使用者的反馈,对开源项目 ...

  8. FTP服务—三种登录类型的配置方法

    目录 一.部署 二.配置vsftpd 1.匿名用户登录配置 2.系统用户登录配置 3.虚拟用户登录配置 1. 创建虚拟用户名单文件 2. 生成虚拟用户口令认证文件 3. 创建FTP根目录及虚拟用户映射 ...

  9. Django基础-03篇 操作Django自带的admin后台

    1.使用model.py来定义表结构,使用命令同步到数据库 python manage.py makemigrations #生成表结构(py) python manage.py makemigrat ...

  10. JDK环境配置: javac is not recognized as an internal or external command, operable program or batch file

    相信大家在配置TestNG的时候,首先都会去确认JDK的安装是否正确,两个命令缺一不可. 打开'cmd' --> 1. 输入'java -version', 返回java home当前路径. j ...