写点什么

45 天拿下字节跳动 Android 研发岗 offer,竟然有个面试真题库,内幕首次公开!

发布于: 2021 年 11 月 06 日
  • 单链表倒数第 k 个节点

  • 平衡二叉树判断(面试官有给思路)

  • 堆和栈的区别(内存分配的不同?)

  • HTTP 和 HTTPS 区别,在哪层

  • TCP 和 UDP

  • TCP 怎么可靠

  • 线程和进程

  • 全局变量和局部变量(分配在什么地方)

  • 多线程有什么用,怎么处理

  • 优先级翻转

  • 死锁

  • LRU 怎么实现

  • 排序中稳定和非稳定

  • 快排是稳定还是非稳定

二面(视频面 3.23 40min)

  • 介绍项目

  • 二叉树路径之和为 n


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


synchronized


  • Handler 和 Looper(单个 Looper 和多个 Handler)

  • Handler 内存泄露

  • 四种引用

  • 浏览器使用 url 整个过程

  • volatile

  • 单例模式(手写)

三面(视频面 3.23 50min)

  • 介绍项目

  • 即时视频用什么协议:TCP、UDP 的区别

  • 网络较差用什么协议

  • Top K 问题 0-100 1000w 个小数(后面改成了两位小数)(很详细) -> 桶排序 复杂度

  • 项目有没有做什么优化

  • 类加载 双亲


在这里,大佬强调:GitHub 和博客维护好很重要,demo 随手写,随手删的话,面试官就看不到你的作品,很容易 GG


另外,在我的请教(死缠烂打)下,我还挖来了大佬面试时整理好的真题库,45 天突击后,拿到了 offer。


面试真题库部分目录:


1. 自定义 View


2. 事件拦截分发


3. 解决过的一些性能问题,在项目中的实际运用


4. 性能优化工具


5. 性能优化 (讲讲你自己项目中做过的性能优化)


6. Http[s]请求慢的解决办法(DNS、携带数据、直接访问 IP)


7. 缓存自己如何实现(LRUCache 原理)


8. 图形图像相关:OpenGL ES 管线流程、EGL 的认识、Shader 相关


9. SurfaceView、TextureView、GLSurfaceView 区别及使用场景


10. 动画、差值器、估值器(Android 中的 View 动画和属性动画 - 简书、Android 动画 介绍与使用)


11. MVC、MVP、MVVM


12. Handler、ThreadLocal、AsyncTask、IntentService 原理及应用


13. Gradle(Groovy 语法、Gradle 插件开发基础)


14. 热修复、插件化


15. 组件化架构思路


16. 系统打包流程


17. Android 有哪些存储数据的方式。


18. SharedPrefrence 源码和问题点;


19. sqlite 相关


20. 如何判断一个 APP 在前台还是后台?


21. 混合开发


.........

面试前我做的准备工作(大厂收割秘籍)

1.定制自己的简历(对标 BATJ)


无论是什么行业,简历都是敲门砖,对于程序员来说,更应该着重准备,甚至要做到逐字推敲。关于简历,我个人有以下两点建议:


①尽可能突出自己的优势


一定要让看到你简历的人一眼就看到你自己所具备的优势,要学会突出重点,如你在上一家公司做出的贡献,就要写在显眼的位置进行突出,用颜色加深再好不过。如果你的优势是学历,那么学历就要放在第一页,因为 HR 在筛选简历时,一份简历往往只看那么几秒钟,你需要做到的就是让 HR 一眼看中你的简历。


②简


简历简历,之所以称为简历,就是需要把自己的个人信息和内容化繁为简,但是很多人都做不到这一点。我身边有一些朋友,写自己简历时,长篇大论,恨不得写出一篇 800 字作文出来,如果说你的简历长达 6-7 页,并不会给对方你有丰富经验的感觉,反而会让人一下子抓住不住重点。


另外,简历不能写成流水账,技术简历一般不超过 3 页,主要信息就包括个人信息(联系方式,学历等),专业技能,工作经历,项目经验等几个部分就好了,尽可能用精炼的语言描述,一个字能讲清楚的事,千万不要用两个字。


③描述自己做到了什么,而不是做了什么


很多程序员会在自己的项目或是技术栈里这样描述:在某项目,我负责 xxxx,如重构,如优化。但实际上,面试官想要看到的是你在项目中,重构和优化带来了什么样的好处和效果,如果说性能提升了,那么提升的数据和情况是如何的,要一一描述出来,所以重点应该是“将项目做到了什么样子,做成了什么事”。


以上 3 点,则是我对自己简历的要求。说了这么多,简历到底要怎么准备,怎么制定,可能很多人还是摸不着头脑,我手上有一套标准的程序员简历模板,如果你有需要,可以分享给你。


2.梳理知识,提升储备


自己的知识准备得怎么样,这直接决定了你能否顺利通过一面和二面,所以在面试前来一个知识梳理,看需不需要提升自己的知识储备是很有必要的。


关于知识梳理,这里再分享一下我面试这段时间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)


  • **架构师筑基必备技能:**深入 Java 泛型+注解深入浅出+并发编程+数据传输与序列化+Java 虚拟机原理+反射与类加载+动态代理+高效 IO

  • **Android 高级 UI 与 FrameWork 源码:**高级 UI 晋升+Framework 内核解析+Android 组件内核+数据持久化

  • **360°全方面性能调优:**设计思想与代码质量优化+程序性能优化+开发效率优化

  • **解读开源框架设计思想:**热修复设计+插件化框架解读+组件化框架设计+图片加载框架+网络访问框架设计+RXJava 响应式编程框架设计+IOC 架构设计+Android 架构组件 Jetpack

  • **NDK 模块开发:**NDK 基础知识体系+底层图片处理+音视频开发

  • **微信小程序:**小程序介绍+UI 开发+API 操作+微信对接

  • **Hybrid 开发与 Flutter:**Html5 项目实战+Flutter 进阶



知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。




评论

发布
暂无评论
45天拿下字节跳动Android研发岗offer,竟然有个面试真题库,内幕首次公开!