我是在校招的时候参加了今日头条的招聘,岗位是C++,最后成功拿到了入场券。但是这也丝毫不值得骄傲。
大家都知道:技术日新月异,要是几个月不更新自己的技术栈,就会被时代淘汰。简单点说,我那个在学习scratch编程的小学生弟弟,都会关注MIT LKG团队是否更新版本,3.0来了,那么2.0对不起了,转手抛弃。
(更何况大佬那么多,我不过是个才入门的小弱鸡~)
以下是我总结进入头条的两大决定性因素:
一是,刷面经和笔试题非常关键。你将会在搜集资料的过程中了解到头条系的状况,具体岗位所面临的问题和笔面试的风格特征,做到有备无患。
二是,面试官会更偏爱逻辑思维强的人,在网上就有这样一个例子:
且不说这个故事真实性如何,其中头条系的风格是被体现得淋漓尽致。毕竟理工男是真的多,在工作中,会特别讲究逻辑思维。没有逻辑的人,是混不下去。
最后给大家分享一下我的面试过程,希望能给大家一些参考。
(题目顺序有些不分先后,但大致有序)
第一面(50 min)
1、进程和线程的区别和其使用等
常规题。
2、tcp和udp的区别
常规题。
3、http协议和https协议的不同和其大概原理
还好前几天看了一篇HTTPS的科普,我就讲了一下https的加密方法,和公钥私钥的使用。
4、三次握手和四次挥手的过程和为何如此设计的原因
TCP连接是双工的,围绕这一点说了很多。
5、linux了解嘛?说一下基础命令,做过linux的相关开发吗?
不了解,基本命令也不会,很尴尬。
6、智能指针了解吗?说一下
说了shared_ptr和auto_ptr这些,讲了一下它们的表现效果和使用时机,还有可能造成的错误。
7、写一下中序遍历的非递归写法
其实以前没实现过非递归的,在纸上画了一下,想到用栈,然后两分钟写好就直接过了
8、几个sizeof的题,就是int* a=malloc(10),cout<<sizeof(a)<<endl之类。
关键是还答错了一个,很尴尬
9、多线程的同步方法和如何使用
锁
中断
信号量
原子操作
…
10、进程间通信的方法,还有它和socket通信的相同和不同点在哪儿,使用时机是何时?
管道
消息
共享文件
11、linux的进程间通信和windows有何不同?是否了解?
其实应该是消息机制的不同,没说好。
面完面试官说马上有第二面,等几分钟,我说ok,然后很快另外一个面试官就来进行第二面。
第二面(1 h 29 m)
1、聊项目,你这个项目的这个点是怎么实现的,难点在哪儿?
2、说说你做的最难的一个项目,讲一下为什么,难点在哪儿?
3、说说你收获最大的一个项目,说说为什么?
然后和我说了很久的项目的细节和效果表现
4、malloc和alloc的区别
为了说点我擅长的地方,我额外讲了一下操作系统的页和操作系统对进程的内存分配方式还有段页的情况,内存碎片,还有malloc背后的空闲内存链表,然后回答了问题——两者的不同点。
5、你实现的vector和STL的vector的区别和优越性。
空间复杂度很高,但是时间复杂度比STL的要低。
6、vector何时进行空间的搬运?
老问题。
7、大批量对象的搬运进行了怎样的优化?
讲了一下placement new 和operator new的不同表现,和通过placement new进行内存搬运的优点
8、为什么要vector的新空间为2倍?
我记不太清了,就随便说了一下内存对齐之类的。
9、找出其他所有的数都出现两次的数组中只出现一次的数。
这个一直想不起来最优解,关键是我以前刷过这个题。
先说了一个直接冒泡比较的暴力方法,然后用快排思想想了一个优化方法,还用到了map,就是想不起来异或这个简单的方法,真是让人头大。
10、现场写代码,翻转句子中的单词(如hello world – > olleh dlrow),翻转句子中单词的顺序(hello world --> world helllo)
这道题后一个也一直没想出最优解。
差不多就是这样了,感觉编程题的算法不算很难,但主要是考验你的代码能力和debug能力,对于基础这些问的很仔细和全面,操作系统,C++,网络,linux,数据结构和基本工作会用到的算法,都问了一个遍,问了的基本上都答上了(除了linux方面的东西,我直接说的我不太熟悉就没再问了)。
面完第二天给我打电话约第二天晚上面试,然后第二天早上给我打电话,因为面试官临时有事更改到了后一天,其实这样也好,缓解了一下我的紧张。
第三面(45min)
感觉这面答得不算太好,虽然全都能说很久,但是深度没说上去,一直在说车轱辘话。
1、自我介绍
2、介绍一下你的这几个项目
3、你这个项目的细节
然后就一直在交流我的项目,说了挺久,感觉面试官是这方面的大佬
4、项目细节和我具体项目有关,就不多说了
5、讲一下malloc的整过程
然后一样的说。
6、讲一下如何设计内存管理系统
我说要根据不同的使用习惯来构建不同的分配和管理策略,然后就说了一下不同情况如何进行内存管理。
7、如何进行内存碎片的管理?
我这里的确有点忘记了,就大致说了一下malloc的解决方式,感觉没说好。
8、智能指针的实现方法
三面都有这个题,我就说了一下我熟悉的两个auto和shared。
9、那你用代码来实现一下这个shared_ptr
我就写了一下,模版编程,第一次写完一运行,爆了很多页的错,然后慢慢改,花了十多分钟,最后也算写好了。
然后写了一段测试跑了一下,然后又有点错,然后又改,慢慢完善,然后面试就基本上要结束了。
10、一段代码,说一下运行结果
class A {
public: void f1() { }
virtual void f2() {}
};
A* a = nullptr;
a->f1();
a->f2();
1
2
3
4
5
6
7
比较简单,但是直接说出来肯定没什么亮点。
就再说了一下this指针,然后讲了一下类与成员函数的关系,如何通过编译器的方式去实现的成员函数,和成员变量的访问方式……
11、有什么想问的吗?
问了几个组内的情况和我如果能进的话做什么的情况,就结束了。
以上~
相关推荐
在准备字节跳动的面试时,了解网络系统、Java开发和数据库的相关知识至关重要。面试题目通常会涵盖这些领域的核心概念和技术,以测试候选人的综合技能和深入理解。以下是一些关键知识点的详细解释: 1. **网络系统*...
- Java中有许多内置的输入输出流类,用于处理不同类型的数据流,比如字节流(InputStream、OutputStream)和字符流(Reader、Writer)等。 4. Java中的文件类File。 - File类提供了一种用于操作文件系统中的文件...
在字节跳动面试中,面试官可能会考察你对这些领域的理解和实践经验。例如,他们会询问你对分布式系统的理解,如何设计高可用、高并发的系统,以及如何优化资源利用率。此外,对于云服务的熟悉程度,如AWS、Azure或...
在准备字节跳动的Java面试时,了解和掌握一系列核心知识点是至关重要的。下面将对这些关键领域进行深入解析,帮助你为字节跳动的一面、二面、三面以及HR面试做好充分准备。 1. **Java基础**: - **数据类型**:...
"字节跳动的组织创新" 一、组织创新概述 ...字节跳动的组织创新是其高速增长和发展的关键,企业可以学习和借鉴字节跳动的组织创新精神和能力,建设自己的组织能力和创新文化,推动公司不断创新和发展。
字节跳动,百度的 ” “威力加强版” :虽然媒体热衷于炒作“头腾大战”,字节跳动最贴切的对标其实是百度。它具备百度巅峰期的优点(技术领先、销售强势),又避免了导致百度衰落的缺点(不重视用户体验、执行力...
《2017-2020字节跳动安卓面试历年真题解析》文档是针对有意加入字节跳动的安卓开发者的宝贵资源。它详尽地收集了过去四年间字节跳动在安卓面试中出现的问题及对应的解答,为准备面试的工程师提供了全面的复习材料。...
【字节跳动面试题】涉及了广泛的IT知识领域,主要涵盖了操作系统、数据结构、数据库、并发编程、垃圾回收、网络、系统设计、Java虚拟机(JVM)、框架及中间件等多个方面。以下是对这些知识点的详细解释: 1. **Linux...
在准备2022年字节跳动前端面试的过程中,了解和掌握最新的面试题型及解题思路至关重要。以下是对2021年字节跳动前端面试题的详细解析,旨在帮助你全面理解前端技术栈的核心知识和面试技巧。 1. HTML与CSS基础: - ...
字节跳动产品经理面试经验分享
根据提供的文件信息,以下是关于字节跳动人才管理体系及相关知识点的详细解析: ### 字节跳动人才管理体系概述 #### 一、公司发展历程 字节跳动成立于2012年,其后迅速发展并推出了多款知名产品。字节跳动采用灵活...
前端-字节跳动面试经历
【Java开发-字节跳动面试真题解析】 ...综上所述,这份Java开发-字节跳动面试真题涵盖了Java开发人员所需的核心技术和实战经验,通过深入学习和实践,可以提升个人的竞争力,为成功面试打下坚实的基础。
字节跳动Java面试全解手册,瞬间登顶GitHub,限时开源(csdn)————程序
以上知识点来源于【第二期2020字节跳动面试题及解析.pdf】文件的部分内容,是关于Java面试中Mybatis、ZooKeeper和Dubbo等技术栈的详细知识点。通过对以上知识点的掌握,能够帮助应聘者更好地准备字节跳动等大型...
在准备字节跳动的Java笔试和面试时,掌握一系列关键知识点是至关重要的。这份"字节跳动Java笔试面试题汇总"包含了丰富的题目,旨在帮助求职者深入了解Java编程语言和字节跳动的技术栈需求。以下是一些核心Java知识点...
字节跳动HRBP面试经验分享 字节跳动作为一家技术型企业,对HRBP(Human Resources Business Partner)的要求非常高。HRBP需要具备强的业务理解能力、优秀的沟通能力和敏锐的商业头脑。以下是字节跳动HRBP面试的经验...
在准备字节跳动的Android面试时,了解和掌握一系列关键知识点是至关重要的。这份2017-2020年的面试真题解析涵盖了多个领域,旨在帮助求职者全面复习并提升自己的技能水平,从而顺利进入这家知名的大厂。 一、计算机...
### 2021Java字节跳动面试题——面向字节_MongoDB.pdf #### 知识点一:NoSQL数据库与RDBMS的区别及其应用场景 - **NoSQL数据库含义**:NoSQL(Not Only SQL)指的是非关系型数据库,这类数据库与传统的关系型...