
面试相关
文章平均质量分 56
每日一道面试题
lingqing97
这个作者很懒,什么都没留下…
展开
-
[每天一道面试题 c++] Day15 new和malloc的区别?
Day-15问题new和malloc的区别?参考答案参考:细说new与malloc的10点区别malloc和new的区别【C++】new和malloc的区别经典面试题之new和malloc的区别理解C++ new-handler机制C++中delete和delete[]的区别new和malloc主要有以下几点区别:1. new会调用对象的构造函数完成对象的构造;而malloc不会,这也是两者最大的区别class A{ public: A(int a=原创 2021-04-23 14:48:28 · 470 阅读 · 0 评论 -
[每天一道面试题 c++] Day14 C++源文件从文本到可执行文件经历的过程?
Day-14问题C++源文件从文本到可执行文件经历的过程?参考答案参考:一个C++源文件从文本到可执行文件经历的过程C++源文件到可执行文件的过程一个C++源文件从文本到可执行文件经历的过程C++源文件到可执行文件分为四个阶段:预处理,编译,汇编和链接.预处理预处理是对C++源文件进行编译前的预备处理,预处理后将得到一个.i后缀的预处理文件.//g++ 预处理指令g++ -E helloworld.cpp -o helloworld.i预处理主要完成以下工作:去除#d原创 2021-04-22 11:16:44 · 155 阅读 · 0 评论 -
[每天一道面试题 c++] Day13 介绍一下STL的allocator
Day-13问题介绍一下STL的allocator参考答案参考:《STL源码剖析》chapter2 空间配置器STL allocator封装了STL容器在内存管理上的底层细节。我们日常所习惯的内存分配是使用new运算符,内存释放是使用delete运算符。而new运算符实际包含两个步骤:调用全局::operator new分配内存(实际上就是调用malloc分配内存)调用对象相应的构造函数来构造对象同理,delete运算符也包含两个步骤:调用对象相应的析构函数来析构对象调用全局原创 2021-04-20 10:57:05 · 303 阅读 · 0 评论 -
[每天一道面试题 c++] Day12 map和set的区别?分别是怎么实现的
Day-12问题map和set的区别?分别是怎么实现的。参考答案参考:《STL源码剖析》chapter5 关联式容器set与mapmap和set的底层都是通过红黑树实现的,map和set的区别有:map中的元素是key-value(关键字-值)对;而set中的元素是关键字;map和set都不允许插入重复元素。set的迭代器是const的(底层是通过使用红黑树的const iterator),所以不允许修改元素的值;map允许修改value的值,但是不允许修改key的值;map和set都不原创 2021-04-19 10:51:26 · 424 阅读 · 0 评论 -
[每天一道面试题 c++] Day11 请你说一下fork函数
Day-11问题请你说一下fork函数参考答案fork函数的作用是在一个已经存在的进程中创建一个新进程,这个新进程称为子进程,原进程称为父进程。子进程是父进程的副本。由于我们知道程序=代码+数据,对于代码(正文段),父子进程是共享的,而对于数据(堆栈等),子进程是通过写时拷贝来保证数据的独立性(具体可以参考Linux fork函数深度解析(写时拷贝+进程终止(exit)+进程等待(wait,waitpid)))。fork一般有两种用法:一个父进程希望复制自己,使父进程和子进程同时执行不同原创 2021-04-17 15:07:01 · 214 阅读 · 0 评论 -
[每天一道面试题 c++] Day10 为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数? 构造函数可以是虚函数吗?
Day-10问题为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数? 构造函数可以是虚函数吗?参考答案为什么析构函数必须是虚函数?将被继承的父类的析构函数设置为虚函数后,可以保证在new申请一个子类对象,并使用基类指针指向该对象,当释放该基类指针时可以保证子类的析构函数被执行,从而释放子类的空间,避免内存泄露。为什么C++默认的析构函数不是虚函数?因为虚函数需要额外的虚函数表和虚表指针,需要占用额外的内存,只有当作为父类时才会将析构函数设置为虚函数,这样可以避免不必要的内存浪原创 2021-04-15 18:37:16 · 308 阅读 · 0 评论 -
[每天一道面试题 c++] Day9 请你实现c++中的shared_ptr
Day-9问题请你实现c++中的shared_ptr参考答案参考:面试题:简单实现一个shared_ptr智能指针shared_ptr的核心是通过一个引用计数来统计指向对象的指针数量,当该引用计数为0时则释放对象资源。#include<iostream>#include<mutex>using namespace std;template<typename T>class my_shared_ptr{ private: i原创 2021-04-14 11:42:25 · 294 阅读 · 0 评论 -
[每天一道面试题 c++] Day8 讲讲你理解的c++四大智能指针
Day-8问题讲讲你理解的c++四大智能指针参考答案参考:C++里面的四个智能指针C++中的四个智能指针 博客园Auto_ptr被废弃的原因智能指针实际上是实现了RAII思想:资源在构造期间获得,在析构期间释放。将智能指针实现为一个类,在这个类构造时申请空间,当这个类离开作用域时,析构函数被调用从而使得申请的空间自动释放,尽可能地避免了内存泄露。c++中有四个智能指针:auto_ptr、unique_ptr、shared_ptr和weak_ptr,其中auto_ptr已经被c++1原创 2021-04-13 11:14:17 · 277 阅读 · 0 评论 -
[每天一道面试题 c++] Day7 请讲讲你理解的c++中的引用和指针
Day-7问题请讲讲你理解的c++中的引用和指针参考答案引用是某一变量的别名,而指针的值是一个地址,通过它能找到以它为地址的内存单元。区别:指针本身就是一个对象,而引用不是对象,C++中对象是一块能存储数据并具有某种类型的内存空间指针不一定需要初始化,而引用必须被初始化,且引用的初始值必须是一个对象指针在使用中可以指向其它对象,但是引用只能是一个对象的引用,不能被改变指针可以有多级指针,比如指向指针的指针,而引用只有一级,一个引用不能再指向另一个引用使用sizeof看一个指针的大小原创 2021-04-12 21:22:29 · 134 阅读 · 0 评论 -
[每天一道面试题 c++] Day6 说一说C++中四种类型转换
Day-6问题说一说C++中四种cast转换(即C++中的四种类型转换)参考答案参考:c++ 四种强制类型转换介绍dynamic_cast彻底明白了~C++类型转换之reinterpret_castC++中有四种类型转换(建议看完上面3个参考资料,基本就掌握了):const_cast: 去除对象的const属性static_cast: C++隐式转换都基于此转换实现,可以用于常规类型的转换、基类和派生类之间的向上/向下转换(向下转换由于没有动态类型检查,所以不安全)dynam原创 2021-04-10 15:48:38 · 226 阅读 · 0 评论 -
[每天一道面试题 c++] Day5 判断计算机是大端(Big-endian)还是小端(Little-endian)的
Day-5问题判断计算机是大端(Big-endian)还是小端(Little-endian)的参考答案//利用联合体所有成员都从低地址开始存放int main(){ union test{ int a; char b; } c; c.a=1; //小端时,c.b为1;大端时,c.b为0 if(c.b==1) printf("little endian"); else printf("big endian");原创 2021-04-09 14:24:27 · 283 阅读 · 0 评论 -
[每天一道面试题 c++] Day4 请说出const尽可能多的作用
Day-4问题请说出const尽可能多的作用参考答案参考:C++ const的各种用法详解const成员变量C++中的const成员函数和const类对象const在C++中的用法可以分为以下几类:const修饰变量和数组常变量: const + 类型 + 变量名 / 类型 + const + 变量名常数组: const + 类型 + 数组名[大小] / 类型 + const + 数组名[大小]const修饰指针以及引用常引用: const + 类型 + &原创 2021-04-02 21:17:52 · 128 阅读 · 0 评论 -
[每天一道面试题 c++] Day3 请说出static尽可能多的作用
Day-3问题请说出static尽可能多的作用参考答案参考:C++中static关键字的总结C++中static关键字的作用可以分为以下五类:面向过程中的作用静态局部变量静态全局变量静态函数面向对象中的作用静态成员变量静态成员函数面向过程中的作用先看下面的例子:#include<iostream>static void fn1(); //声明静态函数static int n=0; //声明静态全局变量static vo原创 2021-03-27 14:44:48 · 168 阅读 · 0 评论 -
[每天一道面试题 c++] Day2 实现string类的拷贝赋值成员
Day-2问题实现string类的拷贝赋值成员参考答案参考:让我们一步一步实现一个完整的 String 类:构造、拷贝、赋值、移动和析构#include<iostream>#include<cstring>#define DEBUGclass String{ private: char* m_data; public: String(const char* str=nullptr); String原创 2021-03-26 23:05:06 · 156 阅读 · 0 评论 -
[每天一道面试题 c++] Day1 检查下面代码有什么问题?
DAY-1问题检查下面代码有什么问题?void GetMemory( char *p ){ p = (char *) malloc( 100 );}void Test( void ){ char *str = NULL; GetMemory( str ); strcpy( str, "hello world" ); printf( str );}参考答案错误有:传入GetMemory()函数的形参为字符串指针,在函数内部改变形参的值并不能真正改变传入形参的实际值,所以原创 2021-03-26 21:34:07 · 502 阅读 · 0 评论