-  写过C++是吧? 
-  知道STL容器的allocator吗? 
-  手写代码:实现无锁同步(×:我写成了CAS操作,被打断,说特定的ARM处理器没有这个同步原语,不能依赖相关指令。包括信号量等也不行。) 
-  手写代码:自定场景,实现一个满足需求的内存池(×:晕乎乎写出了几个bug,面试官眼尖…而且自我感觉回收算法不够好,感谢放过) 
-  手写代码:从长序列中找出前K大的数字,堆排序 
-  JVM的垃圾回收算法了解吗? 
-  对象可达性分析,哪些是GC root? 
-  TCP和UDP的根本区别? 
-  什么场景下使用UDP?为什么? 
-  提问简历,关于FFmpeg 
我的提问:
-  面试官是哪个组的? 
-  字节跳动今年是否真的缺人?招聘策略是什么?(答:是。项目和实习经验吃亏没关系,今年招聘重视基础,换去年我肯定不给你过。) 
五、字节三面
-  介绍项目,高三暑假做的App 
-  画某个功能的模块图,写出相关接口 
-  这样设计有什么问题?如何改进? 
-  QQ视频聊天使用什么协议? 
-  视频聊天为何会卡顿? 
-  TCP流量控制算法的细节?(×:包速率增长的函数关系说不清楚,感谢面试官放过) 
-  假设有节点自带p的丢包率,如何判断丢包是因为带宽不够还是随机丢包导致? 
-  如果视频聊天出现卡顿,如何在应用层面缓解? 
-  手写代码:大整数加法,要求代码可读  
 性(×:又写出搞笑bug系列,被二面搞傻了)
-  Android应用中的卡顿是什么导致的? 
-  Service和Thread有什么区别?Service的代码是在哪个线程运行的? 
-  AsyncTask?Executor? 
-  AsyncTask有哪些缺点? 
-  用过IntentService吗?(×:没用过,感觉就是个适合处理单次计算任务的方便设施) 
我的提问:
-  面试官是做什么的? 
-  面试官对非科班学生有什么看法? 
-  面试官认为我存在哪些不足? 
**大厂到底还是大厂……一言不合就写代码,而且相当重视基础。**说是面经,其实就是帮助各位查漏补缺,完善技术栈。毕竟面经只是面试官拿来采样你的水平的测试用例,我遇到过各种奇怪的问题……
六、一、大体知识储备(方向)
1.数据结构+算法(非常重要!)
2.数据库
3.操作系统
4.计算机网络
5.java基础
6.linux语法
7.项目介绍
七、如何通过头条笔试?
1.平时刷题一定要总结归纳,最好分类。
比如关于树的题型,链表的,数组等等,观察它们的解题思路,总结出解题套路。
2.积累工具类算法。
什么叫工具类算法?就是你解一道算法题需要用到另一种算法,这个被调用的算法就是解决这道算法题的工具。比如常见的「深度优先遍历」、「广度优先遍历」、「01背包」、「KMP算法」以及常见的选择和排序算法都是经常使用的工具类算法。
3.学会抽象题目。
笔试算法题不同于面试算法,不会直白跟你说要使用哪种算法去解答,更多的要自己学会抽象,抛开题目本身,要明白内部讲的是什么,别被题目的糖衣炮弹迷惑了。只有把题目抽象成最原始的算法你才能更好地使用工具类算法进行解答。
八、如何准备头条面试?
头条面试和其他大厂可能大同小异,但就是这个小异才是关键地方,能异于其他人的地方。可以从如下几个方面去做准备:
1.特意准备几个面试题源码。
像我在回答一些中规中矩面试题的时候,都会从源码角度出发。比如常见的HashMap等集合类,多线程的各种锁以及大数据框架的部分源码。
2.特意准备项目难点。
面一些大厂的时候避免不了被问到项目难点,不可能用普通Bug含糊过去啊。这边可以从项目用到的技术栈出发,去寻找技术栈在项目中会存在的难点,然后套进自己的项目,找个自己能懂,最好能全懂的。
3.针对性去了解公司的技术栈使用情况。
比如头条使用Go,众人皆知,那为什么我不突击学习一下呢?比如从业内人士得知头条最早使用的是Kylin框架,后面慢慢转为ClickHouse,那我必须了解一下两者的不同啊,而且可以结合头条的业务场景。
九、一个关于如何进大厂的小建议
我一直崇尚**「曲线救国」**的做法,也一直在向别人传播这种做法。现在能力背景不足没关系,只要规划好自己的学习路线,一步步阶梯式往上爬,总可以实现目标。因为我自己二本出身,但我意识的早,大二就开始实习,用项目和实习经历弥补我背景不足,然后一步步走到「offer自由」。很多时候并不是只有巨人才可以成功,你只需要做到行动上的普通人,就可以超过很多思想上的巨人,行动上的矮子。
别人传播这种做法。现在能力背景不足没关系,只要规划好自己的学习路线,一步步阶梯式往上爬,总可以实现目标。因为我自己二本出身,但我意识的早,大二就开始实习,用项目和实习经历弥补我背景不足,然后一步步走到「offer自由」。很多时候并不是只有巨人才可以成功,你只需要做到行动上的普通人,就可以超过很多思想上的巨人,行动上的矮子。









