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

![](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. 聊一聊Unity协程背后的实现原理

    Unity开发不可避免的要用到协程(Coroutine),协程同步代码做异步任务的特性使程序员摆脱了曾经异步操作加回调的编码方式,使代码逻辑更加连贯易读.然而在惊讶于协程的好用与神奇的同时,因为不清楚 ...

  2. 20、oralce中单引号和双引号的区别

    20.oralce中单引号和双引号的区别: 20.1.单引号和双引号oracle都支持,但是两者是有区别的: 20.2.双引号在 Oracle 中的作用: 1.双引号的作用是:假如建立对象的时候,对象 ...

  3. Flyway:Spring Boot中使用Flyway来管理数据库版本

    Flyway简介 Flyway是一个简单开源数据库版本控制器(约定大于配置),主要提供migrate.clean.info.validate.baseline.repair等命令.它支持SQL(PL/ ...

  4. Python字符串格式方式 %s format()

    p.p1 { margin: 0; font: 12px ".PingFang SC" } p.p2 { margin: 0; font: 12px "Helvetica ...

  5. 元素类型为 "configuration" 的内容必须匹配 "(properties?,settings?,typeAliases?,typeHandlers?

    报错主要部分如下: Error building SqlSession.### Cause: org.apache.ibatis.builder.BuilderException: Error cre ...

  6. VMware中的虚机如何挂载U盘

    1.将U盘插入到宿主机上. 2.在VM Client上,点击宿主机,右键,扫描存储设备(目的是为了发现新USB存储) 3.在需要的虚拟机上编辑配置,添加硬件,添加USB设备(如果不进行以上2个步骤,此 ...

  7. Vue高阶

    Vue.cli是基于vue应用开发提供的一个脚手架工具,为应用搭建基础的框架架构,提供插件.开发服务.打包等功能. 1. 安装 node.js是一个JavaScript的运行环境,提供了一个事件驱动. ...

  8. 入门Kubernetes-minikube本地k8s环境

    前言: 在上一篇 结尾中使用到了minikube方式来做k8s本地环境来学习k8s. 那么这篇先了解下minikube及使用 一.Minikube 简介 minikube 在 macOS.Linux ...

  9. 「CF85E」 Guard Towers

    「CF85E」 Guard Towers 模拟赛考了这题的加强版 然后我因为初值问题直接炸飞 题目大意: 给你二维平面上的 \(n\) 个整点,你需要将它们平均分成两组,使得每组内任意两点间的曼哈顿距 ...

  10. 基于Ryu的流量采集代码实现

    1 from __future__ import division 2 import time 3 import math 4 import xlwt 5 from ryu.controller im ...