欢迎来到天天文库
浏览记录
ID:28376171
大小:184.50 KB
页数:82页
时间:2018-12-09
《大公司笔试题目.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、大公司笔试题目1一个父类写了一个virtual函数,如果子类覆盖它的函数不加virtual,也能实现多态?在子类的空间里,有没有父类的这个函数,或者父类的私有变量?(华为笔试题)答案:只要基类在定义成员函数时已经声明了virtue关键字,在派生类实现的时候覆盖该函数时,virtual关键字可加可不加,不影响多态的实现。子类的空间里有父类的所有变量(static除外)。2.main主函数执行完毕后,是否可能会再执行一段代码?(朗讯的一道笔试题)答案:可以,可以用_onexit注册一个函数,它会在main之后执行;如果你需要加入一段在main退出后执行的
2、代码,可以使用atexit()函数,注册一个函数。 语法: #include int atexit(void (*function)(void)); #include #include void fn1( void ), fn2( void ), fn3( void ), fn4( void ); int main( void ) { atexit( fn1 ); atexit( fn2 ); atexit( fn3 ); atexit
3、( fn4 ); printf( "This is executed first." ); } void fn1() { printf( "next." ); } void fn2() { printf( "executed " ); } void fn3() { printf( "is " ); } void fn4() { printf( "This " ); } 结果:This is executed first. This is executed next. 3.
4、有双向循环链表结点:(华为面试题)typedefstructnode{intdate;structnode*front,*next;}_Node;有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两上链表中date值相同的结点删除参考算法: 1.取出A的一个元素d 2.收集B中有相同元素d的结点到垃圾箱,并从B里删除 3.收集A中有相同元素d的结点到垃圾箱,并从A里删除 4.删除垃圾箱中的所有元素 5.A链的指针指向下一个 6.重复1~5,直到A链循环到头了 注意的是第3步,在2步执行后垃圾箱不为空时
5、才执行。 上述算法还可以做一点点优化: 1.加入两个变量cA, cB,分别记录当前A中和B中的元素个数 每次从较长者中取出一个元素来,先从较小者中找起 若没有,则不必在较长者中浪费时间了#include ? struct NODE { int date; NODE *front,*next; }; void redel(NODE *&ahead,NODE *&bhead) { int boy=0; NODE *pa=ahead,*pb=bhead,*paa,*paaa,*paaaa,
6、*pbb; while(pa->next!=ahead) { int boys=pa->date; //取pa中一个值 paaaa=pa; paa=pa; pb=bhead; while(pb->next!=bhead) { if(boys==pb->date) //如果pa,pb中有值相同 { cout<7、 cout<<"delete B:"<date<<" "; if(pb==bhead) { boy=1; pb->front->next=pb->next; pb->next->front=pb->front; bhead=bhead->next; p8、bb=pb; pb=pb->next;
7、 cout<<"delete B:"<date<<" "; if(pb==bhead) { boy=1; pb->front->next=pb->next; pb->next->front=pb->front; bhead=bhead->next; p
8、bb=pb; pb=pb->next;
此文档下载收益归作者所有