• 一份CPP的面试题,这是要招聘大师吗?


    C++程序员试题

    (以下程序代码假设都在32位机器上运行)

    写出结果

    1.  int i=3, j=5, k;

        k = (++i) + (i++) + (j++);

    i=        j=       k=    

    2. 计算sizeof 的值.

    char str[] = “flower”

    char *p = str ;

    int n = 10;

    sizeof (str ) =    (1)

    sizeof ( p ) =    (2)

    sizeof ( n ) =    (3)

    void Foo ( char str[100])

    {

    sizeof( str ) =    (4)

    }

    void *p = malloc( 100 );

    sizeof ( p ) =    (5)

    3. char c2[10]={'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'};

    int *p1 = (int *)c2;

    char *p2 = (char *)(p1+2);

       

       *p2 =    ;

    4. 请看下面的代码是否有问题,如果有问题,请准确简要的说明。

    class A

    {

    public:

    A(){  init(); }

    virtual ~A(){}

    virtual void init();

    virtual void method();

    };

    class B : public A

    {

    public:

    B(): A(){}

    ~B(){ ~A(); }

    void init(){}

    void method();

    };

    5、下面的代码输出什么?

    #include "stdio.h"

    class Base

    {

    public:

    Base(){ printf("Base Construct\n");}

    ~Base(){ printf("Base Destruct\n");}

    void func1(void) { printf("Base func1\n"); }

    virtual void func2(void) { printf("Base func2\n"); }

    };

    class Second :public Base

    {

    public:

    Second(){printf("Second Construct\n");}

    ~Second(){printf("Second Destruct\n");}

    void func1(void) { printf("Second func1\n"); }

    virtual void func2(void) { printf("Second func2\n"); }

    };

    void main(int argc,char *argv)

    {

    Base ba;

    Second se;

    Base *pba = &se;

    Second *pse = &se;

    pba->func1();

    pba->func2();

    pse->func1();

    pse->func2();

    }

    6. 下面代码是否有问题,如果有问题,该如何修改?

        #include

    void main(int argc,char *argv)

    {

         std::vector Data;

         for(int i=0; i<10; ++i)

             Data.push_back(i);

         std::vector::iterator it;

         for(it=Data.begin(); it!=Data.end(); ++it)

    Data.erase(it);

    }

    7.下列哪些初始化是合法的为什么

    (a) int i = -1;

    (b) const int ic = i;

    (c) const int *pic = ⁣

    (d) int *const cpi = ⁣

    (e) const int *const cpic = ⁣

    8. 以下代码中的两个sizeof用法有问题吗?

    void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母

    {

        for( size_t i=0; i

            if( 'a'<=str[i] && str[i]<='z' )

                str[i] -= ('a'-'A' );

    }

    char str[] = "aBcDe";

    cout << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;

    UpperCase( str );

    cout << str << endl;

    1. void   GetMemory(char *p)   

      {   

         P = (char *)malloc(100);

       }   

      void   Test(void)   

      {   

          char *str = NULL;

          GetMemory(str);

          strcpy(str,"hello  world");   

          printf(str);

       }

     请问运行Test函数会有什么样的结果?为什么?

    回答问题

    1. 请说明strcpy、strncpy和memcpy的区别。

    2. const int giNumber = 100; (1)

       #define  iNumber  100 (2)

    (1)和(2)定义的常数,有什么不同之处,哪种更好一些?

    3. 断言(ASSERT)和异常(EXCEPTION)的区别是什么,使用的场合有什么区别?

    4.struct 和 class 有什么区别?

    5. 在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?

    6. 如果一个类会被其它类继承,那么这个类是否一定需要虚析构函数,请简要的说明原因?

    7. static 修饰函数、函数内变量;类的属性、类的函数,各起什么作用??

    编写程序

    1. 编写类String的构造函数、析构函数和赋值函数。

    已知类String的原型为:

    class String

    {

      public:

            String(const char *str = NULL);         // 普通构造函数

            String(const String &other);            // 拷贝构造函数

            ~ String(void);                         // 析构函数

            String & operate=(const String &other); // 赋值函数

      private:

            char          *m_data;                  // 用于保存字符串

    };

    请编写String的上述4个函数。

    2.写代码。有一个作图程序,需要在界面上画出几种图形,包括:方形、三角形、圆形。现在想把通过一次循环调用就把所有形状都画出来。你试着写出这些代码。(不用写具体的类实现代码,写出大致框架代码即可。)

  • 相关阅读:
    FontCreator字体精简工具快速使用指南
    cuda和cudnn安装过程
    [附源码]计算机毕业设计springboot房屋租赁系统
    Day10:寻路算法值之A*寻路算法
    openbmc开发37:webui开发—增加全屏功能
    如何测试模型的推理速度
    赶紧进来!!!干货满满!!C语言操作符详细讲解(下)
    5_torch.max的用法举例
    java毕业设计体育训练队的信息管理系统服务端源码+lw文档+mybatis+系统+mysql数据库+调试
    139.深度学习分布式计算框架-2
  • 原文地址:https://blog.csdn.net/superfreak/article/details/127863499