面试知识点
caoyangxiaoyao
在校研究生
NS3网络仿真
WIFI
Qt5.7
展开
-
面试知识点总结——C语言和C++语言区别和联系
C语言和C++语言区别和联系C语言和C++语言的联系:C++是C语言的超集,两者拥有类似的语法C语言和C++语言的区别:C是面向过程的语言,而C++是面向对象的语言C和C++在动态分配内存方面存在差异,C使用malloc/free函数,而C++使用除此之外还有new/delete关键字C语言中没有class,只有struct;C++中两者都有。class的默认访问修饰符是...原创 2018-07-24 10:26:01 · 2922 阅读 · 1 评论 -
面试知识点总结——迭代器失效问题
在STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector、deque);另一类是以不连续节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题。list, set, map容器在使用list、set或map遍历删除某些元素时可以这样使用://正确方法1std::list<int> List;st...原创 2018-08-06 15:30:53 · 423 阅读 · 0 评论 -
面试知识点总结——map与unordered_map
比较运行效率:unordered_map最高,而map效率较低但提供了稳定效率和有序的序列占用内存:map内存占用略低,unordered_map内存占用略高,而且是线性成比例的需要无序容器,快速查找删除,不担心略高的内存时用unordered_map;对有序容器稳定查找删除效率,内存很在意时候用map。原理map的内部实现是二叉平衡树(红黑树),查找、插入和删除复杂度为O...原创 2018-08-06 22:02:00 · 929 阅读 · 0 评论 -
面试知识点总结——排序算法
排序算法比较 冒泡排序 选择排序 插入排序 希尔排序 归并排序 堆排序 快速排序 时间(平均) O(n2) O(n2) O(n2) O(n1.3) O(nlogn) O(nlogn) 时间(最好) O(n) O(n2) O(n) O(n) O(nlogn) O(nlogn) 时间(最差)...原创 2018-08-02 10:16:43 · 246 阅读 · 0 评论 -
面试知识点总结——操作系统页面置换算法
页面置换算法是在请求分页存储时,调页时候会用到的。页面置换算法的目标是,尽可能减少换入换出次数。常见的页面置换算法有:最优页面置换算法、先进先出算法、最近最久未使用算法(LRU)、时钟页面置换算法、二次机会算法和最不常用算法。我们还会介绍Belady现象。算法介绍最优页面置换算法特点:替换未来很长时间都不会被访问的页面可保证最低缺页率由于需要预知未来,所以很难实现可用作...原创 2018-08-03 10:05:30 · 1293 阅读 · 0 评论 -
面试知识点总结——虚继承
背景:尽管在派生列表中同一个基类只能出现一次,但实际上派生类可以多次继承同一个类。派生类可以通过它的两个直接基类分别继承同一个间接基类,也可以直接继承某个基类,然后通过另一个基类再一次间接继承该类。出现的问题:在默认情况下,派生类中含有继承链上每个类对应的子部分。如果某个类在派生过程中出现了多次,则派生类中将包含该类的多个子对象,这对于一些类时行不通的。比如iostream继承了ist...原创 2018-08-08 11:27:50 · 336 阅读 · 0 评论 -
贪心算法
跳跃游戏LeetCode 45给定一个非负矩阵,矩阵中每个位置的数字代表从这个位置最多可以跳的跳数。目标是求出到达最后一个元素的最小跳数。输入:[2, 3, 1, 1, 4]输出:2解释:从0位置跳到1位置,再从1位置跳到4位置,一共两跳到达终点。/* 思路:采用贪心算法,引入reach变量表示可能达到的最远处,这也就是全局最优解;当遍历到i时,局部最优解即次局部下最远可达...原创 2018-09-25 16:17:32 · 254 阅读 · 1 评论 -
容器的使用
Top K Frequent Elements给定一个非空整数数组,返回前K个最频繁的元素输入:nums = [1, 1, 1, 2, 2, 3],k = 2输出:[1, 2]/* 思路:遇到这种top k的题目,一般都使用堆这种数据结构,因为堆排序每次只需要输出顶部,输出k次即可。*/class Solution {public: vector<int> ...原创 2018-09-25 16:18:44 · 233 阅读 · 0 评论 -
排序算法
排序算法比较冒泡排序选择排序插入排序希尔排序归并排序堆排序快速排序时间(平均)O(n2)O(n2)O(n2)O(n1.3)O(nlogn)O(nlogn)O(nlogn)时间(最好)O(n)O(n2)O(n)O(n)O(nlogn)O(nlogn)O(nlogn)时间(最差)O(n2)O(n2)O(n2)O(n2)...原创 2018-09-25 16:24:51 · 201 阅读 · 0 评论 -
进制转换
各种机制转换函数strtol函数它的功能是将一个任意1-36进制数转化为10进制数,返回long int型。函数为long int strtol(const char *nptr, char **endptr, int base)base是要转化的数的进制,非法字符会赋值给endptr,nptr是要转化的字符#include<iostream>#include<...原创 2018-09-25 16:25:15 · 231 阅读 · 0 评论 -
面试知识点总结——深浅拷贝
区别在未定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数——即浅拷贝,它能够完成成员的一对一拷贝(逐位复制),当类中数据成员没有指针时,利用浅拷贝完全没有问题;但当数据成员中有指针时,如果采用简单的浅拷贝,那么两个类中的两个指针将会指向同一块地址,当对象快结束时,会调用两次析构器,从而导致指针悬挂现象,所以此时必须使用深拷贝简单来说,带指针用深拷贝,不带指针用浅拷贝具体解释无指...原创 2018-08-09 10:28:54 · 231 阅读 · 0 评论 -
面试知识点总结——构造函数解析
构造函数的作用是在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。一个类可以有多个构造函数,可根据参数个数不同或类型不同来进行构造函数的重载。默认构造函数Student(); //没有参数 //如果创建一个类没有写任何构造函数,系统会自动生成默认的无参构造函数 //系统自动生成的默认构造函数为空,什么都不...原创 2018-07-31 10:35:24 · 275 阅读 · 0 评论 -
面试知识点总结——对C++面向对象的理解
C++面向对象的特性可以总结为:封装、继承和多态。这也是大多数教材中提到的C++的三大特性。封装: 封装就是讲程序模块化,对象化,把具体事物的特性属性和通过这些属性来实现一些动作的具体方法放在一个类中。对象是封装的最基本单位。属性用变量定义,行为用方法定义,方法可以直接访问同一个对象中的属性。继承: 继承是子类自动共享父类数据和方法的机制。父类的相关属性,可以被子类重复使用,而对于自...原创 2018-07-24 10:50:16 · 2090 阅读 · 0 评论 -
面试知识点总结——C++中的重载、重写和隐藏
在C++中,经常会遇到函数的重载、重写和隐藏。这三种情况在面试中经常会被问到,因此,我们对这三种情况作出区分。重载 重载通常发生在相同范围内,如同一个类中。重载有以下特点:相同范围函数名相同参数列表不同返回类型相同virtual关键字可有可无重写 重写通常发生在派生类和基类之间。重写的特点如下:不同的范围函数名相同参数列表相同返回类型相同基类函数必须有virtu...原创 2018-07-24 11:08:38 · 279 阅读 · 0 评论 -
面试知识点总结——构造函数私有化或保护化
本节内容将讨论构造函数能否私有化/保护化,构造函数能否继承和重写,能否将构造函数声明为虚函数的问题。构造函数私有化/保护化 可以将构造函数设置为私有函数,但是这样做就无法从外部直接调用构造函数,因此就无法直接构造这个类的对象。但是为何要将构造函数私有化/保护化呢?如果私有化以后,该如何构造这个类的对象呢?(1)如果你不想让外面的用户直接构造一个类(类A)的对象,而是希望用户只能构造这个...原创 2018-07-24 14:58:32 · 314 阅读 · 0 评论 -
面试知识点总结——引用和指针的区别
引用是在C++中才有的,C中没有引用,引用相当于给变量取了一个别名。它和指针的区别如下:指针是变量的地址,引用是变量的别名引用必须初始化(不能为空),但是指针可以为空引用一经初始化就不能再去引用其他变量,但是指针还可以改变sizeof对指针操作求的是指针指向对象的大小,sizeof对引用操作就是变量的大小指针引用自增自减效果不同引用比指针安全(指针有野指针的隐患)当两者做函数参数...原创 2018-07-24 15:14:12 · 322 阅读 · 0 评论 -
面试知识点总结——new/delete和malloc/free的区别
new/delete是C++中的操作符,而malloc/free是函数,他们都是用来进行动态内存管理的,主要区别如下:new申请的空间在堆或静态存储区,而malloc申请的在堆new在申请空间后会调用构造函数初始化,但是malloc不会;同事delete在释放空间之前要先调用析构函数,而free不会new是操作符,malloc是函数malloc申请的空间成果返回void*的指针,失败返...原创 2018-07-24 15:21:56 · 353 阅读 · 0 评论 -
面试知识点总结——const和static
const和static关键字的作用可以从两方面回答:一是和类的成员函数或者成员变量相关,二是不属于类的函数或者变量。 const关键字的作用:想要阻止一个变量被改变,可以使用const关键字。在定义该const关键字时,通常要对它进行初始化对于指针来说,可以指定指针本身为const,也可以指定指针所指向的数据为const,或者两者同时指定为const。在一个函数声明中,const可以...原创 2018-07-24 15:59:28 · 319 阅读 · 0 评论 -
面试知识点总结——C++中公有继承、私有继承和保护继承的区别
假设基类是一个快要退休的富豪,代码如下:class RichMan{public: RichMan(); ~RichMan(); int m_company;private: int m_money; int m_car;protected: int m_house;};公司是public的,那么他自己(基类),创业伙伴(友元...原创 2018-07-24 16:15:07 · 310 阅读 · 1 评论 -
面试知识点总结——字符串操作
本节将对C++中字符串的操作进行整理。字符串长度int len = str.length();len = str.size()字符串比较可以直接进行比较也可以:str1.compare(str2);str1.compare(pos1,len1,str2,pos2,len2);//值为负,0和正附加str1 += str2;str1.append(str2...原创 2018-07-30 17:14:37 · 211 阅读 · 0 评论 -
面试知识点总结——STL中map的用法
map属于关联容器,提供一对一的数据处理能力。内部是由红黑树实现的,具有自动排序能力。因此map内部的所有数据是有序的。1. 插入操作 在map中插入数据有三种方法:使用数组 用数组方式插入数据#include<iostream>#include<map>#include<string>using namespace std...原创 2018-07-27 15:35:50 · 510 阅读 · 0 评论 -
回溯法
回溯法是五大常用算法之一,回溯法也是一种暴力算法。我们在图的深度遍历时,其实就用到了回溯法,先选择一条路走,当出现走不通的情况,再返回上一种重新选择一种走法,直到遍历所有节点。常见的八皇后问题也能够使用回溯法来求解。八皇后问题回溯法解决八皇后问题时,是对每一行的每一个位置进行遍历,确定每一行可放皇后的位置。如果这一行没有可以放皇后的位置,则返回上一行,重新选择一个位置。依次类推。下面介绍八...原创 2018-09-25 16:26:11 · 1244 阅读 · 0 评论