首页 > 字节跳动 客户端中台(C++) 超详细面经
头像
klaxxi
编辑于 2020-08-05 23:30
+ 关注

字节跳动 客户端中台(C++) 超详细面经

此面经禁止任何形式的转载,请各种公众号 知乎号绕道


前面打个小广告 本人已经入职杭州字节跳动 目前杭州团队大量招人 有意可私信 qq49081893

本人leetcode 600题+经验

可分享面试心得 刷题经验 辅导简历 帮催流程 服务到位

一面

1.手写单例模式

C++ 静态局部变量 能保证线程安全

问了别的方式std::call_once或者静态成员变量,但是一般都会用静态局部变量

C++没有java的volatile能阻止指令重排,不能用DCL

2.malloc和new

malloc分配内存

new是操作符重载 分配内存+构造函数

3.多态

C++可以用继承和模板实现 个人更倾向于模板

4.继承

讲了下虚表

5.构造函数和析构函数能不能是虚函数

析构必须为虚,构造不能,结合虚表和构造析构的调用顺序来讲

6.模板和继承的对比

模板默认内联,且没有虚表指针,调用开销小

7.模板的缺点

一个是编译慢一个是编译产物更占用内存

8.模板是怎么编译的

编译期碰到了就生成需要的代码,每个.o都会有用到的定义

所以链接的时候要去掉重定义,因此编的慢

9.智能指针

stl的三种 还有android的sp/wp都讲了一下,这块讲的比较细,面试官一直打断问细节

10.手写智能指针

11.左值右值的区别

12.完美转发

13.聊项目

14.算法 leetcode 92 反转链表 从m到n

二面:

1. 虚继承虚表

2. C++ 4种cast 区别和主要使用场景

3. 场景类算法题 有依赖关系的进程启动管理

类似leetcode 1136 平行课程

4. 聊项目

5.算法题 LFU leetcode 460


三面:

1. 聊项目

2. 下面的代码会发生什么?

class Foo {
public:
A() {}
virtual B() {}
C() { std::cout << this << std::endl; }
};
Foo* temp = nullptr;
temp->A();
temp->B();
temp->C();


1)函数A,什么都不会发生;

2)函数B,crash

3)函数C,打印地址0

C++的成员函数,如果使用了this相关的,那么编译器在编译时会给函数入参加入this指针作为入参。A不需要,因此没有this指针作为入参;B和C需要,其中B是虚函数,需要找到虚表,即需要解引用,空指针解引用直接就会崩溃,C不需要解引用,只会打印空指针的地址0。

3.算法题xml解析 有一点类似leetcode 385/591 可以看看xml解析相关的实现



四面(HR面):

聊人生 挺轻松的

总体来说 字节的流程非常快 由于个人工作原因 很难约面试时间的情况下(面试大概花了十来天)  大概是三周拿到正式offer

更多模拟面试

全部评论

(0) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐