欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

面试题:哔哩哔哩|算法工程师

程序员文章站 2022-07-14 13:02:42
...

一、笔试题
笔试题1:自定义函数实现strcpy()函数的功能;

char *strcpy(char *strDestination, const char *strSource)
{
assert(strDestination != NULL && strSource != NULL);
char *str = strDestination ;
while((*strDestination ++=) != *strSource++ != '\0');

return strD;
}

笔试题2:原地翻转带头结点的单链表;

struct Node {
    int data;
    Node *next;
};

void reverse(Node* head)
{

    if (head == NULL||head->next == NULL) return;

    Node* pre = NULL;
    Node* cur = head->next;
    Node* next;

    while (cur) 
    {
        next = cur->next;
        cur->next = pre;
        pre = cur;
        cur = next;
    }

    head->next = pre;
}

二、问答题:
谈一谈C++的多态是如何实现的?
1、C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数;
2、虚函数,子类函数为什么能覆盖父类函数?
答:存在虚函数的类都有一个一维的虚函数表叫做虚表,类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。

相关标签: 学习C++