
面试
文章平均质量分 66
为面试做好准备
两片空白
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
特殊类设计,单例模式
目录一.请设计一个类,只能在堆上创建对象二.设计一个类,只能在栈上创建对象三.设计一个类,不能被拷贝四.设计一个类不能被继承五.设计一个类,只能实例化一个对象 5.1 单例模式由两种实现模式5.2 懒汉模式和饿汉模式对比一.请设计一个类,只能在堆上创建对象 思路:只能在堆上创建对象说明,我们不能在我们不能在外面随意创建对象,所以需要类提供一个对外接口,创建在堆上创建一个对象。这里有两个注意的点:不能在外面随意创建对象。 类...原创 2021-10-31 11:44:01 · 335 阅读 · 0 评论 -
关于多路转接select,poll,epoll的重要问题
多路转接使用场景 多路转接select/poll/epoll适用于长连接。 短连接:在一次通信周期才通信一次,就断开连接。使用多路转接,需要频繁将文件信息从用户拷贝到内核。select的缺点可以监视的文件个数是有限的。fd_set位图的位数有限。 需要用户来管理要监视的文件描述符。比如:需要定义一个数组来保存要监视的文件描述符。 由于用户通知内核的需要监视的文件和内核通知用户就绪的文件事件是一个参数,即输入输出参数是一个,在编码调用select前需要重新设定需...原创 2021-10-23 19:28:00 · 236 阅读 · 0 评论 -
TCP协议面试热点(面向字节流,粘包问题,TCP异常情况)
面向字节流 TCP在内核有自己的接收和发送缓冲区。面向字节流最重要的就是接收和发送缓冲区的存在,在应用层向下发送一个数据包时,可以发送一次或者多次,即可以调用一次或者多次send。在应用层接收一个数据包时,可以接收一次或者多次,可以调用一次或者多次recv。发和收次数不需要对应。而TCP发送数据有自己的规则,如下。 应用层调用传输层提供的接口发送一个数据块给TCP,数据块被写到了TCP的发送缓冲区。而TCP是以字节为单位看待这个数据块的。 ...原创 2021-10-15 11:08:38 · 518 阅读 · 0 评论 -
volatile关键字
volatile作用:保存内存的可见性。告诉编译器,volatile修饰的变量,不允许优化,对该变量的任何操作都必须再真实的内存中进行操作。比如:对2号信号自定义捕捉方式:我们知道变量数据都保存在内存中,但是只有CUP能进行运算。运算时变量的数据会从内存拿到寄存器里。当我们在函数中使用一些不会修改的变量时,编译器可以对其进行优化。因为数据不会改变,我们可以让CPU在运算时,只要在该数据的寄存器里拿数据就好了,就不用到内存拿数据,效率...原创 2021-09-18 18:07:32 · 177 阅读 · 1 评论 -
哈量数据处理面试题(哈希切割,位图,布隆过滤器)
目录前言一.位图应用二.布隆过滤器三.哈希切割前言 海量数据处理,顾名思义。就是数据两很大,内存不足以保存这么多数据的问题该如何解决。 一般可以使用位图(整形),布隆过滤器(非整形),哈希切割的方法。一.位图应用给定100亿个整数,设计算法找到知出现一次的整数? 首先估算,100亿整数保存需要多少空间?1个整数4字节,100亿整数400亿字节。1G10亿字节,所以这里差不多要10G。内存无法将数据全部保存,只能将数据保存在硬...原创 2021-09-12 14:43:47 · 370 阅读 · 0 评论 -
string类和vector<char>的区别,vector和list比较
一.string类和vector<char>的区别string类是一个保存字符的动态数组,由于其中有一个接口c_str,转化成c语言的字符串,要以\0结尾,所以string类最后会有一个\0.vector<T>是一个保存T类型的动态数组,vector<char>也是保存字符的动态数组,但是,不会以\0结尾,不保存\0.二.vector和list比较...原创 2021-07-23 11:21:45 · 3960 阅读 · 1 评论 -
面试中string类的正确写法
C++ 的一个常见面试题是让你实现一个 String 类,限于时间,不可能要求具备 std::string 的功能,但至少要求能正确管理资源。主要是完成string类构造函数,析构函数,拷贝构造函数和赋值操作符重载函数的编写。注意:拷贝构造函数和赋值操作符函数涉及深浅拷贝问题,这里要用到深拷贝。浅拷贝是按字节进行拷贝。两对象字符指针指向同一块空间,在两对象析构时,同一块空间释放两次,导致程序奔溃。深拷贝是在对象再开一块空间,将值拷贝过去,再让新对象的指针指向新开辟的空间。注意:赋值操作符重载时,要释原创 2021-07-17 13:59:39 · 185 阅读 · 0 评论 -
顺序表和链表的优缺点
顺序表定义:在内存中用地址连续的一块存储空间顺序存放线性表的各元素。在程序设计语言中,一维数组在内存中占用的存储空间是一维连续的存储空间,因此我们用一维数组存储数据来表示顺序表。优点:由于顺序表是用数组来存储数据,内存空间连续,当访问数据时可以达到使用数组下标的方式随机访问。CPU高速缓存的命中率高。解释:数据保存在内存中,数据是在CPU里进行运算的(逻辑和算术)。但是CPU速度太快,内存的速度跟不上CPU的速度。于是在CPU和内存之间存在一些寄存器和缓存器,用来保存数据。当CPU要使用数原创 2021-06-21 10:09:08 · 3941 阅读 · 1 评论 -
链表有环的一些常见问题,看这就够了
文章目录1.如何判读链表有环引申问题问题1问题2问题31.如何判读链表有环链表存在有环的逻辑结构可以这样理解:但是实际链表并不存在这些箭头,物理结构为链表结构信息的指针域里存放的是下一个结点的地址。带环就是最后一个结点的地址存的并不是NULL了,而是链表中的一个结点的地址。如何证明一个链表是否有环呢?最好的方法是使用快慢指针法。快慢指针法就是定义两个指针slow和fast,一开始两指针指向链表头。slow指针每次只前进一个结点,fast指针每次前进两个结点。如果链表有环,两指针就会相遇原创 2021-06-19 09:45:26 · 1304 阅读 · 1 评论 -
求最大公约数之辗转相除法
文章目录一.前言二.辗转相除法原理三.用C语言求最大公约数一.前言最大公约数为两个及其以上的整数中约数最大的一个。也称为最大公因子,最大公因数。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。与最大公约数相对应的概念是最小公倍数,a,b的最小公倍数记为[a,b]。如果a能被b整除,那么a是b的倍数,b是a的约数。二.辗转相除法原理相信大家对辗转原创 2021-05-21 09:04:10 · 6153 阅读 · 6 评论 -
递归问题(斐波那契,青蛙跳台,汉诺塔)
文章目录一.递归介绍1.什么是递归2.递归的两个必要条件3.递归优缺点二.斐波那契数三.青蛙跳台四.汉诺塔一.递归介绍1.什么是递归程序调用自身的编程技巧称为递归。递归作为一种算法在程序设计语言中广泛应用。递归通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。递归主要的思考方式在于:把大事化小。2.递归的两个必要条件递归把大事化小同样满足原来的条件,才能实现自己调用自己。存在限制条件,每次递归调用之后越来越接近这个限制条件,当满足限制条件的时候,递归不再继续。原创 2021-05-23 16:30:33 · 319 阅读 · 2 评论 -
自定义类型(位段+枚举+联合)
文章目录1.位段位段的内存分配2.枚举3.联合(共同体)联合体对齐问题1.位段位段的声明和结构体类似,但是有两个不同。1.位段的成员必须是int,unsigned int 或char类型的。2. 位段成员名后面有一个冒号和一个数字。例如:struct S{ int a:2; int b:3; char c:4;};位段后面的数字代表比特位的个数。位段的内存分配#include<stdio.h>struct原创 2021-05-21 19:38:42 · 295 阅读 · 0 评论 -
结构体在内存中的存储(内存对齐)
文章目录一.内存对齐是什么二.怎样内存对齐一.内存对齐是什么首先看例子:#include<stdio.h>struct stu{ char a; int b; char c;};int main(){ printf("%d\n", sizeof(struct stu )); return 0;}输出:按照正常的思维,上述结构体中,两个char类型占一字节,一个int类型占四字节,一共应该是6字节,那为什么输出是12字节呢。再看一个代码。#include<原创 2021-05-21 15:07:35 · 1263 阅读 · 0 评论 -
内存操作函数
文章目录一.内存操作函数1.memset函数2.memcpy函数3.memmove函数二.memcpy和memmove的模拟实现一.内存操作函数内存操作函数适用于任何类型,但是它是以字节为单位的。1.memset函数表现形式适用于任何类型可以从void *看出。作用将ptr从第一个开始的num个字节赋值为value。#include<stdio.h>#include<string.h>int main(){ int arr[10] = { 0 };原创 2021-05-20 09:20:18 · 272 阅读 · 0 评论 -
高频关键字(static,const)
文章目录一.static关键字1.作用二.const关键字1.作用一.static关键字1.作用- 修饰局部变量变量具有两个重要特征作用域与生命周期。局部变量的作用域:是变量所在的局部范围,也就是只能在定义函数中使用。全局变量的作用域:是整个工程。也就是在整个程序中有效。在其它源文件中只要声明即可使用。声明方式,可使用头文件声明,也可使用关键字extern。局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束。也就是当调用定义这一局部变量的函数时,该变量起作用,函数调用完毕,该变量原创 2021-05-10 15:47:01 · 333 阅读 · 0 评论