L*******e 发帖数: 114 | 1 骑驴找驴,砸了面试,潜心修行,明春再战。
//1. what is the output of the following program?
class A{
public:
struct HEADER{
int a_;
double b_;
unsigned int c_;
unsigned char d_;
static int SIZE = 100;
}header;
private:
double k;
};
int main()
{
A a;
cout << "sizeof A: " << sizeof(a) << endl;
cout << "sizeof structure: " << sizeof(a.HEADER) << endl;
}
//2. What is the output of the following program?
void print(int a, int b)
{
cout<<"value a: " << a |
p********7 发帖数: 549 | |
P*******b 发帖数: 1001 | 3 我来试试
1. 20
2. 20 1
3. core dump. methodC可以出来
4. 语法错
5. 语法错
6. 乱码
7. A::foo()
8. 100
9. 0 10 40 0
10. our o
【在 L*******e 的大作中提到】 : 骑驴找驴,砸了面试,潜心修行,明春再战。 : //1. what is the output of the following program? : class A{ : public: : struct HEADER{ : int a_; : double b_; : unsigned int c_; : unsigned char d_; : static int SIZE = 100;
|
k********n 发帖数: 182 | 4 同问
【在 p********7 的大作中提到】 : 什么公司啊? onsite考这些?
|
j**l 发帖数: 2911 | |
p********7 发帖数: 549 | 6 第二题是 30 1,是不是因为传入函数的参数顺序是从右到左
第三题 是对的,不知道A *p = 0;其实是给p一个NULL指针,还是没实例化,但是他可以调用
函数,因为这些函数不占用内存。
第八题和第二题类似,应该是个随机数,因为初始化列表的顺序是从右向左,所以你调用
getnumber先,赋值在后
第九题也不对,是随机数,10,40,随机数。只有全局变量才初始化为0
【在 P*******b 的大作中提到】 : 我来试试 : 1. 20 : 2. 20 1 : 3. core dump. methodC可以出来 : 4. 语法错 : 5. 语法错 : 6. 乱码 : 7. A::foo() : 8. 100 : 9. 0 10 40 0
|
t*****j 发帖数: 1105 | 7 第一题怎么会是20?我算出来是21,static的那个数字大小没算上去。
哪位高人讲解下?还有Header的size应该是多少?
【在 L*******e 的大作中提到】 : 骑驴找驴,砸了面试,潜心修行,明春再战。 : //1. what is the output of the following program? : class A{ : public: : struct HEADER{ : int a_; : double b_; : unsigned int c_; : unsigned char d_; : static int SIZE = 100;
|
p********7 发帖数: 549 | 8 我不是高人,但是我知道static变量是在这里占用内存的,是在静态变量区。
如果是个空的struct,会占用1byte,不是因为有static
【在 t*****j 的大作中提到】 : 第一题怎么会是20?我算出来是21,static的那个数字大小没算上去。 : 哪位高人讲解下?还有Header的size应该是多少?
|
h**k 发帖数: 3368 | 9 第一题不对,class size是32,struct size 是24。第一个int要和第二个double对齐
,所以是8个字节;char要补到4个字节;static变量不占空间。
【在 P*******b 的大作中提到】 : 我来试试 : 1. 20 : 2. 20 1 : 3. core dump. methodC可以出来 : 4. 语法错 : 5. 语法错 : 6. 乱码 : 7. A::foo() : 8. 100 : 9. 0 10 40 0
|
t*****j 发帖数: 1105 | 10 32 24这个答案是对的,我在计算机上试过了。
为什么要对齐,我不太明白。高人讲讲?
第二题确实是 30 1,计算机试过了。
【在 h**k 的大作中提到】 : 第一题不对,class size是32,struct size 是24。第一个int要和第二个double对齐 : ,所以是8个字节;char要补到4个字节;static变量不占空间。
|
|
|
P*******b 发帖数: 1001 | 11 你们用的啥编译器?
【在 t*****j 的大作中提到】 : 32 24这个答案是对的,我在计算机上试过了。 : 为什么要对齐,我不太明白。高人讲讲? : 第二题确实是 30 1,计算机试过了。
|
p********7 发帖数: 549 | 12 我用gcc为啥是28,20.。。。
【在 P*******b 的大作中提到】 : 你们用的啥编译器?
|
a****n 发帖数: 1887 | 13 还算简单, 两个地方需要注意:
第二题 什么答案都是错的,google "sequence point"
第六题 memset(p, 'A', 10);memset 中的第二个参数为unsigned char |
P*******b 发帖数: 1001 | 14 我估计你们的8字节对齐。我的是4字节对齐
感觉4字节对齐更多吧。
另外这道题有错误。static赋值不对吧?
【在 p********7 的大作中提到】 : 我用gcc为啥是28,20.。。。
|
w*****3 发帖数: 101 | |
P*******b 发帖数: 1001 | 16 这里没有sequence point的概念吧。
【在 a****n 的大作中提到】 : 还算简单, 两个地方需要注意: : 第二题 什么答案都是错的,google "sequence point" : 第六题 memset(p, 'A', 10);memset 中的第二个参数为unsigned char
|
L*******e 发帖数: 114 | 17 I tried to write down all I can remember after the interview, probably not
accurate. Correct any grammar errors if you find.
【在 P*******b 的大作中提到】 : 我估计你们的8字节对齐。我的是4字节对齐 : 感觉4字节对齐更多吧。 : 另外这道题有错误。static赋值不对吧?
|
k********n 发帖数: 182 | 18 第八题初始化的顺序应该是member定义的顺序吧
可以调用
调用
【在 p********7 的大作中提到】 : 第二题是 30 1,是不是因为传入函数的参数顺序是从右到左 : 第三题 是对的,不知道A *p = 0;其实是给p一个NULL指针,还是没实例化,但是他可以调用 : 函数,因为这些函数不占用内存。 : 第八题和第二题类似,应该是个随机数,因为初始化列表的顺序是从右向左,所以你调用 : getnumber先,赋值在后 : 第九题也不对,是随机数,10,40,随机数。只有全局变量才初始化为0
|
p********7 发帖数: 549 | 19 you are right
【在 k********n 的大作中提到】 : 第八题初始化的顺序应该是member定义的顺序吧 : : 可以调用 : 调用
|
L*******e 发帖数: 114 | 20 GS
【在 j**l 的大作中提到】 : 难道是Bloomberg?
|
|
|
h**k 发帖数: 3368 | 21 我用的机器也是32bit操作系统。你可以用sizeof(void *)看看,如果是4就是32位系统。
C++不允许这样给非const的静态成员初始化,我猜楼主是漏了const。
【在 P*******b 的大作中提到】 : 我估计你们的8字节对齐。我的是4字节对齐 : 感觉4字节对齐更多吧。 : 另外这道题有错误。static赋值不对吧?
|
h**k 发帖数: 3368 | 22 http://en.wikipedia.org/wiki/Data_structure_alignment
【在 t*****j 的大作中提到】 : 32 24这个答案是对的,我在计算机上试过了。 : 为什么要对齐,我不太明白。高人讲讲? : 第二题确实是 30 1,计算机试过了。
|
s*****n 发帖数: 5488 | 23 考的struct要加padding吧。这个和机器位数有关。
【在 t*****j 的大作中提到】 : 第一题怎么会是20?我算出来是21,static的那个数字大小没算上去。 : 哪位高人讲解下?还有Header的size应该是多少?
|
s*****n 发帖数: 5488 | 24 c 压栈方式从右到左。pascal从左到右。
【在 w*****3 的大作中提到】 : 谁能讲讲第二题wsm 是30,1?
|
s*****n 发帖数: 5488 | 25 题目挺好。不过有经验的加上看看effective C++应该搞定不少。
【在 L*******e 的大作中提到】 : 骑驴找驴,砸了面试,潜心修行,明春再战。 : //1. what is the output of the following program? : class A{ : public: : struct HEADER{ : int a_; : double b_; : unsigned int c_; : unsigned char d_; : static int SIZE = 100;
|
x****k 发帖数: 2932 | 26 第一题应该是 static const int SIZE = 100;(Effective C++, 3rd edition
, item 2)
具体结果depends compiler和编译选项。32 24是可能值之一。g++下是28 20,static
const int size不占sizeof的空间,按照4byte alignment。
可以用 -fdump-class-hierarchy dump出class的layout文件。
第二题在C++ compiler下应该是不确定。但我见过的编译器都是从右到左进行参数计算
,但g++会给warning “test.cpp:28: warning: operation on ‘i’ may be
undefined”,
test.cpp line 28 is like "fun(i++, i++)"
Effective C++, 3rd edition, item 17, P76
C++ compilers are granted considerable latitude in determining the ord |
C*********0 发帖数: 124 | 27 不是很懂,不过还好有驴,所以还是有机会的,加油! |
c******r 发帖数: 300 | 28 第6题应该是k is undefined的吧。
【在 P*******b 的大作中提到】 : 我来试试 : 1. 20 : 2. 20 1 : 3. core dump. methodC可以出来 : 4. 语法错 : 5. 语法错 : 6. 乱码 : 7. A::foo() : 8. 100 : 9. 0 10 40 0
|