程序开发todo

含泪写下这篇面经:拒绝头条,放弃华为,6面字节跳动终拿Offer

2020-10-21  本文已影响0人  进阶程序员007

前言

先说一下我的情况,8月被导员通知优研资格没有我,开始准备考上交819,9月华为大规模秋招,第一批集招offer拿到,拒了,之后学姐给了白金码,选择放弃考研全力备战字节面试,准备了一个月,10.13面试,三轮面完,10.19收到offer call秋招结束,在此期间拿到360和keep的offer,但是我都拒绝了,因为我的目标很明确!字节跳动,不面试上不罢休,其实腾讯,头条待遇都不错,但是年少轻狂,结果愣是面了9面才拿到字节跳动offer!



这篇文章就讲一写我9面字节跳动的面试经历!

我的字节跳动艰难面试之旅

一面(~45min)

1. 介绍项目,讲述一下实习的工作内容和感想(~10min)

2. 什么是内存泄漏,Android里有哪些内存泄漏的场景,原因是什么

3. JVM的GC过程,GC的算法都有哪些

4. 进程和线程的概念,Android里怎样实现多线程?(Thread Handler AsyncTask IntentService等等)

5. Handler的原理和使用

6. Handler是怎么和线程绑定的(Looper),为什么Looper.loop()要设计成死循环

7. Java的几种内部类,区别是什么

8. Activity的生命周期和启动模式

9. 写题:二叉树的右视图(层序遍历即可)

一面比较短,问的问题也比较基础,大概30分钟后开始二面

二面(~1h30min)

1. 自我介绍

2. 介绍项目,为什么要自学安卓(~5min)

3. Android如何实现多进程,应用场景是什么(答的不好)

4. Android的IPC机制(Binder)是否了解(答的也不好)

5. 如何用两个队列(FIFO)实现栈(FILO)

6. HashMap和HashTable区别,HashMap原理和实现,hash()的算法

7. 如果自己设计hash算***怎么设计,为什么(答的素数取余)

8. String的hashCode()和Object的hashCode()

7. 虚拟内存和物理内存的概念和关系,内存分页的调度算法

8. 怎么实现LRU缓存(参考leetcode T146)

9. 可以自己写一个java.lang.Object类吗,系统会加载哪一个

10. Java里泛型的实现

11. 了解常见排序算法吗,手写一下快排

12. Java里加锁的方式,synchornized关键字的原理,悲观锁和乐观锁都有哪些实现

13. 死锁的条件和解决方法,讲讲银行家算法

14. TCP的三次握手四次挥手,为什么要四次挥手

15. TCP的流量控制算法(滑动窗口),拥塞控制算法

16. 怎么解决用户高频点击打开新Activity导致的多实例问题(Activity启动模式)

17. 怎么判断两个无环单链表是否相交

18. 写题:leetcode 445

19. 反问

二面问题量非常的大,集中在Java/OS/算法,但并没有特别难以回答的问题,认真准备的话大部分都能答出来。面试官也非常友好,给了很多引导和提示。

因为三面面试官的时间问题,约了两天后的三面

三面(~45min)

1. 自我介绍

2. 介绍一下实习做的工作,是自己完成的吗,遇到什么困难,成果怎么样

3. RecyclerView怎么实现的item缓存,跟ListView有什么区别(因为项目用到了所以被问了)

4. 写题:leetcode 1233

5. 设计题:微信的联系人列表功能

(1)设计添加联系人的API(从可能的方式,数据形式,接口参数方面回答)

(2)怎么实现联系人列表的UI(答的RecyclerView)

(3)怎么实现A-Z首字母的快速定位功能

6. 是自学的Android吗,为什么选择这个方向,有没有什么经验给同样想自学的学弟学妹

7. 是哪里人,为什么想到上海来就业

8. 反问

三面的问题不多,不过因为多数问题没有标准答案,难度其实高于一二面

四面(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.了解注入么?

字节跳动,一共面试了3次,一共六面,总算是拿到了Offer!

最后面试字节跳动的时候一个就是三面的面试官是我 leader,他当时问我,如果给你一个两个星期才能做完的活,你想怎么办。我说,先跟您商量一下,表达一下自己的观点,如果您坚持安排给我,我就加班呗。。。还能咋整。。。。直到做完呗。。。。他噗嗤一下就笑了。。。他问了我这个问题,我就知道他是 leader了。而且我觉得可能就是这个问题救了我。说实话我本身就是比较耿直的山东汉子,我觉得加班没啥, leader也可能比较喜欢我这种耿直的,所以捞了我。很感谢自己的性格给了自己机会。

另一个问题为什么要拒了华为。其实华为给我开的工资算不错的了,除了hr让我有点觉得自己被瞧不起了,主要的原因是面试太水了,让我觉得进去的人水平都不会很高,然后就不想去了....我一直坚信,只有在高水平的环境里才能获得更大的成长。当然华为还是很强的,我很希望过几年能跳华为去。。。。

尾声

改变人生,没有什么捷径可言,这条路需要自己亲自去走一走,只有深入思考,不断反思总结,保持学习的热情,一步一步构建自己完整的知识体系,才是最终的制胜之道,也是程序员应该承担的使命。

以上进阶大厂面试题以及系统学习资料可以免费分享给大家,需要完整版的朋友,点这里可以看到全部内容

如果需要PDF版本可以在群文件夹里,自行领取!

进阶学习视频

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

上一篇下一篇

猜你喜欢

热点阅读