2021金三银四完美收官,字节4面斩下2-2Offer,入职就是35K16薪

前言

当你准备跳槽面试的时候,明明只是一份15K的工作,却问你会不会多线程,懂不懂高并发,火箭造得让你猝及不防,结果就是两个字——凉凉!而在如今的市场,什么多线程、高并发、设计模式、程序性能优化、热修复、架构设计等等等等,都可说是Android高级开发求职的必备技能。

而最终的结果……当然是顺利的接到了字节跳动的Offer,定级为2-2资深研发人员。

2021金三银四完美收官,字节4面斩下2-2Offer,入职就是35K16薪_第1张图片

面试前的准备

老实说,我自己平常没事就会看一些面试题,所以我都是直接去面的。不过我还是要建议大家如果准备面试的话,需要做以下准备

背题: 看一看最近的面经文,了解现在公司都在面什么类型的题,准备一些常见题,开背吧!如果一些基础的都不会那问题就有点大了。

算法: 做一些算法题,leetcode 上面的一二三星就够了,前端算法很简单,基本都是初中数学的难度吧。

项目: 项目回顾,把你做的项目从技术架构到源码都要做到足够了解,至少面试的时候不要被面试官问住了。并且要体现出你在工作中的作用,体现出自驱性(大公司都很看重自驱性)

亮点: 准备亮点,回答问题的时候不用全部回答上来,但是在面试的过程中一定要有亮点(不然你就会得到反馈,面试官说你还行,但是没有过~) 我一般会准备几个点,每个点都保证可以睡上半小时。另外一定要了解得很深入,并且能够用自己的话流畅的表达出来!!(我准备的几点,性能优化、工程化、缓存、http)

内推: 最好找人内推,成功率会提高一些

练手: 先找几家不太想去的公司(规模差不多)练练手,如果第一次面试就去心仪的公司面试,淘汰率会非常高。

心态:心态很重要,面试不过很正常,不证明你不优秀,只是不适合,总结面试经验,为下一次做准备。

答题: 怎么把自己会的问题说好,这个很关键。

逻辑清晰: 一定要逻辑清晰,不然即使你知道这个问题的答案,面试官也不会满意,如果你逻辑清晰,即使这个答案不会,面试官也会给你加分。

独特理解: 现在的面试题大同小异,那么如何体现出你的优势就很重要。结合业务以及你自身的知识储备来讲。

深入思考: 对每个问题一定要有深入的思考,不然就很难进入大公司了,深度上要有一个拔高才能在面试中获得好的成绩。

流畅表达: 面试就是一个表达的过程,一些问题心里明白不行,还要流畅的表述出来,基本上如果面试官觉得你表达的很流畅,当你讲到一半就不会再让你说下去了,证明已经通过了。

刷题绝对是最重要的,于是问了我在阿里的同学要来了一全套他们公司P8整理的系列大厂面试题,刷到天昏地暗,如今既完美收官了,这些面试题还有自己之前收集整理的一份核心架构进阶知识点。存在网盘也没太大的用处,所以在这里免费分享出来给有需要的朋友,可私信我口令【面试】

 

2021金三银四完美收官,字节4面斩下2-2Offer,入职就是35K16薪_第2张图片


字节跳动4面(3面技术+1面HR)面试经历

2021金三银四完美收官,字节4面斩下2-2Offer,入职就是35K16薪_第3张图片

一面

面我的面试官是做 iOS 的,就没问我 Android 的。

1、ipv6 答不上来
2、http 状态码
3、http 请求
4、https 请求过程
5、传送大图到服务器,进度功能实现: 这里扯了很多,一开始我理解成断点续传了,后面就是给的方案是 http 每次传一部分,根据状态码是否成功来处理,后面面试官觉得这个答案不行,让我从 TCP UDP Socket 这些角度去想,我说这些实现起来就更简单了,比如TCP就双向通信之类的。。
6、gc
7、数据库索引,b tree b+ tree
8、设计模式
9、进程间通信,我说了几个,面试官说可以说 Android 的,好得!
10、算法: 字符串匹配,返回对应 index, 我用的 HashMap 实现。

大多数都是问的网络,网络不是我擅长的领域,有些别的想不起了。。。
不止是题目,面试官会深入进去怼的,别问我怼啥,被怼的忘光了都!
面试官人很好,还强调了他低头是写面试评价。


二面

面试官依旧很 OK,可惜网络状态不佳。
面试官:我看上一面问了你网络层面比较多的问题,那我接着问了
我:。。。好。
先自我介绍

1、Http1.1 和 Http 1.0 区别
2、keepalive 作用
3、keepalive 底层实现,这块我是不清楚的,我就猜测了下给了他一个答案。
4、操作系统怎么在堆上和栈上分配内存,我不太清楚,就说了 Java 虚拟机是咋分配的,结果问了我 Java 虚拟机是咋在操作系统上分配的,对不起我不知道!(后面强调了 c 的 api,我还是母鸡啊!)
5、操作系统进程和线程
6、虚拟内存
7、虚拟内存的缓存,我不清楚,依旧给了个猜测
8、手写单例,写了双重检索的,后面问我有别的吗,我说了静态内部类实现的,问我为啥静态内部类安全。
9、Android Framework,我问是 AMS 那些的吗,面试官说那太复杂了,你说下 handler , loop吧,然后问了一些相关的问题。(感动啊)
10、广播和本地广播的区别,实现原理
11、你用 map 写个 lru 吧,我说能用 LinkedHashMap 吗,不能, 后面我说了个思路,面试官觉得不行,然后说了 LruCache 怎么实现的, LinkedHashMap 怎么实现的,我说 LinkedHashMap 是用了 HashMap,在里面维护了一个双向链表,每次访问数据的时候修改链表。后面我就打算仿写一个 LinkedHashMap 来实现,多亏面试官即使打断,这个太费时间了,就不用写了。
12、手写生产者消费者,这里面试官一边看代码一边提问题,我跟着问题修改代码,其实就是把一个比较low 的生产者消费者优化成了面试官想要的样子(面试官在这里终于笑了)。
13、问问题环节
Q:我想了解下相关的业务
A:这个职位是最后统一定的,我不能告诉你
Q: 问评价
A: 还是不能告诉你。
over

同样大致问题是这些,其他的也想不起来了,这块网络操作系统混合双打。

面试官人很棒,会诱导你慢慢回答,而且考虑很周到。

三面

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

hr面

1.三轮面试体验

2.期望工作城市

3.期望薪资(懵了,之前没怎么了解过,说了个数hr都觉得太低无语了)

4.还有哪些offer哪些在流程中

5.觉得字节跳动吸引你的地方

6.反问:问了下福利和字节跳动未来的发展策略

7.感觉hr对自家公司认同感很高,最后和我说了十分钟公司的发展、福利相关的,后面还微信发给我公司的整体介绍,感觉我整个人都已经是字节跳动的形状了


最后:分享一波,Android核心架构进阶知识点

面试成功其实都是必然发生的事情,因为在此之前我做足了充分的准备工作,不单单是纯粹的刷题,更多的还会去刷一些Android核心架构进阶知识点,比如:JVM、高并发、多线程、缓存、热修复设计、插件化框架解读、组件化框架设计、图片加载框架、网络、设计模式、设计思想与代码质量优化、程序性能优化、开发效率优化、设计模式、负载均衡、算法、数据结构、高级UI晋升、Framework内核解析、Android组件内核等。

 

 

而这些也全被整理浓缩到了一份pdf——《Android核心架构进阶知识点整理》,全部都是精华中的精华,本着共赢的心态,好东西自然也是要分享的。

字节跳动2-2Offer

2021金三银四完美收官,字节4面斩下2-2Offer,入职就是35K16薪_第4张图片

 

  • 自行领取直达链接:【点击获取】

    需要相关知识点可以查看我的【GitHub】,对于已经掌握的可以忽略以节省时间。

你可能感兴趣的:(网络互联,程序人生,面试,深度学习,android)