C++11
答:手动分析、依赖关系转为类间的继承关系
反问:3个变量手动分析,那300个变量呢?
答:不会
全局静态变量先初始化,第一次调用函数时,初始化函数内的静态变量
这个当时说的是先初始化全局静态,再全局非静态,说错了。
应该是无特定顺序,先定义则先初始化。
静态多态:函数重载,函数名相同但参数列表不同,简单说了下使用场景
动态多态:子类对父类的虚函数重写,虚函数表
对象的头部字节
虚函数表在代码段,不可以被修改,否则会引发段错误。
class Test
{
public:
void hello() {
printf("hello\n");
}
};
int main()
{
Test *p = nullptr;
p->hello();
return 0;
}
问:上述代码可以编译通过吗?可以执行吗?
答:虽然p指向空,但其类型被编译器解释为Test,可以正常调用hello函数,但这种空悬挂指针实际上是未定义行为。
问:p可以正常调用hello吗?可以正常执行吗
答:(内心OS:???)可以执行
问:假如Test有个父类,hello函数重写了父类的hello函数,还能执行吗?
答:可以
当时答的是原程序被操作系统加载进内存,不会受到影响,但好像不对。
free可以查看已使用/已分配/已缓存的内存大小
htop查看每个进程的虚拟内存/物理内存使用大小
答:valgrind/asan可以给出内存泄漏的位置和大小
问:一般是不太精确的,该怎么找出是哪一段代码引起泄漏
答:工具+人工看代码
问:代码量太大,人工不现实
不会,完全瞎扯。
一开始从客户端的角度去说,能否ping通服务器,dns设置等等,但面试官表示不应该让用户去做这些。
然后又从服务器角度说,可能用户被服务器黑名单封禁。但面试官也不满意。