先说一下个人状况,8月被导员通知优研资格没有我,开始准备考上交819,9月华为大规模秋招,第一批集招offer拿到,拒了,以后学姐给了白金码,选择放弃考研全力备战字节面试,准备了一个月,10.13面试,三轮面完,10.19收到offer call秋招结束,在此期间拿到360和keep的offer,可是我都拒绝了,由于个人目标很明确!字节跳动,不面试上不罢休,其实腾讯,头条待遇都不错,可是年少轻狂,结果愣是面了9面才拿到字节跳动offer!
java
这篇文章就讲一写我9面字节跳动的面试经历!android
1. 介绍项目,讲述一下实习的工做内容和感想(~10min)git
2. 什么是内存泄漏,Android里有哪些内存泄漏的场景,缘由是什么程序员
3. JVM的GC过程,GC的算法都有哪些github
4. 进程和线程的概念,Android里怎样实现多线程?(Thread Handler AsyncTask IntentService等等)面试
5. Handler的原理和使用算法
6. Handler是怎么和线程绑定的(Looper),为何Looper.loop()要设计成死循环数组
7. Java的几种内部类,区别是什么缓存
8. Activity的生命周期和启动模式微信
9. 写题:二叉树的右视图(层序遍历便可)
一面比较短,问的问题也比较基础,大概30分钟后开始二面
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里泛型的实现
12. Java里加锁的方式,synchornized关键字的原理,悲观锁和乐观锁都有哪些实现
13. 死锁的条件和解决方法,讲讲银行家算法
14. TCP的三次握手四次挥手,为何要四次挥手
16. 怎么解决用户高频点击打开新Activity致使的多实例问题(Activity启动模式)
17. 怎么判断两个无环单链表是否相交
18. 写题:leetcode 445
19. 反问
二面问题量很是的大,集中在Java/OS/算法,但并无特别难以回答的问题,认真准备的话大部分都能答出来。面试官也很是友好,给了不少引导和提示。
由于三面面试官的时间问题,约了两天后的三面
1. 自我介绍
2. 介绍一下实习作的工做,是本身完成的吗,遇到什么困难,成果怎么样
3. RecyclerView怎么实现的item缓存,跟ListView有什么区别(由于项目用到了因此被问了)
4. 写题:leetcode 1233
5. 设计题:微信的联系人列表功能
(1)设计添加联系人的API(从可能的方式,数据形式,接口参数方面回答)
(2)怎么实现联系人列表的UI(答的RecyclerView)
(3)怎么实现A-Z首字母的快速定位功能
6. 是自学的Android吗,为何选择这个方向,有没有什么经验给一样想自学的学弟学妹
7. 是哪里人,为何想到上海来就业
8. 反问
三面的问题很少,不过由于多数问题没有标准答案,难度其实高于一二面
主要问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.字符串第一次出现一个的字符
计算机网络相关
1.osi七层架构,物理层作什么的
2.输入网址以后发生的一些列事情
3.DNS用了什么协议,具体是怎么作的
4.TCP的三次握手,以及流量控制
5.HTTP报文里有什么
6.HTTP与HTTPS有什么区别,加密算法是什么
7.HTTP的响应码有哪些?
8.get与post的区别
9.两个有序数组,找到中位数
深刻android方面以及实习经历
1.实习项目有关(包括一些具体实现,以及一些关键问题)
2.LayoutManager的做用
3.RecyclerView用的多么有哪些了解,如何去实现双层瀑布
4.如何去设计一个SDK(不少细节的问题)
5.扑克牌,抽五张是同花的几率,抽五张是顺子的几率
6.RN以及Redux的了解,好处,以及使用,以及工做中对于android和RN的比重
7.单例模式的好处,那么何时不去用单例呢?
8.SP的内部实现了解么?如何实现的序列化
9.了解注入么?
字节跳动,一共面试了3次,一共六面,总算是拿到了Offer!
最后面试字节跳动的时候一个就是三面的面试官是我 leader,他当时问我,若是给你一个两个星期才能作完的活,你想怎么办。我说,先跟您商量一下,表达一下本身的观点,若是您坚持安排给我,我就加班呗。。。还能咋整。。。。直到作完呗。。。。他噗嗤一下就笑了。。。他问了我这个问题,我就知道他是 leader了。并且我以为可能就是这个问题救了我。说实话我自己就是比较耿直的山东汉子,我以为加班没啥, leader也可能比较喜欢我这种耿直的,因此捞了我。很感谢本身的性格给了本身机会。
另外一个问题为何要拒了华为。其实华为给我开的工资算不错的了,除了hr让我有点以为本身被瞧不起了,主要的缘由是面试太水了,让我以为进去的人水平都不会很高,而后就不想去了....我一直坚信,只有在高水平的环境里才能得到更大的成长。固然华为仍是很强的,我很但愿过几年能跳华为去。。。。
改变人生,没有什么捷径可言,这条路须要本身亲自去走一走,只有深刻思考,不断反思总结,保持学习的热情,一步一步构建本身完整的知识体系,才是最终的制胜之道,也是程序员应该承担的使命。
以上进阶大厂面试题以及系统学习资料能够免费分享给你们,须要完整版的朋友,点这里能够看到所有内容。