作者:料青山见我应如是
本科大四。 在字节官网投了简历,过了一天突然收到hr电话,问我工作倾向于北京还是上海,我说上海,然后hr说把我简历转给抖音上海hr....又过了一天(清明节前一天),再次突然收到hr电话,说我简历还行,可以免笔试直接安排面试,于是就安排了在了清明假期后的第一天下午视频面试(也就是今天4月8....)
一面(问题前后顺序记不太清,但大致有序,以下是问题和我当时的大概回答):
1、自我介绍
2、你面的是C 岗是吧,现在拿了几个offer,是哪几家
3、问问题环节:选一个你熟悉的语言,程序从源代码文件到运行,全过程是怎么样的,比如分哪些步骤,每步具体做什么,说详细。(说了C/C 预处理、编译、静态动态链接、运行几个阶段及各阶段的事情)
4、你提到了动态链接和静态链接,再说具体一些。 (略,网上可搜)
5、const A* const fun() const 各个const的作用 (略)
6、const int* const p 各个const作用 (略)
7、C 的多态是指什么 (函数重载的编译多态、虚函数的运行多态、参数模板 泛型编程、类型转化都可视作多态)
8、通过虚函数可以实现运行时多态,具体是怎么实现的,什么时候动态绑定的,说说底层原理 (回答虚函数表结构及原理 vptr指针)
9、父类的析构函数为什么最好声明为虚函数 (防止析构时内存泄漏)
10、接上个问题,什么情况会发生内存泄漏,举例 (当子类有比父类多的数据成员,特别是子类有创建于堆上的数据时,若用父类指针指向子类对象,父类析构函数如果不是虚函数,运行时父类析构函数执行而子类析构函数不执行,子类多的内存无法释放)
11、构造函数里面可以调用虚函数吗?(可以调用,编译能通过。在基类构造函数调用虚函数、子类构造函数里调用虚函数分别分析,无法实现动态绑定)
12、new和malloc的区别,new的底层过程是怎样的
13、C和C 里static各有什么作用 (static修饰局部变量、修饰全局变量、修饰函数、修饰类的数据成员和成员函数 作用各不一样,分别说)
14、外部怎么访问类的保护成员,如 定义一个类A:
class A{
public:
A(int x=0){ data = x;}
~A(){ }
protected:
int data;
};
现在有 一个外部函数 void fun(A * p){ },该函数的接口已这样写死了。 我们想在函数fun()里使用data这个数据,该怎么做。
答了两种方法,方法1:如果允许修改类A的定义,可以把fun声明为A的友元,就可以用data。
方法2:如果A不可修改,考虑继承的方式,定义一个类B继承于A,则B可以访问A的保护数据,在B中写一个公有方法对外返回该保护成员。例如代码:
class A{
public:
A(int x=0){ data = x;}
protected:
int data;
};
void fun(A* p){
//函数里定义一个类B,继承于A ,则B可以访问A的保护成员
class B:public A{ //这里公有、保护、私有继承都可以
public:
B(){ }
int getData(){
return data;
}
};
B* b = (B*)p; //把A类型指针强制转化为B类型
cout<getData()<
}
15、STL熟悉吗
16、C 四个关键字用来强制类型转化,哪几个 各自作用,有什么区别。
15、怎么在main函数之前执行一段代码,例如在控制台输出一句话。
16、编程算法题:手写代码,输入整数n,输出n个结点可以构造出多少棵不同的二叉树?(说了两种思路,都发现不可信,会有重复。。。最后也没想出来,还是太辣鸡。。)
17、那换个题吧:不公平游戏的公平玩法。假设有一枚硬币,质地不均匀,抛掷一次 出现正面的概率是p (p不为1/2),但p是多少我们是不知道的。 假设A B两个人玩游戏,我们规定这样一个规则:抛掷这枚硬币1次,正面向上则A获胜,反面则B胜,显然这个规则是不公平的,因为p不是1/2。 要求设计一种新的胜负规则:使得A B获胜的概率相等,即公平游戏。编程模拟实现。(开始没理解好题意,前后搞了好久,最后终于想出来了==)
============GG
字节的难度果然不是吹的,之前也面了两家C 的岗位,对比起来,字节问的东西确实要深入得多,大多数问题个人感觉都不是那么基础,像引用和指针得区别这种概念性得问题基本不问,提的问题 很偏重对底层机制的比较详细的分析。一面问题环节 基本都答上来了,有一两个不会,在面试官引导下也说了一些东西。问题没见过不要紧,可以根据已有的知识推测分析,面试官好像也挺满意这种“推测”的方式。
可惜第一道算法题磨了很多,差不多20分钟。。愣是没想出来,巨尴尬。。第二道也不是很流利。。 字节很看重算法编程能力,我应该是死在了第一题,一面后面试官问有什么要问的,说如果还有二面会在今天一天内进行。。。结果一下午还是没有通知,确定是凉了。。。准备不足,刷题太少,浪费了面试机会.........
牛客上看到了很多头条的面经,但抖音的面经十分稀少,前两天准备都没有太多可以参考的面经,尤其是C 岗位更少,所以写下这篇面经,希望对牛客上的后来者有所帮助吧。
作者:料青山见我应如是
来源:牛客网