[C++面试高频]C++基础(三)

1.C++中怎么定义常量的?常量存在内存的哪个位置?

有三种定义方法,①#define宏常量;②const只读常量;③enum枚举常量。

对于局部常量,存放在栈上;对于全局常量,编译器不分配内存,存放在符号表中提高访问效率;对于字面值常量,如字符串,存放在常量区。

2.内存溢出常见原因及解决方法。

i.内存中加载了庞大的数据量,比如一次性加载了数据库中的所有数据。

解决:检查数据库查询,是否为一次性获得全部数据,数据库的查询应当分页查询。

ii.代码中存在死循环或产生多个重复对象实体。

解决:检查代码中是否存在死循环或者递归调用,检查是否有大循环重复产生实体。

iii.其它软件产生bug。

解决:使用内存查看工具检查内存使用情况。

iv.启动参数内存值设定过小。

解决:重设JVM值,扩大内存。

3.说说Linux常用命令

man-帮助命令

makdir-创建文件

cp-复制文件

pwd-显示当前文件目录

top-显示操作系统信息,如内存,CPU占用率,进程

kill-向进程传递结束信息

cd-切换文件目录

4.重载与重写的区别

①重载

重载是一种语言特性,与多态无关,与面向对象无关,编译器会根据函数参数列表的参数实现函数与函数调用的早绑定。它的特点是作用域相同,函数名相同,参数列表不同,不关心返回值数据类型。

②重写

重写是多态,派生类重新定义基类的虚函数。即父类的指针或引用指向子类实例的时候,父类通过指针或者引用实现子类函数调用。它的特点是作用域不同,函数名和参数列表相同,返回值相同,基类函数是virtual。

5.堆和栈的区别

①管理方式不同。栈由操作系统自动分配和释放,堆由程序员申请和释放。

②生长方向不同。堆在内存中的地址从低到高,栈的地址是从高到低。

③分配效率不同。堆的分配效率比栈低。

④空间大小不同。每一个进程的栈大小要远小于堆大小。

⑤分配方式不同。堆是动态分配,栈分为静态分配和动态分配,静态分配由操作系统完成,如局部变量的分配,动态分配由aloca()函数完成,由操作系统自动释放。

⑥保存内容不同。栈一般保存局部变量,寄存器的内容和函数返回地址,堆的堆顶首先保存着一个字节大小的堆的长度,具体内容由程序员决定。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值