艰辛挺过字节Android研发岗4轮面试,收到sp offer月薪45k!揭秘字节面试流程及考点

2021-06-02 10:19:45 浏览数 (1)

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

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

第一轮主要考察 Java 基础,二、三轮注重对应技术的掌握,以及对过往项目的业务理解。之所以令他印象深刻,是因为每轮都聊了一个半小时以上,确实让他受益匪浅。

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

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

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

“渣本双非学历进不了大厂!” “工作不满 3 年进不了大厂!” “非科班毕业的,进不了大厂!”

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

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

字节跳动面试流程

今天我把通过一年多内推总结下来的字节求职流程写一遍!不论你是求职老司机,还是小白萌新,期望你有所了解更有底气。

字节的整体流程:简历筛选=>简历评估=>评估通过=>笔试中(非必须)=> 面试中=>面试已完成=>待入职=>已入职

每个流程都是hr手工处理的,任意一流程挂了都会变成已结束。

字节1面

1.自我介绍,项目经历,项目上的优化项以及原因 2.为什么使用mmap优化io读写,mmap和传统读写有什么区别?为什么选择它? 3.Object 中有什么方法? 4.Object 的equal实现?重写equal需要注意的方面 5.synchronized 原理 6.volatile原理 7.ui优化 8.内存优化与LeakCanary的源码?以及LeakCanary的缺点和如何解决 9.算法:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字(Leetcode原题)

字节2面

1.自我介绍,项目经历,项目上的优化项以及优化的原因 2.Rxjava源码原理,以及项目中你是如何将Rxjava流进行复用 3.你项目中高度自定义了DiskLRUCache。问LRUCache的实现?问LinkedHashMap的实现?问DiskLruCache的实现?问Glide中实现的DiskLruCache的运用 4.Handler的原理 5.volatile原理 6.synchronize 锁的转化流程 7.ReentrantLock 实现 8.ui 优化,首屏渲染时机优化 9.启动优化,与AlphaManager的实现 10.插桩的原理以及运用 11.LiveData 和 ViewModel的源码实现 12.x2c 源码实现 13.DNS 原理 14.https的原理

字节3面

1.工作软技能的考核,以及团队中的定位 2.如何进行io 优化,指标是什么,优化后的结果以及参数是多少? 3.算法:在一个单链表中,每k个节点进行反转,无法被反转的部分放在末尾

字节跳动面试考点

Java 知识点汇总
  • 数据类型
  • String
  • 运算
  • 关键字
  • Object 通用方法
  • 继承
  • 反射
  • 异常
  • 泛型
  • 注解
  • 特性
  • 容器中的设计模式
  • 源码分析
  • Vector
  • CopyOnWriteArrayList
  • LinkedLis
  • HashMap
  • ConcurrentHashMap
  • LinkedHashMap
  • synchronized 关键字
  • volatile 关键字
  • ThreadLocal
  • 线程状态转换
  • 使用线程
  • 基础线程机制
  • 中断
  • 互斥同步
  • J.U.C - AQS
  • 线程不安全示例
  • 内存模型
  • 线程安全
  • 锁优化
Android 知识点汇总
  • Activity
  • Fragment
  • Service
  • BroadcastReceiver
  • ContentProvider
  • 数据存储
  • View
    • MeasureSpec
    • MotionEvent
    • VelocityTracker
    • GestureDetector
    • Scroller
    • View 的滑动
    • View 的事件分发
    • 在 Activity 中获取某个 View 的宽高
    • Draw 的基本流程
    • 自定义 View
  • 进程
    • 进程生命周期
    • 多进程
    • 进程存活
  • Parcelable 接口
  • IPC
    • IPC 方式
    • Binder
    • AIDL 通信
    • Messenger
  • Window / WindowManager
  • Bitmap
  • 屏幕适配
  • Context
  • SharedPreferences
  • 消息机制
  • 线程异步
    • AsyncTask
    • HandlerThread
    • IntentService
    • 线程池
  • RecyclerView 优化
  • Webview
Android 扩展知识点
  • ART
  • Apk 包体优化
  • Hook
  • Proguard
  • 架构
    • MVC
    • MVP
    • MVVM
  • Jetpack
  • NDK 开发
  • 计算机网络基础
    • 网络体系的分层结构
    • Http 相关
    • TCP/IP
    • Socket
  • 类加载器
Android 开源库源码分析
  • LeakCanary
  • EventBus
  • Glide :加载、缓存、LRU 算法 (如何自己设计一个大图加载框架) (LRUCache 原 理)
  • install
    • isInAnalyzerProcess
    • ServiceHeapDumpListener
    • RefWatcher
    • ActivityRefWatche
    • watch
    • ensureGone
    • haha
  • ARouter
  • 插件化(不同插件化机制原理与流派,优缺点。局限性)
  • 热修复
  • RXJava (RxJava 的线程切换原理)
  • OkHttp
设计模式汇总
  • 设计模式分类
  • 面向对象六大原则
  • 工厂模式
  • 单例模式
  • 建造者模式
  • 原型模式
  • 适配器模式
  • 观察者模式
  • 代理模式
  • 责任链模式
  • 策略模式
  • 备忘录模式
常见面试算法题汇总
  • 排序
  • 二叉树
  • 链表
  • 栈 / 队列
  • 二分
  • 哈希表
  • 堆 / 优先队列
  • 二叉搜索树
  • 数组 / 双指针
  • 贪心
  • 字符串处理
  • 动态规划
  • 矩阵
  • 二进制 / 位运算

8个核心要点,轻松应对字节跳动面试

投递简历前

1、简历深度优化,HR每天翻阅上千份简历,平均3-10秒看一篇简历,怎么让自己的简历突出?合理的排版可以大幅增加成功率。除了排版,还要用关键词引导Hr看到你的优势和强项,例如“负责”、“操盘”、“数据”等等…

2、自我介绍话术,说简单点,就是200-300字的小作文。当公司hr给你打电话时,怎么在两分钟内快速介绍自己并吸引hr?私信问我

简历投递中

3、梳理投递岗位的工作内容,你真的知道你投的岗位是干啥事情吗?我辅导的80%求职者对岗位工作是没有概念的。建议你去脉脉、领英、赤兔等职场app,去私信该公司的从业者,询问目前遇到的问题或项目方向,这样你就能在面试中过程中“不经意”的透露自己的想法和强项,让负责人两眼发光。

4、了解行业大概信息,如果是跨行进字节跳动,你是否对所投职能大概了解?互联网产品、信息流广告、算法数据、短视频内容等多职能部门,你了解多少?有哪些看法?

5、公司架构及所处部门等级,字节在全国有多少分公司?分别负责产品开发?客服?审核?内容?商业化?KA/LA/SMB,你知道自己即将去哪吗?发展前景和部门重要级是多少?

面试时

6、基础话术及注意事项,哪些话不能说?“我不懂但我愿意学”,哪些话说出来加分?“我认为最好的解决办法是…因为…”哪些话说了等于不说?“我觉得字节是互联网大厂,我想进来学习提升自己”

7、弄清四轮面试的负责人,第一轮是Hr电话面试,第二轮视频或线下面试,第三轮该小组负责人及Hr面试,第四轮部门或城市负责人面试。

8、压力面试怎么应对?问到你不懂的问题应该怎么回答?有哪些万能口水话?怎样高效通过第四轮面试?

面试字节前的复习路线参考

很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我针对Android程序员,我这边给大家整理了一套学习宝典

  • Android学习路线图

首先,对于没有学习方向,知识不体系的人,我把我工作几年整理的学习路线分享给大家,做一个借鉴作用,还不知道怎么学习的人可以直接照着我这个学习路线一个个的去学习,知识不体系的人可以参考下我整理路线的方式,总之希望能够帮到你们!

①看视频进行系统学习

前几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。

另外,我自己也珍藏了好几套视频,有需要的我也可以分享给你。

②读源码,看实战笔记,学习大神思路

“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。

主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。

③面试前夕,刷题冲刺

面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。

关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三。

④2020大厂面试高频知识点

  • 图片
  • 网络和安全机制
  • 数据库
  • 插件化、模块化、组件化、热修复、增量更新、Gradle
  • 架构设计和设计模式
  • 性能优化
  • Android Framework
  • Android优秀三方库源码
以上这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者点击 【这里】 查看获取方式。

最后,想对同学们说,打好基础,系统学习,才能从容面试。厚积薄发永远是王道,祝大家顺利!

0 人点赞