【过程】
七点不到半点接到电话,开始话面:
问: C++重载、重写是什么?怎么实现的?
答:重载是编译期编译函数时,根据参数类型和个数来决定编译出的函数符号,从而实现重载(C不支持重载);重写是针对C++多态,通过虚函数表实现。
问:如何写一个类,使其不能被继承?
答:C++1标准支持final关键字,通过它可以限制;另外一个方法是通过模板(具体见《剑指offer》,当时没有答出来)。
思考:不能被继承,那么就不能让子类可调用基类的构造函数,但必须考虑的是,不能影响正常的类实例化。
问:memcpy 声明是怎样的?如何实现?
void *memcpy(void *dest, const void *src, size_t n);
答:如上(当时有点紧张,说成char类型了;还说有memncpy= =,尴尬),实现memcpy 要考虑内存存在重叠的问题。
问:字符串删除,不能乱序。
答:扫描字符串,用两个指针,一边扫描一边复制,这样时间复杂度是O(n)。
思考:当时没有真正GET到题意,就开始含糊的说,到后面才知道是删除所有重复字符,搞到很尴尬。
问:查找树节点到跟节点的路径。
答:遍历树,用栈保存路径。
【总结】
1.一面感觉很注重基础,在学习知识时必须了解其原理,多思考。
2.面试过程决不能慌,对面试官的问题有疑问,一定要问。
3.对不真正了解的东西,不要随意说出来,不然面试官会问你。(比如上面我说模板可以解决这个问题,但实际怎么做我忘记了,当面试官问怎么实现,我也没回答出来)
4.面试前的几天不要玩,一定全面沉醉在学习当中,不然毫无状态啊!(不过,当时我也是没意想到有画面,放假这几天在玩)