程序员必看 c++笔试题汇总(1)(10)
41. 分析一下这段程序的输出 (Autodesk)
- class B
- {
- public:
- B()
- {
- cout<<"default constructor"<
- }
- ~B()
- {
- cout<<"destructed"<
- }
- B(int i):data(i) //B(int) works as a converter ( int -> instance of B)
- {
- cout<<"constructed by parameter " << data <
- }
- private:
- int data;
- };
- B Play( B b)
- {
- return b ;
- }
- (1) results:
- int main(int argc, char* argv[]) constructed by parameter 5
- { destructed B(5)形参析构
- B t1 = Play(5); B t2 = Play(t1); destructed t1形参析构
- return 0; destructed t2 注意顺序!
- } destructed t1
- (2) results:
- int main(int argc, char* argv[]) constructed by parameter 5
- { destructed B(5)形参析构
- B t1 = Play(5); B t2 = Play(10); constructed by parameter 10
- return 0; destructed B(10)形参析构
- } destructed t2 注意顺序!
- destructed t1
42. 写一个函数找出一个整数数组中,第二大的数 (microsoft)
答案:
- const int MINNUMBER = -32767 ;
- int find_sec_max( int data[] , int count)
- {
- int maxnumber = data[0] ;
- int sec_max = MINNUMBER ;
- for ( int i = 1 ; i < count ; i++)
- {
- if ( data[i] > maxnumber )
- {
- sec_max = maxnumber ;
- maxnumber = data[i] ;
- }
- else
- {
- if ( data[i] > sec_max )
- sec_max = data[i] ;
- }
- }
- return sec_max ;
- }
43. 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数。
KMP算法效率最好,时间复杂度是O(n+m)。
44. 多重继承的内存分配问题:比如有class A : public class B, public class C {}那么A的内存结构大致是怎么样的?
这个是compiler-dependent的, 不同的实现其细节可能不同。
如果不考虑有虚函数、虚继承的话就相当简单;否则的话,相当复杂。
可以参考《深入探索C++对象模型》,或者:http://blog.csdn.net/wfwd/archive/2006/05/30/763797.aspx
- 上一篇:C++的明天是否会依旧辉煌?
- 下一篇:深入剖析C/C++程序员应聘常见面试题