秋招真实记录:紧张的337小时,我终于等来了字节跳动offer(Android岗)

2020-11-20 17:53:55 浏览数 (1)

坐标北京,某211本科毕业生,之前学校活动有去过字节跳动公司总部参观,所以一直以来就蛮想进入字节工作的,被字节的企业文化和工作氛围所影响。字节作为发展速度最快的互联网公司,旗下的很多产品的用户都比肩BAT了,所以自己也算是字节的死忠粉了。

今年秋招,别的公司基本没怎么准备,因为很早定下的目标就是字节跳动,所以提前了2个月来准备这次字节的面试,从接到面试通知,到拿到offer共336小时53分钟21秒,这个时间段内,我没有一刻是不紧张的,直到我清清楚楚地看到“录用意向书”5个大字,悬着的心才放了下去。

这次字节跳动的面试,给我的感触很深,意识到基础的重要性,这次字节共4面技术面 HR面,特分享一下这次的4面技术面真题,可能有些记不全了,但多少也能够给一些正在面试字节或计划面试字节的朋友提供帮助。

字节跳动技术一面(1小时14分)

主要问java,以及虚拟机,问了一点android

1.实习项目有关的介绍以及问题回答 2.反射与代理的区别,动态代理,静态代理,二者的区别,以及代理模式的UML图 3.字节码技术 4.虚拟机的双亲委派,以及好处 5.虚拟机栈的作用,以及什么情况下会发送Stack Overflow 6.谁能做GCRoot,为什么计数法不如可达性好 7.为什么要分新生代和老年代,如何区分 8.GC算法都介绍一下 9.类加载的过程,方法区中存的是什么,类型信息都包括什么,如何判断两个Class是否相等。 10.HashMap的put方法讲一下,讲一下如何扩容,讲一下一个类作为HashMap,要实现哪些方法,equals和hashCode有什么区别和联系 11.消息机制讲一下,讲一下ThreadLoacal,讲一下Handler处理信息有什么方法(除了handleMessage还有什么),MessageQueue是否有长度限制,android中Message多不多? 12.Activity A到Activity B跳转的一个生命周期的过程 13.Activity A(standard模式)跳转到B(单例模式),B再跳转到A,此时返回,会出现什么情况 14.InVisible和Gone的区别,Gone和ViewStub的区别 15.字符串第一次出现一个的字符

字节跳动技术二面(34分)

计算机网络相关

1.osi七层架构,物理层做什么的 2.输入网址之后发生的一些列事情 3.DNS用了什么协议,具体是怎么做的 4.TCP的三次握手,以及流量控制 5.HTTP报文里有什么 6.HTTP与HTTPS有什么区别,加密算法是什么 7.HTTP的响应码有哪些? 8.get与post的区别 9.两个有序数组,找到中位数

字节跳动技术三面(50分钟)

深入Android方面以及实习经历

1.实习项目有关(包括一些具体实现,以及一些关键问题) 2.LayoutManager的作用 3.RecyclerView用的多么有哪些了解,如何去实现双层瀑布 4.如何去设计一个SDK(很多细节的问题) 5.扑克牌,抽五张是同花的概率,抽五张是顺子的概率 6.RN以及Redux的了解,好处,以及使用,以及工作中对于android和RN的比重 7.单例模式的好处,那么什么时候不去用单例呢? 8.SP的内部实现了解么?如何实现的序列化 9.了解注入么?

字节跳动技术四面(24分钟)

1.自我介绍 2.介绍项目 手撕代码 3.下一个更大元素(力扣 503) 4.区间合并

HR面(30分钟)

1.自我介绍 2.毕业时间 3.是否考研 4.高考志愿 5.专业人数 6.专业排名 7.有无实习 8.大学生活 9.学 生会哪个部门 10.参加什么社团 11.参加什么比赛 12.获得什么奖 13.有无团体赛经历 14.参赛时间 15.项目背景 16.项目分工 17.是否项目组长 18.项目用什么编程语言写的 19.自己选的编程语言还是老师给选的 20.团队分工是你安排的还是各自认领的 21.团队内产生分歧怎么办 22.做项目过程中对你来说最大的挑战是什么 23.大学中让你最有成就感的事情 24.班里担任什么职务 25.参加比赛和项目,收获了什么 26.有发表论文吗 27.平时的兴趣爱好 28.老家是哪里的 29.意向工作地点 30.职业规划 31.目前主要在干什么 32.还投递了哪些公司 33.对行业有什么倾向 34.如何看待互联网行业的工作强度 35.家里人对工作和考研有什么看法 36.遍地都是研究生,不考研会有遗憾吗 37.工作后还会去考研吗 38.自制力高吗 39.喜欢玩什么游戏 40.什么时候可以去实习 41.大四上学期有几门课 42.什么时候开学 43.预期的薪资是多少 44.擅长什么编程语言 45.有什么优缺点 46.是不是很宅 47.出生年份

总结

10月11号邮件收到信息,HR加了我微信,直接给了意向书,查收然后确认好了,确定了入职时间,非常开心。总的来说,自己如果有想要去的大公司,一定要提升好自己,让自己的能力和素质与公司匹配的上,我也一直相信,机会永远是留给有准备的人。

五、面试前准备

首先,一定要先搭建自己的知识体系,再往里面填充各种东西,才能真正掌握,这个填充过程一定要从点滴做起,面试前才去突击是没多大作用的。

对于Android工程师来说,这个越来越成熟的岗位,要求是越来越高了,知识体系大约有十个方面:

  • Java基础,Java虚拟机;
  • Android基础,Android源码;
  • 开源库,算法;
  • 操作系统,计算机网络;
  • 软件工程,设计模式。

下面举几个最常见的面试问题吧

Java基础:final finally finalize有什么关系,HashMap原理,编译时注解

Java虚拟机:按照问到的可能性是大小,类的加载 > JMM > GC > Java内存分区 > oop-klass > JIT

Android基础:Activity A启动B之后生命周期,onSaveInstance()和onNewIntent()调用时机

Android源码:消息机制,View的事件处理机制,View的绘制过程,Activity启动过程

开源库:OKHttp,Glide,LeakCanary,RxJava实现原理

算法:树的深度和广度优先遍历(非递归),100万个树找最大的100个,快排,堆排序

操作系统:进程和线程的区别,多线程的实现方法,异步改同步,生产者消费者模式,手写线程池

计算机网络:七层架构,TCP的三次握手四次挥手,https和http的区别。

软件工程:类图,时序图,如何设计一个项目(往功能性,健壮性,性能性,时间成本四个纬度上套)。

设计模式:面向对象七大原则,手写单例,手写观察者,代理模式。

总之,北京居不易,而选择理工科的朋友,大多都出身普通,希望大家不要忘本,知识才是改变自身命运的唯一路径。蹉跎这么久,我也是最近两年才渐渐明白这个道理,于是借着这个机会,分享给大家。

六、大厂面试offer收割秘籍

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进阶

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

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2019-2020BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 诸多细节。

还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

3.项目复盘

实际上,面试的一二轮所问到的技术问题,很多都是围绕着你的项目展开,因此在面试前最后要做好的一件事情就是项目复盘。关于项目复盘,我个人的思路如下,可供参考:

  • 你在这个项目中承担了什么样的角色?
  • 这个项目的背景是什么,如果是技术项目,为什么要做?
  • 有哪些技术难点,是怎么解决的,是否还有更好的方案?
  • 你认为项目中是否有可以改进的点?
  • 这个项目解决了什么问题,最好用数据说话,这个数据又是怎么得出来的?

提前把思路捋一捋,上面这些问题好好思考或准备一下,做到心中有谱以后,自然能够面试官聊得融洽,保持一个好的心态,通过的几率就会更大一些。

以上内容均放在了开源项目:github 中已收录,里面包含不同方向的自学Android路线、面试题集合/面经、及系列技术文章等,资源持续更新中...

0 人点赞