双非本科字节跳动Android面试经验和心得体会分享(已拿offer)

167 阅读8分钟

新人报道,没有什么可分享的,就记录一些自己求职的体会和心得。

我是在校招补录的时候参加了今日头条的招聘,岗位是Android开发,最后成功拿到了入场券。但是这也丝毫不值得骄傲,大家都知道:技术日新月异,要是几个月不更新自己的技术栈,就会被时代淘汰。

(更何况大佬那么多,我不过是个才入门的小弱鸡~)

以下是我总结进入头条的两大决定性因素:

一是,刷面经和笔试题非常关键。你将会在搜集资料的过程中了解到头条系的状况,具体岗位所面临的问题和笔面试的风格特征,做到有备无患。

二是,面试官会更偏爱逻辑思维强的人,因为这种人往往能一下子抓住问题的重点,思维更加严谨,做事更加高效。

(题目顺序有些不分先后,但大致有序)

一面

都说字节的面试难度偏高,带着忐忑的心情来到面试,没想到面试官是一个和蔼可亲的爷爷型面试官,很快放稳了心态,开始面试。

  • 上来先常规自我介绍然后讲项目
  • recyclerview的缓存机制
  • glide的缓存机制
  • 从glide缓存的lruCache出发让我讲一下自己怎么实现,一开始只说到了链表,后来面试官提醒效率,于是回答到了linkedHashmap
  • glide缓存的弱引用说到安卓四大引用还有在项目中的使用
  • hashmap问得比较详细
  • == equals
  • handler机制
  • 算法题是两个升序链表合并

总的来说这次面试体验还是特别不错的,面试官问的问题感觉一层套一层,往往在回答中说到了某个知识点,接着下个问题就会以这个知识点开始。

当天面试由于比较紧张,让两个小伙伴给我面了两个小时,口干舌燥的参加面试,脑子也比较乱哄哄,handler的一个简单问题总是集中不了精神,还好面试官比较有耐心没有给我提前结束。

隔了7天的早上收到了二面通知,冲!

二面

下午6点钟开始面试,面试官不苟言笑显得非常专业,简单调试之后开始面试。

  • 先是常规自我介绍+项目
  • Glide缓存
  • 图片优化(讲了项目里面oss存储的取缩略图方法,还有Bitmap相关的decodeResourse方法相关)
  • Bitmap
  • Glide中的LruCache以及实现
  • 讲几个熟悉的数据结构(把整个Collections和Map讲了个遍)
  • LinkedList查找优化
  • 追问HashMap
  • TreeMap中红黑树
  • SparseArray
  • 算法题是ipv4地址转32位int输出(不会位操作符然后面试官提示用了乘2的方法)
  • ipv6
  • TCP
  • http几个版本的不同
  • https
  • 对称加密、非对称加密
  • RSA实现😇
  • 安卓中网络请求子线程回调UI线程怎么弄(runOnUIThread、Handler)
  • 多线程
  • 线程池
  • 操作系统中的线程竞争问题
  • synchronize
  • 自旋锁
  • volatile(原子性?)
  • CAS

总用时90分钟。

这次面试依然感受到了字节面试官的耐心温柔与专业,卡住时面试官会引导问题的回答,总体感觉如沐春风,不知不觉就一个半小时了。面到一半面试官说看得出来我准备了很多(内心两行泪,确实是背地里刷了上千道面试题)

最后聊了聊部门的工作方向和工作时间安排,面试很顺利。

三面

  • 自我介绍,介绍了自己实习写的刷新加载的组件
  • 问我自己组件里怎么解决的嵌套滑动冲突,三个方面实现完美分发事件
  • retrofit 动态***里面如果传的不是 interface 怎么办,这块我不清楚,我就直接说不太清楚,然后说了 retrofit 关于注解的处理
  • 注解生命周期,编译时注解解析
  • 你用过 weex,说下weex实现原理,我说我没有看过 weex 源码,但是我实现过一个动态页面渲染框架,说了下我的渲染过程和实现方案。
  • 最近想学的技术,说了音视频,但是因为准备秋招放下了
  • 为什么想学,说了自己之前做一个 APP,里面播放器无法使用没认证的 Https 请求,打算自定义一个播放器,在底层处理证书这块,然后在说了下不知道这样的方案可不可行。
  • okhttp 里面怎么认证的, 说了拦截器
  • ConcurrentHashMap 同步方案, 然后问了 CAS
  • 环状链表

隔了两天查到了到HR面的通知,内心又高兴又打问号,自己都不知道自己怎么过的。

HR终面

  • 询问了除字节跳动以外,还在看其他工作机会么?分别是什么
  • 字节、XXX公司、XXX公司,你的优先级是什么,为什么?
  • 实习薪资待遇是多少?你期望的薪资是多少?
  • 平时有什么爱好?
  • 了解职位需求吗?
  • 有没有想问的?

面试总结

总的来说,自己如果有想要去的大公司,一定要提升好自己,技术能力的高低能决定你走多远,平台的高低,能决定你的高度。我也一直相信,机会永远是留给有准备的人。

在字节面试前我也准备了很久,刷了超多2020年最新的大厂面试真题,整理出了一份一线互联网面试最新全套真题解析,知识点整理出来分享给大家:

笔记内容全部免费分享,有需要完整版笔记的小伙伴【点击我】免费获取哦!

Android 相关

1. Android 之 SharedPreferences 内部原理浅析 2. Android 源码分析-消息队列和 Looper 3. Android 源码分析—带你认识不一样的 AsyncTask 4. Android 性能优化之使用线程池处理异步任务 5. Android Context 完全解析,你所不知道的 Context 的各种细节 6. LocalBroadcastManager 的实现原理,与 BroadcastReceiver 异同 7. Android进程间通信(IPC)机制Binder简要介绍和学习计划 8.Activity的启动方式和flag详解 9.Android源码分析-资源加载机制 10.Android中Thread、Handler、Looper、MessageQueue的原理分析 11.Android 源码解析 之 setContentView 12.Android AsyncTask 源码解析 13.Android IntentService完全解析 当Service遇到Handler 14.深入剖析 Android中的 ArrayMap

360 °全方面性能调优

1.设计思想与代码质量优化 2.启动速度与执行效率优化 3.布局检测与优化 4.内存优化 5.耗电优化 6.网络传输与数据存储优化 7.APK大小优化 8.开发效率优化 9.项目实战

笔记内容全部免费分享,有需要完整版笔记的小伙伴【点击我】免费获取哦!

Java 相关

1.Java 四种线程池的用法分析 2.Java 有几种文件拷贝方式?哪一种最高效? 3.使用 FileChannel(文件通道)来实现文件快速复制 4.JVM 类加载机制详解 JVM 类加载过程 5.JVM 类加载机制详解类加载器与双亲委派模型 6.Java 实现线程同步的几种方式 7.Java IO 流之字节流与字节缓冲流 8.Java内存管理:深入Java内存区域 9.Java垃圾回收 10.Java中的ThreadLocal

Kotlin 相关

1.从原理分析 Kotlin 的延迟初始化: lateinit var 和 by lazy 2.From Java To Kotlin 3.怎么用 Kotlin 去提高生产力:Kotlin Tips 4.使用 Kotlin Reified 让泛型更简单安全 5.Kotlin 里的 Extension Functions 实现原理分析 6.Kotlin 系列之顶层函数和属性 7.Kotlin 兼容 Java 遇到的最大的 “坑” 8.Kotlin 的协程 9.Kotlin 协程「挂起」的本质 10.资源混淆是如何影响到Kotlin协程的

网络相关

1.(建议精读)HTTP 灵魂之问,巩固你的 HTTP 知识体系 2.HTTPS 原理浅析及其在 Android 中的使用 3.HTTP 断点续传(分块传输) 4.HttpDns 原理是什么 5.《客厅 TV-APP HttpDNS 技术接入与实战》 6.HttpDns 接入以及全局替换的实现 7.TCP、UDP、HTTP、SOCKET 之间的区别 8.TCP 与 UDP 的区别

插件化&热修复&模块化&组件化 &增量更新&Gradle

1.Android 插件化库比较 2.深入理解 Android 插件化技术 3.插件化(不同插件化机制原理与流派,优缺点。局限性) 4.热修复 5.模块化实现(好处,原因) 6.项目组件化的理解 7.Android Gradle Plugin 源码分析 8.Android Gradle Plugin 源码阅读与编译

笔记内容全部免费分享,有需要完整版笔记的小伙伴【点击我】免费获取哦!

图片相关

1、 图片库对比 2、LRUCache 原理 3、图片加载原理 4、自己去实现图片库,怎么做? 5、Glide 源码解析 6、Glide 使用什么缓存? 7、Glide 内存缓存如何控制大小? 8.Fresco 图片框架内部实现原理探索

Flutter 相关

1.Flutter 原理与实践 2.揭秘 Flutter Hot Reload(原理篇) 3.Flutter 动态化探索 4.Flutter 如何和 Native 通信-Android 视角 5.深入理解 Flutter Platform Channel 6.Flutter Engine 编译指北 7.深入理解 Flutter 多线程 8.Flutter 状态管理 - 初探与总结 9.Flutter | 状态管理指南篇——Provider 10.深入理解Flutter应用启动 11.Flutter渲染机制—UI线程

由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

笔记内容全部免费分享,有需要完整版笔记的小伙伴【点击我】免费获取哦!