SAP思爱普 C++ 校招 1面
秋招目前为止最难的一场面试,对C++的拷问实在是太细节了,基本上一个问题都没答出来,也反映出我的C++基础有多差。
开场面试官就说C++满分一百分,你给自己打几分?我当时想说的是“如果满分是一百分,我会给自己打五六十分吧”。但是说完“如果满分是一百分”就被面试官打断了,面试官说“给自己打一百分的话肯定会问你很难的问题的”。我当时以为是一句提醒,现在复盘才意识到面试官一定听错我的话了,所以当我说完“会给自己打五六十分”之后,面试官说了一句“降了这么多呀”。当时我以为面试官这句话的意思是指我对自己的打分相对于一百分很低,事后回想才意识到面试官一定是以为我开始打一百分,听他说完降到了六十分。。。
面试官会先问一些比较宽泛的问题,例如C++如何做内存资源管理,说一下C++对象模型。这类问题面试官看我无法理解会进行进一步阐释。以下为一些面试问题。
C和C++的区别;模板的作用;模板是怎样实现的;模板有哪些缺陷?
如何实现内存资源管理?智能指针相关?如果管理TCP/IP这样的网络资源?
C++静态对象有哪些;这些静态的构造时机是怎样的;全局变量和局部静态对象什么时候构造;局部静态对象构造时会进行检查吗,有什么消耗;全局对象和局部静态对象各自是线程安全的吗?
B是父类,派生出A,B中有虚函数f并被A重写,使用B的指针指向A对象,则: 若B的构造函数中调用f则调用A的f还是B的f以及为什么; 如果B中有成员函数g,g中调用了f,而B的构造函数调用了g,则是调用了谁的f以及为什么
A继承自父类B和C,如果使用B的指针ptr1和C的指针ptr2同时指向一个A对象,则ptr1和ptr2的地址是否一致?
某一个派生类继承自某个父类,它的成员变量的初始化顺序是怎样的;初始化列表顺序是否影响初始化顺序;析构时的成员变量的析构顺序又是怎样的?
switch的底层实现是怎样的;如果switch的变量范围很大例如0到1000,switch会怎样实现?
算法:说下LCS(最长公共子序列);算法的时间复杂度是多少;动态规划问题如何计算时间复杂度?
还有一些其他的问题记不太清了,最后的反问也没有问任何问题。另一方面推荐大家一定好好阅读 Effective C++,我自己秋招的过程中因为很少接触到这些细节问题基本上变成了面向面经准备。
#面经##校招##SAP公司#