自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 C++常见面试题整理(二)

21、Reactor模型组成22、如何采用单线程的方式处理高并发单线程还要处理高并发,那就是要减少阻塞,那就有: 异步IO,IO多路复用。可以采用I/O复用来提高单线程处理多个请求的能力,然后再采用事件驱动模型,基于异步回调来处理事件23、C++11新特性auto,智能指针,lambda表达式,可变参数模板… …24、进程与线程的概念,以及为什么要有进程线程,其中有什么区别,他们各自又是怎么通信的进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发;线程是进程

2020-09-11 12:55:39 351

原创 C++常见面试题整理(一)

1、printf("%s", s)与printf(s)有何区别?pritnf(s)这种写法是存在严重安全漏洞的,这被称为printf格式化字符串漏洞攻击。这里使用s而不是一个字符串字面常量,而s传入什么内容其实是不可控的,若传入字符中存在%,就会输出栈中其他一些内容。要是s还是可以由外部输入的,那就可以通过巧妙的构造s的形式来实现访问栈中本来没有权限访问的内容,这就是所谓的格式化字符串漏洞攻击。2、static和const3、验证CPU字节序是小端格式还是大端格式使用联合体,因为联合体共享内存空间

2020-09-10 20:53:54 233

原创 剑指offer (C++版)分类整理(五):栈和队列

1.JZ5 用两个栈实现队列题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:入队:将元素进栈A出队:判断栈B是否为空,如果为空,则将栈A中所有元素pop,并push进栈B,栈B出栈;如果不为空,栈B直接出栈。class Solution{public: void push(int node) { stack1.push(node); } int pop() { int tmp;

2020-06-28 21:12:30 208

原创 剑指offer (C++版)分类整理(三):二叉树类

JZ4 重建二叉树JZ17 树的子结构 树 较难 23.54%JZ18 二叉树的镜像 树 简单 42.82%JZ22 从上往下打印二叉树 队列树 困难 26.85%JZ23 二叉搜索树的后序遍历序列 树栈 较难 23.88%JZ24 二叉树中和为某一值的路径 树 较难 26.22%JZ26 二叉搜索树与双向链表 树链表 中等 28.05%JZ38 二叉树的深度 树 简单 46.15%JZ39 平衡二叉树 树 中等 34.54%JZ57 二叉树的下一个结点 树 中等 29.38%JZ58

2020-06-28 20:10:56 217

原创 剑指offer (C++版)分类整理(二):链表类

1.JZ3 从尾到头打印链表2.JZ14 链表中倒数第k个结点 链表 较难 20.66%3.JZ15 反转链表 链表 中等 29.43%4.JZ16 合并两个排序的链表 链表 中等 26.96%5.JZ25 复杂链表的复制 链表 较难 20.99%6.JZ26 二叉搜索树与双向链表 树链表 中等 28.05%7.JZ36 两个链表的第一个公共结点 链表 中等 32.92%8.JZ46 孩子们的游戏(圆圈中最后剩下的数) 链表 中等 30.10%9.JZ55 链表中环的入口结点 链表 中等 3

2020-06-19 22:54:06 205

原创 剑指offer (C++版)分类整理(一):数组类

1. JZ1 二维数组中的查找 (LeetCode 240)题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。这是一个二维有序数组的查找问题,主要考察二分查找。但是也可以根据数组的特点解决。思路一:二分查找,数组的每一行都是有序的,可以对每一行进行二分查找,时间复杂度O(MlogN),M是矩阵行数,N是矩阵列数,空间复杂度O(1)。class So

2020-06-19 00:42:14 386

原创 Linux网络编程常见面试题(持续更新)

四、网络编程TCP头大小,包含字段?三次握手,四次挥手描述过程,都有些什么状态。状态变迁图。TCP/IP收发缓冲区(2次)头部大小是20字节,包含数据如下:三次握手:四次释放:状态变迁图:收发缓冲区:2. 使用udp和tcp进程网络传输,为什么tcp能保证包是发送顺序,而 udp无法保证?因为TCP发送的数据包是按序号发送,有确认机制和丢失重传机制,而udp是不可靠的发送机制,发送的对应端口的数据包不是按顺序发送的。3. epoll哪些触发模式,有啥区别?(必须非常详尽的解释水平触发和

2020-06-08 21:53:16 2431

原创 C++开发系统架构面试题(持续更新)

1.设计一个服务,提供递增的SessionID服务,要求保证服务的高可靠性,有哪些方案?集中式/非集中式/分布式2.多台服务器要执行计划任务,但只有拿到锁的任务才能执行,有一个中心服务器来负责分配锁,但要保证服务的高可靠性。3.如何有效的判断服务器是否存活?服务器是否踢出集群的决策如何产生?4.两个服务器如何在同一时刻获取同一数据的时候保证只有一个服务器能访问到数据?可以采用队列进行处理,写一个队列接口保证同一时间只有一个进程能够访问到数据,或者对于存取数据库的来说,数据库也是可以加锁处理的5.

2020-06-08 21:34:18 794

原创 C++开发常见算法和数据结构面试题(持续更新)

1.给定一个单向链表(长度未知),请设计一个既节省时间又节省空间的算法来找出该链表中的倒数第m个元素。实现这个算法,并为可能出现的特例情况安排好处理措施。“倒数第m个元素”是这样规定的:当m=0时,链表的最后一个元素将被返回。解决问题方法思路如下:方法(双指针法):头结点指针为当前指针,尾节点指针为拖后指针。开始的时候当前指针和拖后指针初始化为链表的头结点,首先我们让当前指针遍历到第m个元素,拖后指针不变;然后同步更新当前指针和拖后指针;直到当前指针为链表结尾。这样我们就能保证当前指针和拖尾指针之间的距

2020-06-08 21:29:39 2596

原创 Linux操作系统常见面试题(持续更新)

1.熟悉netstat tcpdump ipcs ipcrmnetstat:检查网络状态,tcpdump:截获数据包,ipcs:检查共享内存,ipcrm:解除共享内存2.共享内存段被映射进进程空间之后,存在于进程空间的什么位置?共享内存段最大限制是多少?将一块内存映射到两个或者多个进程地址空间。通过指针访问该共享内存区。一般通过mmap将文件映射到进程地址共享区。存在于进程数据段,最大限制是0x2000000Byte3.进程内存空间分布情况4.ELF是什么?其大小与程序中全局变量的是否初始化有什

2020-06-08 20:32:19 4185 1

原创 C/C++开发线程/进程相关面试题

74.MFC中CString是类型安全类吗,为什么?不是,其他数据类型转换到CString可以使用CString的成员函数Format来转换74.动态链接库的两种使用方法及特点?1).载入时动态链接,模块非常明确调用某个导出函数,使得他们就像本地函数一样。这需要链接时链接那些函数所在DLL的导入库,导入库向系统提供了载入DLL时所需的信息及DLL函数定位。2)运行时动态链接。二、服务器编程1.多线程和多进程的区别(重点 必须从cpu调度,上下文切换,数据共享,多核cup利用率,资源占用,等等各方

2020-06-08 17:22:08 714

原创 C/C++服务器开发常见面试题(三)

43. 内存对齐的原则?A.结构体的大小为最大成员的整数倍。B.成员首地址的偏移量为其类型大小整数倍。44. 内联函数与宏定义的区别?内联函数是用来消除函数调用时的时间开销。频繁被调用的短小函数非常受益。A. 宏定义不检查函数参数,返回值什么的,只是展开,相对来说,内联函数会检查参数类型,所以更安全。B. 宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的45. 动态分配对象和静态分配对象的区别?动态分配就是用运算符new来创建一个类的对象,在堆上分配内存。静态分配就是A a,

2020-06-07 15:54:32 674

原创 C/C++服务器开发常见面试题(二)

22.STL各容器的实现原理(必考)1)Vector顺序容器,是一个动态数组,支持随机插入、删除、查找等操作,在内存中是一块连续的空间。在原有空间不够情况下自动分配空间,增加为原来的两倍。vector随机存取效率高,但是在vector插入元素,需要移动的数目多,效率低下。注:vector动态增加大小时是以原大小的两倍另外配置一块较大的空间,然后将原内容拷贝过来,然后才开始在原内容之后构造新元素,并释放原空间。因此,对vector空间重新配置,指向原vector的所有迭代器就都失效了。2)Map关联容器

2020-06-07 13:27:59 654 1

原创 C/C++服务器开发常见面试题(一)

C/C++服务器开发常见面试题转自:LinuxC/C++服务器开发面试题一、编程语言1.根据熟悉的语言,谈谈两种语言的区别?主要浅谈下C/C++和JAVA语言的区别:1)java语言给开发人员提供了更为简洁的语法;取消了指针带来更高的代码质量;完全面向对象,独特的运行机制是其具有天然的可移植性;Java语言不需要程序对内存进行分配和回收。Java语言不使用指针,并提供了自动的废料收集,在Java语言中,内存的分配和回收都是自动进行的,程序员无须考虑内存碎片的问题。2)C/C++开发语言,C语言更

2020-06-05 19:51:41 2541

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除