![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试问题
linux_lzj_cainiao
这个作者很懒,什么都没留下…
展开
-
C++类对象共享数据的5种实现方法
C++中实现数据共享的5种方式:1. 使用局部变量和全局变量共享数据 使用局部变量能够在调用和被调用函数之问通过参数传递实现不同函数块之问的数据共享。局部变量具有局部作用域,能很好地实现函数之间的数据隐蔽。但在传递过程中需要很大的系统开销,故一般只用于传递少量的数据。全局变量具有文件作用域。全局变量所存储的数据在程序中任何地方都可以访问,能够在程序中的所有函数之间实...转载 2019-01-12 00:01:22 · 528 阅读 · 0 评论 -
堆栈溢出一般是由什么原因导致的?
题目:堆栈溢出一般是由什么原因导致的?答:1.函数调用层次太深。函数递归调用时,系统要在栈中不断保存函数调用时的现场和产生的变量,如果递归调用太深,就会造成栈溢出,这时递归无法返回。再有,当函数调用层次过深时也可能导致栈无法容纳这些调用的返回地址而造成栈溢出。2.动态申请空间使用之后没有释放。由于C语言中没有垃圾资源自动回收机制,因此,需要程序主动释放已经不再使用的动态地址空间。申请的动态...转载 2019-03-07 23:20:12 · 1811 阅读 · 0 评论 -
进程和线程的区别
进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。一个程序至少一个进程,一个进程至少一个线程。为什么会有线程?每个进程都有自己的地址空间,即进程空间,在网络或多用户换机下,一个服务器通常需要接收大量不确定数量用户的并发请求,为每一个...转载 2019-01-08 23:01:20 · 62 阅读 · 0 评论 -
内存分配方式
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。堆,就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个 new 就要对应一个 delete。如果程序员没有释放掉,...转载 2019-01-08 17:04:50 · 58 阅读 · 0 评论 -
C++多态有哪几种方式?
(1)静态多态(重载,模板)是在编译的时候,就确定调用函数的类型。(2)动态多态(覆盖,虚函数实现)在运行的时候,才确定调用的是哪个函数,动态绑定。运行基类指针指向派生类的对象,并调用派生类的函数。虚函数实现原理:虚函数表和虚函数指针。纯虚函数: virtual int fun() = 0;多态基础介绍:========================================...转载 2019-01-08 16:53:20 · 3034 阅读 · 1 评论 -
C++中指针和引用的区别
1.指针和引用的定义和性质区别:(1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。如:int a=1;int *p=&a;int a=1;int &b=a;上面定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单元的地址。而下面2句定义了一...转载 2019-01-08 16:10:36 · 75 阅读 · 0 评论 -
C++ 自由存储区是否等价于堆?
“free store” VS “heap”当我问你C++的内存布局时,你大概会回答:“在C++中,内存区分为5个区,分别是堆、栈、自由存储区、全局/静态存储区、常量存储区”。如果我接着问你自由存储区与堆有什么区别,你或许这样回答:“malloc在堆上分配的内存块,使用free释放内存,而new所申请的内存则是在自由存储区上,使用delete来释放。”这样听起来似乎也没错,但如果我接着问...转载 2019-01-08 15:04:13 · 124 阅读 · 1 评论 -
new和malloc的区别
new和malloc的区别是C/C++一道经典的面试题,我也遇到过几次,回答的都不是很好,今天特意整理了一下。0. 属性new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持。1. 参数使用new操作符申...转载 2019-01-08 15:01:54 · 203 阅读 · 0 评论 -
几个常见的数据存储区
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区 (1).栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 (2).自由存储区,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系...原创 2019-01-13 21:24:44 · 1478 阅读 · 0 评论 -
c++链表对应节点相加
题目:给定两个链表,分别表示两个非负整数。它们的数字逆序存储在链表中,并且每个节点只存储一个数字,计 算两个数的和,并且返回和的链表头指针。 如: 输入:3->6->9,2->5->7,输出:5->1->7->1思路:1、逆序相加,相当于从两个链表头指针向后依次相加 2、注意两个链...原创 2019-01-13 15:41:26 · 309 阅读 · 0 评论 -
右值引用
https://www.cnblogs.com/concurrency/p/4066304.html转载 2019-01-12 01:10:35 · 140 阅读 · 0 评论 -
C++面试题(一)——基础概念篇
C++面试题——基础概念篇唐璐http://blog.csdn.net/worldwindjp/ 面试C++程序员的时候一般都是3板斧,先是基础问答,然后一顿虚函数、虚函数表、纯虚函数、抽象类、虚函数和析构函数、虚函数和构造函数。接着拷贝构造函数、操作符重载、下面是STL,最后是智能指针。 都能挺过去那基本知识这关应该算是过了,下面就是项目背景和算法了。...转载 2019-01-12 00:33:34 · 71 阅读 · 0 评论 -
蓝厂C++手机开发岗
一面:1)项目2)软中断硬中断,举例说明3)内核态、用户态,举例说明4)C++内存分配机制5)linux启动机制6)linux在1G内存上跑2G大小程序的处理方式:开始没反应过来,后来让面试官提示了一下虚拟内存,应该是mmu。7)c++11的新功能(不知道)8)介绍一下XX协议(没听明白,从来没听说过)二面:聊......原创 2019-03-12 15:46:46 · 124 阅读 · 0 评论