一面:
1. 从 k 位开始反转链表
二面
1. C++ socket的架构模式
2. 线程调度中,切换线程的详细过程
3. 找出树上任意节点的公共父节点
三面
1. 分析下面程序的输出
class A{
public:
virtual void F(){cout<<"1"<<",";}
void CallF(){ F(); }
virtual ~A(){ CallF(); F();}
};
class B : public A{
public:
void F(){cout<<"2"<<",";}
void CallF(){ F(); }
~B(){}
};
class C : public B{
public:
void F(){cout<<"3"<<",";}
void CallF(){ F(); A::CallF(); }
~C(){CallF();F();}
};
int main() {
A* p = new C;
p->CallF();
delete p;
return 0;
}
// 3 3 3 3 1 1
知识点:
- 虚函数自动继承
- 析构函数中子类已经被析构,不调用子类复写的函数。
2. 解读下面代码堆空间和栈空间的变化
{
vector<int> arr(10);
}