【发布时间】:2012-08-17 16:59:38
【问题描述】:
我在一次采访中被问到这些问题。
- 为什么二进制代码和数据完全分开,即为什么他们计划数据段,为什么不是代码段内的所有内容?
2.
class A
{
private :
int i;
public:
void show()
{
printf("hello");
}
};
int main()
{
A* a = NULL; (what happens in object table?)
A* aa = new A(); (what happens in object table?)
a->show();
aa->show();
delete aa;
return 0;
}
aa 和 a 究竟有何不同,以及对象在内存中的行为究竟如何。
【问题讨论】:
-
在这个上下文中什么是对象表?
-
我猜这里的对象表是指编译器符号表?
-
除非你要去编译器团队工作,否则我会问为什么这很重要。编译器将使用基于每个平台定义的最佳解决方案。
-
我的意思是说show函数将如何调用以及该函数的地址存储在哪里?
-
我经常接受采访,也接受过采访。一些面试官要抓人什么——那是不公平和错误的。面试的重点不是向正在找工作的人炫耀(那个人很紧张,压力很大)。无论如何,这些公司不值得为之工作。 (这是我的咆哮和我的拙见)