u*****o 发帖数: 1224 | 1 话说我前几天去了学校的campus fair, 看到了nvidia的小booth那里在发卷子做题。现
场那个火爆呀,6个座位永远是满满的,很多人站着答,我才知道这家真是popular呀。
我要了一份卷子,发现好几题都不会。。就没交卷,现在和大家分享一下。因为需要我
一点点打字,所以我只写有点难度的吧。
1. what will be printed by the following code
struct Object{
unsigned char x, y, z, w;
};
int main(){
Object obj;
obj.x = 0x11;
obj.y = 0x22;
obj.z = 0x33;
obj.w = 0x44;
char* p = &obj;
for(int i=0; i<4; i++){
printf("%0xn",*((unsigned short*)++p));
}
return 0;
}
话说这能compile吗? char* p = &obj; 这句用char pointer指obj的地址,看得我很
苦恼呀
2. explain difference between is-a and has-a relationship, if you have a
list class and want to build a queue class, which of the relationship would
you use and why?
我赶脚着是has-a, 对吗?
3. what's wrong with this code, find at least 3 mistakes
class TrackedObject{
struct Position{
int x;
int y;
}
Position p;
const int id;
void display(){
cout << id <<" "<< p << endl;
}
};
struct Car: TrackedObject{
int color;
};
void doStuff(const Car &theCar){
theCar.display();
}
int main(){
Car c;
c.id = 9;
c.Position = (100,200);
c.color = 1;
doStuff(c);
}
这个感觉const Car &theCar不太对,这里的inheritance有点问题吧?
c.id = 9; 这个也不对吧,c既然是const,应该不能改的?
还有啥? 我基础语法知识不行,各种oop看的我头大。。。 |
q*******z 发帖数: 62 | 2 最后一题
1.c.id 是const没法改?
2.Position 没有定义(a,b)的constructor 和 << operator?
3.display() 不是const函数所以没法用在const对象上?
请大牛指教 |
s***e 发帖数: 403 | 3 题目很基础。
第一题考堆栈结构的。参考csapp
第二题queue不能满足list的所有操作,因此是has-a
第三题int y后面花括号少一个分号,const id需要通过构造函数初始化,cout和endl
在std名字空间里。TrackedObject里面的东西全都是private的。Position没有重载
operator<<无法从cout输出。至于Position有没有constructor是代码好不好的标准,
和对不对无关。继承没有标明默认private.theCar.display()中theCar是const的,需
要void display() const。c.id给const成员赋值也是错的。 |
c*****t 发帖数: 48 | 4 第二题 queue is also a list, so it should be is-a?
endl
【在 s***e 的大作中提到】 : 题目很基础。 : 第一题考堆栈结构的。参考csapp : 第二题queue不能满足list的所有操作,因此是has-a : 第三题int y后面花括号少一个分号,const id需要通过构造函数初始化,cout和endl : 在std名字空间里。TrackedObject里面的东西全都是private的。Position没有重载 : operator<<无法从cout输出。至于Position有没有constructor是代码好不好的标准, : 和对不对无关。继承没有标明默认private.theCar.display()中theCar是const的,需 : 要void display() const。c.id给const成员赋值也是错的。
|
s***e 发帖数: 403 | 5 我不清楚具体的说法。
queue的话应该是FIFO队列,list应该指链表。
那么queue的操作链表支持,链表的操作queue不完全支持。
这样就应该是一个“用list实现queue”的问题。
那么就应该是
class queue : private list
那么这是一个has-a的实现。
【在 c*****t 的大作中提到】 : 第二题 queue is also a list, so it should be is-a? : : endl
|
a***m 发帖数: 5037 | 6 题目很简单 第一题 那个 char* p = &obj; 按c 可以编译
面 nvidia 这种半导体公司 需要大量深入学习 c 的细节 多做点c online test |
p****U 发帖数: 109 | 7 试了一下第一题 c++ 我用的编译器下不能编译, 要强制转换一下类型才能编译。 我
以为输出会是第一个是2233n, 结果是3322n。 高位低位分不清了,好伤心。 |
p****c 发帖数: 35 | 8 第一题,i= 3的时候,*p应该输出什么呀?貌似p已经指向p本身的最后一个b
yte了吧。 |
g*******s 发帖数: 2963 | |
n*****o 发帖数: 849 | 10 "theCar.display()中theCar是const的,需要void display() const。"
这个不准确吧, theCar只是const reference,如果display是public的,那这个调用应该
没有问题.问题就是出现在display是个private函数,不能在全局性的doStaff()里面调用
endl
【在 s***e 的大作中提到】 : 题目很基础。 : 第一题考堆栈结构的。参考csapp : 第二题queue不能满足list的所有操作,因此是has-a : 第三题int y后面花括号少一个分号,const id需要通过构造函数初始化,cout和endl : 在std名字空间里。TrackedObject里面的东西全都是private的。Position没有重载 : operator<<无法从cout输出。至于Position有没有constructor是代码好不好的标准, : 和对不对无关。继承没有标明默认private.theCar.display()中theCar是const的,需 : 要void display() const。c.id给const成员赋值也是错的。
|
|
|
n*****o 发帖数: 849 | 11 基本上这些是最基本的C++概念了,如果你觉得有困难,建议看看入门级宝典:
Effective C++:55 specific ways
【在 u*****o 的大作中提到】 : 话说我前几天去了学校的campus fair, 看到了nvidia的小booth那里在发卷子做题。现 : 场那个火爆呀,6个座位永远是满满的,很多人站着答,我才知道这家真是popular呀。 : 我要了一份卷子,发现好几题都不会。。就没交卷,现在和大家分享一下。因为需要我 : 一点点打字,所以我只写有点难度的吧。 : 1. what will be printed by the following code : struct Object{ : unsigned char x, y, z, w; : }; : int main(){ : Object obj;
|
s***e 发帖数: 403 | 12 不对。
因为theCar.display()其实会编译成
__classTrackedObject_display(TrackedObject* this);
而你传入的是const指针。这样你就discard qualifier了。
调用
【在 n*****o 的大作中提到】 : "theCar.display()中theCar是const的,需要void display() const。" : 这个不准确吧, theCar只是const reference,如果display是public的,那这个调用应该 : 没有问题.问题就是出现在display是个private函数,不能在全局性的doStaff()里面调用 : : endl
|
s***e 发帖数: 403 | 13 查big endian和small endian
【在 p****U 的大作中提到】 : 试了一下第一题 c++ 我用的编译器下不能编译, 要强制转换一下类型才能编译。 我 : 以为输出会是第一个是2233n, 结果是3322n。 高位低位分不清了,好伤心。
|
s***e 发帖数: 403 | 14 不对。堆栈本身是从内存高端向下的,但是堆栈内每个元素的内容仍然是从低端向上的。
【在 p****c 的大作中提到】 : 第一题,i= 3的时候,*p应该输出什么呀?貌似p已经指向p本身的最后一个b : yte了吧。
|
y*u 发帖数: 111 | 15 请问为什么第一次P会指向33?
的。
【在 s***e 的大作中提到】 : 不对。堆栈本身是从内存高端向下的,但是堆栈内每个元素的内容仍然是从低端向上的。
|
s***e 发帖数: 403 | 16 他是++p,不是p++
【在 y*u 的大作中提到】 : 请问为什么第一次P会指向33? : : 的。
|
y*u 发帖数: 111 | 17 指针不应该是4bytes吗?为什么每次++只移动了1byte?
【在 s***e 的大作中提到】 : 他是++p,不是p++
|
S**I 发帖数: 15689 | 18 C学的太差,回去重学。
【在 y*u 的大作中提到】 : 指针不应该是4bytes吗?为什么每次++只移动了1byte?
|
c********p 发帖数: 1969 | |
c********p 发帖数: 1969 | |