英伟达笔试题回忆

来源:互联网 发布:mysql数据库修改密码 编辑:程序博客网 时间:2024/05/17 04:12

今天是2013-10-19,去笔试了英伟达(嵌入式工程师),题目很多,试卷发下来13页!!!题目涉及C/C++以及linux的问题,其中还有一道汇编题(不会做)。

因为只会C/C++,所以只做了关于这方面的,有两道题印象深刻(想了很久),其他的要么不记得了要么根本没有看。现在回忆如下,希望后来者有帮助。

其中一道:已知一个自然数S(S>=10)可以分成n个自然数之和,S=a1+a2+.......+an;求一种分法使的a1*a2*......*an最大,写出实现的函数,并数学理论推导一下证明你的算法。


其中一道:已知一个数组Matrica[M][N],按顺时针打印数组,如4*4数组

Matrica[4][4]={ 1,2,3,4

                        5,6,7,8

                        2,3,4,6

                        2,5,7,9}  打印成1,2,3,4,8,6,9,7,5,2,2,5,6,7,4,3

参考:http://blog.163.com/huang_zhong_yuan/blog/static/17497528320115304354412/

#include<stdio.h>#include<iostream.h>   void PrintMatrixClockwisely(int** a, int row, int col){    if(a == NULL || row <= 0 || col <= 0)        return;    int i = 0, j = 0, k = 0;    for(i = 0; i < row/2 + row%2; i++){        for(j = i; j < col - i; j++){            cout << a[i][j] << " ";        }        j--;        for(k = i + 1; k < row - i; k ++)            cout << a[k][j] << " ";        k=row - i - 1;        j=col - i - 2;        for(; j >= i; j--)            cout << a[k][j] << " ";        k = row - i - 2;        j = i;        for(; k >i; k--)            cout << a[k][j] << " ";    }}int main(){int i;    const int row = 5;    const int col = 5;    int** a = (int**)(new int[row]);    for(i = 0; i < row; i++)        a[i] = new int[col];    int k = 1;    for(i = 0; i < row; i++){        for(int j = 0; j < col; j++)            a[i][j] = k++;    }    for(i = 0; i < row ;i++){        for(int j = 0; j < col; j++)            printf("%4d ", a[i][j]);        cout << endl;    }    PrintMatrixClockwisely(a, row, col);return 1;}
输出:

   1    2    3    4    5   6    7    8    9   10  11   12   13   14   15  16   17   18   19   20  21   22   23   24   251 2 3 4 5 10 15 20 25 24 23 22 21 16 11 6 7 8 9 14 19 18 17 12 13

还有一道问答题:虚函数是什么?在C++如何实现?虚函数表如何实现虚函数功能(C)。

    C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。虚函数可以做到动态绑定,为了实现动态绑定,编译器是通过一个虚函数表,在运行时间接的调用实际上绑定的函数来达到动态绑定。虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。


有好的思路么?