C/C++技术面试题(一)

1、Q:什么是多态
A:当子类覆盖了父类的虚函数时,父类的指针指向子类对象时,会调用虚函数,根据具体创建的对象是谁来决定执行谁的函数
2、Q:用一段代码来判断机器是16位的还是32位的
A:1、sizeof(int),32位的是4,16位的是2
2、

#include<stdio.h>
            int main()
            {
            int num = 32768;
            if(num > 32767)
            printf("32位\n");
            else
            printf("16位\n");
            }
        3、
        对0取反
#include<stdio.h>
int main()
{
 unsigned num = ~0;
 if(num >65535)
 printf("32位\n");
 else
 printf(16位\n);
}

3、Q:写一个函数,计算1-2+3-4+5-6…+n(n的值很大)

#include<stdio.h>
int main()
{
     int n;
     scanf("%d",&n);
     int sum = 0;
     for(int i=1;i<=n;i++)
     {
          if(i%2 == 1)
          sum += i 
          else
          sum += i*(-1);
     }
     printf("%d\n",sum);
}

4、Q:写一个函数,统计输入字符串的各个字符出现的次数

   #include<stdio.h>
   #include<string.h>
   int main()
   {
       char str[100];
       scanf("%s",str);
      int buf[256] = {0};
       for(int i=0;i<strlen(str);i++)
       {
          buf[str[i]-'0']++;
      }
      for(int i=0;i<128;i++)
      {
          if(0 != buf[i])
              printf("%c %d\n",i+'0',buf[i]);
      }
      printf("\n");
  }
 

5、Q:有了malloc和free为什么用new/delete
A:因为在面对非内部数据的对象而言,光是malloc/free无法满足动态对象的要求,对象在创建时要执行构造函数,释放时要自动执行析构函数,而malloc/free时库函数而不是运算符,编译器没有权力调用它们来执行构造函数和析构函数

6、Q:id[sizeof(unsigned long int)]这种写法是正确的吗?为什么?
A:正确 这个 sizeof是编译时运算符,编译时就确定了 ,可以看成和机器有关的常量。

7、Q:指针和引用的区别
A:1、指针是一个实体(数据类型),而引用实质上就是个别名
2、指针不需要初始化,而引用必须要初始化
3、指针在初始化之后能够改变,而引用不行(引用不能代表另外一个对象)
4、const只能用于指针,而不能用于引用
5、指针有多级,而引用没有
6、引用不能为空,而指针可以为空
7、指针的大小就是本身的大小,而引用的大小是它代表的对象的大小
8、指针自增是指向下一个地址,而引用是代表对象的值增加
9、程序需要为指针分配内存区域,引用不需要

8、Q:C++中有哪些传参方法
A:1、值传递
2、指针传递
3、引用传递
PS:如果是C的话,是值传递和指针传递,只写值传递也可以,因为从严格意义上来讲,指针传递也是值传递的一种,复制的是地址

9、Q:VC的DEBUG和RELEASE分别代表什么意思
A:Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。

10、Q:C++中struct和class区别
A:具有不同的默认访问控制属性,struct为public类型,而class为private类型

11、Q:描述一下重载,隐藏,覆盖
A:在同一作用域下,函数名相同,具有不同的参数列表的叫作重载
不同作用域下的同名函数,构成隐藏关系
父子类之间有虚函数,且函数签名完全相同,返回值必须是同类型或者父子类(子类的返回值要能向父类隐式转换),构成重载关系

12、Q:if(10A)
if(A
10)
第一种方法好还是第二种好?为什么?
A:第一种好,因为如果你写成了=的话,=左边不能是常量,所以会报错,而第二种会略过

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值