谁会让自己的老婆吃紧急避孕药呢?# Love - 情爱幽幽
n*n
1 楼
昨天早晨电面BB,no luck.
主要是对印度人的口音还是有些不习惯,而且不明原因昨天有一段时间电话背景噪音非
常大,非常影响面试。
题目如下:
1. 打印Hello World字符串。这题看起来简单,但是如果概念不清,很容易弄错或者绕
很久。
回忆了一下,回头又编了一次,代码应该是
void foo(char** a){
*a = "hello world";
}
int main(){
char* c;
foo(&c);
printf("%s",c);
return 0;
}
这题的trap就在char* c之后,只是声明了c但并没有定义c。如果用debugger trace,就
会发现&c = 0x0012ff40但是c是一个bad pointer,即里面是garbage value, 这时候如
果直接用foo(c),编译器会提示错误: the variable "c" can't be used without
definition. 这和下面这段程序是一个道理:
void bar(int a){
cout << a << endl;
}
int main(){
int c;
bar(c); // can't do this! c has garbage value now.
return 0;
}
这里面的原因就在于c是在栈上生成的,所以系统给的是garbage value, 不是默认值0.
所以唯一的办法 就是把c本身的地址传进foo,即把foo写成void foo(char** c), 在
main里调用foo(&c).希望版上的各位看了以后 不要和我犯一样的错误!
第二题以后就简单了。
2. c中static的用法。
3. oo design: how to design a car (wheels, steer, engine, number of seats...)
4. c++ polymorphism
5. what is dynamic binding? how is it implemented with vptr and vtbl?
6. 5 gallon bottle and 3 gallon bottle -> how to get 4 gallon warter?
早晨就受到了thank you letter, 被bb发了好人卡,版上各位继续加油!
主要是对印度人的口音还是有些不习惯,而且不明原因昨天有一段时间电话背景噪音非
常大,非常影响面试。
题目如下:
1. 打印Hello World字符串。这题看起来简单,但是如果概念不清,很容易弄错或者绕
很久。
回忆了一下,回头又编了一次,代码应该是
void foo(char** a){
*a = "hello world";
}
int main(){
char* c;
foo(&c);
printf("%s",c);
return 0;
}
这题的trap就在char* c之后,只是声明了c但并没有定义c。如果用debugger trace,就
会发现&c = 0x0012ff40但是c是一个bad pointer,即里面是garbage value, 这时候如
果直接用foo(c),编译器会提示错误: the variable "c" can't be used without
definition. 这和下面这段程序是一个道理:
void bar(int a){
cout << a << endl;
}
int main(){
int c;
bar(c); // can't do this! c has garbage value now.
return 0;
}
这里面的原因就在于c是在栈上生成的,所以系统给的是garbage value, 不是默认值0.
所以唯一的办法 就是把c本身的地址传进foo,即把foo写成void foo(char** c), 在
main里调用foo(&c).希望版上的各位看了以后 不要和我犯一样的错误!
第二题以后就简单了。
2. c中static的用法。
3. oo design: how to design a car (wheels, steer, engine, number of seats...)
4. c++ polymorphism
5. what is dynamic binding? how is it implemented with vptr and vtbl?
6. 5 gallon bottle and 3 gallon bottle -> how to get 4 gallon warter?
早晨就受到了thank you letter, 被bb发了好人卡,版上各位继续加油!