
C++面试总结
文章平均质量分 93
玲珑子_a
这个作者很懒,什么都没留下…
展开
-
C++面试总结之STL(一)
1.什么是STL?标准模板库(STL),它的基本概念就是把数据和操作分离,含有容器、算法、迭代器组件等。迭代器是容器和算法之间的粘合剂,使任何算法都可以和任何容器进行交互操作。在STL中体现了泛型程序设计的思想,是以类型参数化的方式实现的(模板)。STL中的容器:序列容器:vectorstringdequelist关联容器:setmapmulti...原创 2019-04-15 14:58:12 · 3447 阅读 · 1 评论 -
C++面试总结之linux(一):命令
1.linux如何查cpu使用率a.方法一:top命令在终端中直接执行top命令,即可看到cpu的使用率。(h查看命令帮助,q退出top).如果是多核CPU,希望查询每个CPU的使用率,可以在top命令的界面,按数字键1,即可看到其它CPU的使用率Top–H–p1003//查看线程b.方法二:vmstat命令vmstat是一个虚拟内存命令,但是本身也可以看到cpu...原创 2019-04-15 15:24:03 · 698 阅读 · 0 评论 -
C++面试总结之linux(二)
1.指针的寻址过程数组是相同数据类型的数据集合,以线性方式连续存储在内存中,而指针只是保存一个地址值的4字节变量。在使用中,数组名是一个地址常量值,保存数据首元素地址,不可修改,因此只能以基地址访问内存数据。指针是一个变量,可以修改,随意访问内存数据。数组作为参数和返回值,都是将数组的首地址以指针的方式进行传递,但是它们也有不同。将数组作为参数时,其定义所在的作用域必然在函数调用以外,在调...原创 2019-04-15 15:26:32 · 226 阅读 · 0 评论 -
C++面试总结之linux(三):select和epoll(重要)
1. 5种IO模型:(1)blockingIO-阻塞IO(2)nonblockingIO-非阻塞IO(3)IOmultiplexing-IO多路复用(4)signaldrivenIO-信号驱动IO(5)asynchronousIO-异步IO其中前面4种IO都可以归类为synchronousIO-同步IO,signaldrivenI...原创 2019-04-16 10:04:02 · 3751 阅读 · 1 评论 -
C++面试总结之网络(一)
1.HTTP协议HTTP:超文本传输协议,基于TCP/IP主要特点:(1)简单快速:客户向服务器请求服务时,只需要传递请求方法和路径(2)灵活:允许传输任意类型的数据对象(3)无连接:每次连接只处理一个请求,服务器处理完客户端请求并收到客户端应答后立即断开(4)无状态协议:协议对事物处理没有记忆能力(5)支持B/S和C/S模式HTTP1.0的请求方法:GETP...原创 2019-04-16 10:03:52 · 636 阅读 · 0 评论 -
C++面试总结之网络(二)
1.TCP中time_wait作用主动关闭的Socket端会进入TIME_WAIT状态,并且持续2MSL时间长度,MSL就是maximumsegmentlifetime(最大分节生命期),这是一个IP数据包能在互联网上生存的最长时间,超过这个时间将在网络中消失。MSL在RFC1122上建议是2分钟,而源自berkeley的TCP实现传统上使用30秒,因而,TIME_WAIT状态一般维持在...原创 2019-04-16 10:03:45 · 652 阅读 · 0 评论 -
C++面试总结之网络(三)
1.TIME_WAIT状态的产生、危害、如何避免?【答】TCP协议在关闭连接的四次挥手中,为了应对最后一个ACK丢失的情况,Client(即主动关闭连接的一方)需要维持time_wait状态并停留2个MSL的时间。危害:Linux分配给一个用户的文件句柄是有限的,如果系统中存在大量的time_wait状态,一旦达到句柄数上限,新的请求就无法被处理了,而且大量time_w...原创 2019-04-16 10:03:38 · 562 阅读 · 0 评论 -
C++面试总结之C++语言特性(二)
1. New和malloc都能创建新的对象,区别在哪?哪个效率高(1)malloc/free是C++的标准库函数,new/delete是运算符(2)不能将执行构造函数和析构函数的任务强加给malloc/free,只能用new/delete(3)New返回指定类型的指针,malloc返回空指针再进行类型转换(4)new操作符从自由存储区(freestore)上为对象动态分配...原创 2019-04-15 14:45:00 · 263 阅读 · 0 评论 -
C++面试总结之C++语言特性(一)
1.Volatile提醒编译器它后面所定义的变量随时都可能改变,因此编译后的程序每次需要存储或读取该变量时,都从变量地址中读取数据。Volatile的作用:(1)阻止编译器为了提高速度将一个变量缓存到寄存器内不写回(2)阻止编译器调整操作volatile变量的指令顺序但是volatile能够阻止编译器调整顺序,也无法阻止CPU动态调度换序,例如:解决...原创 2019-04-15 12:00:39 · 1098 阅读 · 0 评论 -
C++面试总结之操作系统(三):死锁
死锁、死锁产生的条件、怎么处理死锁、怎么预防死锁死锁:在两个或者多个并发进程中,如果每个进程持有某种资源而又等待其它进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗的讲就是两个或多个进程无限期的阻塞、相互等待的一种状态。1. 产生死锁的原因主要:(1)因为系统资源不足。(2)进程运行推进的顺序不合适。(3)资源分配不当等。...原创 2019-04-16 10:02:50 · 1180 阅读 · 0 评论 -
C++面试总结之操作系统(二):内存管理
1.伙伴系统SLAB算法伙伴系统,其思想是:把内存块分成不同的组(1,2,4,8,16,32....);分配内存时找到能够满足条件的最小的块;如果找不到,就找大的块,然后一分为2,分配一块,留一块;回收时:如果有相邻的同样大小的块,则合并。Malloc实现原理:可以基于伙伴系统实现,也可以使用基于链表的实现•将所有空闲内存块连成链表,每个节点记录空闲内存块的地址、大小等信息...原创 2019-04-16 10:12:58 · 582 阅读 · 0 评论 -
C++面试总结之数据库(一)
1.数据库范式第一范式:列不可分,eg:【联系人】(姓名,性别,电话),一个联系人有家庭电话和公司电话,那么这种表结构设计就没有达到1NF;第二范式:有主键,保证完全依赖。eg:订单明细表【OrderDetail】(OrderID,ProductID,UnitPrice,Discount,Quantity,ProductName),Discount,Quantity完全依赖(取...原创 2019-04-16 10:51:03 · 3610 阅读 · 0 评论 -
C++面试总结之数据库(二)
1.数据库优化实践中,MySQL的优化主要涉及SQL语句及索引的优化、数据表结构的优化、系统配置的优化和硬件的优化四个方面,如下图所示:(1)SQL语句及索引的优化<1>SQL语句的优化 SQL语句的优化主要包括三个问题,即如何发现有问题SQL、如何分析SQL的执行计划以及如何优化SQL。a.怎么发现有问题的SQL?(通过MySQL慢查询日志对有效率问题的...原创 2019-04-16 11:05:56 · 858 阅读 · 0 评论 -
C++面试总结之算法(一):排序
排序有几种方式,分别介绍其实现原理?(问)(1)冒泡排序voidbubble_sort(intarr[],intlen){ inti,j; for(i=0;i<len;i++) for(j=len-1;j>i;j--) if(arr[j]>arr[j...原创 2019-04-15 10:35:24 · 774 阅读 · 0 评论 -
C++面试总结之算法(二):树
1.平衡二叉树(AVL)https://www.cnblogs.com/suimeng/p/4560056.html平衡因子:左子树的高度减去右子树的高度。由平衡二叉树的定义可知,平衡因子的取值只可能为0,1,-1.分别对应着左右子树等高,左子树比较高,右子树比较高。AVL树的插入时的失衡与调整:平衡二叉树的失衡调整主要是通过旋转最小失衡子树来实现的。2.红黑树、平衡二叉树、...原创 2019-04-15 10:59:43 · 278 阅读 · 0 评论 -
C++面试总结之算法(三):链表
1. 怎样判断一个链表有环(1)最常用方法定义两个指针,同时从链表的头节点出发,一个指针一次走一步,另一个指针一次走两步。如果走得快的指针追上了走得慢的指针,那么链表就是环形链表;如果走得快的指针走到了链表的末尾(next指向NULL)都没有追上第一个指针,那么链表就不是环形链表。boolIsLoop(NODE*head){//假设为带头节点的单链表if(he...原创 2019-04-15 11:02:03 · 293 阅读 · 0 评论 -
C++面试总结之算法(五):海量数据
1..布龙过滤器,主要还是检查一个数据是否在海量数据中的方法(1)应用场景:字处理软件中,需要检查一个英语单词是否拼写正确在FBI,一个嫌疑人的名字是否已经在嫌疑名单上在网络爬虫里,一个网址是否被访问过yahoo,gmail等邮箱垃圾邮件过滤功能(2)布隆过滤器原理:布隆过滤器(BloomFilter)的核心实现是一个超大的位数组和几个哈希函数。假设位数组的长度...原创 2019-04-15 11:15:28 · 329 阅读 · 0 评论 -
C++面试总结之算法(四):数组
1.栈用数组怎么实现#defineMAXSIZE10;template<classT>classStack{ public://默认构造函数 Stack(); Stack(size_tmaxElements); Stack(Tdata[],size_tmaxElme...原创 2019-04-15 11:28:03 · 388 阅读 · 0 评论 -
C++面试总结之操作系统(一):进程与线程
同步机制:进程的同步:信号量、管程、互斥线程的同步:信号量、互斥量、消息、条件变量通信机制:进程的通信:管道、FIFO、消息队列、信号量、共享内存、SOCKET1.进程和线程的基本概念(1)进程(process):狭义定义:进程就是一段程序的执行过程。广义定义:进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。进程是系统进行资源分配和调度的一个独立单元。...原创 2019-04-16 10:03:30 · 1232 阅读 · 0 评论