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

![](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. 23、ORA-00439:DEFERRED_SEGMENT_CREATION 问题解决

    23.1.说明: 1. 众所周知,在清空表内所有数据时,truncate比delete要快很多,原因是,delete语句每次删除一行,都在事务日志中为所删除的每行记录一项. truncate通过释放存 ...

  2. layui动态创建Tab、Tab右键功能

      1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 & ...

  3. 一分钟了解JDBC的构成和原理

    JDBC(一组接口组成) : 形式如下: 1:JDBC-ODBC桥接技术(100%不用) 在Windows中有ODBC技术,ODBC指的是开放数据库链接 是由微软提供的数据库连接应用,而Java可以利 ...

  4. java:替换List集合中的某个任意值(对象)

    定义replaceAll方法,将传入的新值替换集合中的老值(list,old,new) private static <E> void replaceAll(List<E> l ...

  5. 资源:Redis下载地址

    Redis的下载路径 http://download.redis.io/releases/  3.x(支持集群)  2.x不支持集群   (推荐使用3.0+版本)     副版本号为偶数时,表示是稳定 ...

  6. 个人博客开发之blog-api项目统一结果集api封装

    前言 由于返回json api 格式接口,所以我们需要通过java bean封装一个统一数据返回格式,便于和前端约定交互, 状态码枚举ResultCode package cn.soboys.core ...

  7. java基础---集合(2)

    一. Set 集合 java.util.Set集合是Collection集合的子集合,与List集合平级.该集合中元素没有先后放入次序,且不允许重复. 存储的数据在底层数组中并非按照数组索引的顺序添加 ...

  8. python 遍历字典中的键和值

    #遍历字典中的所有键和值 zd1={"姓名":"张三","年龄":20,"性别":"女"} zd2= ...

  9. 基于SSM框架的旅游网站

    介绍:spring+springmvc+mybatis三大框架,mysql数据库 功能结构图: 效果截图: 数据库表: CREATE TABLE `t_admin` ( `id` int(11) NO ...

  10. Windows内核开发-4-内核编程基础

    Windows内核开发-4-内核编程基础 这里会构建一个简单但是完整的驱动程序和一个客户端,部署内核执行一些平时user下无法执行的操作. 将通过以下内容进行讲解: 1 介绍 2 驱动初始化 3 Cr ...