C/C++笔试个人总结(2)

内存分配方式有几种?举例描述分别存储什么类型的数据?
1、静态存储区域(全局变量)
2、栈(存放局部变量和参数)
3、堆(申请)

如何防止头文件被重复引用?
1、使用#ifndef,#define,#endif,防止头文件被重复引用
例如

#ifndef LINKLIST_H 
#define LINKLIST_H
 ……(头文件内容) 
#endif

2、文件最开头使用#pragma once,防止头文件被重复引用
例如

#pragma once
......(头文件内容)

简述Debug版本和Release版本的区别
Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力。
Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。

对称加密算法
指加密和解密使用相同密钥的加密算法。
对称加密算法用来对敏感数据等信息进行加密,常用的算法包括DES、3DES、AES、DESX、Blowfish、、RC4、RC5、RC6。
非对称加密算法
指加密和解密使用不同密钥的加密算法,也称为公私钥加密。
假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。
常见的非对称加密算法:RSA、DSA(数字签名用)、ECC(移动设备用)、Diffie-Hellman、El Gamal。
散列算法(Hash算法—单向加密算法)
散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。

Hash算法:特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。

简述非对称加密算法的原理
1.A向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥
2.A的私钥保密,A的公钥告诉B,B的私钥保密,B的公钥告诉A、
3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B 的公钥
4.A将这个消息发给B,(已经用B的公钥加密消息)
5.B收到这个消息后,B用自己的私钥解密A的消息,其他所有收到这个报文的人都无法解密,因为只有B才有B 的私钥。

进程通信方式
管道( pipe )
有名管道 (namedpipe)
信号量(semophore )
消息队列( messagequeue )
信号 (sinal )
共享内存(shared memory )
套接字(socket )
线程通信方式
锁机制:包括互斥锁、条件变量、读写锁
信号量机制(Semaphore):包括无名线程信号量和命名线程信号量
信号机制(Signal):类似进程间的信号处理

kmalloc、vmalloc、malloc、calloc的区别
1.kmalloc和vmalloc是分配的是内核的内存,malloc、calloc分配的是用户的内存;
2.kmalloc申请一段物理地址和逻辑地址连续的内存空间,vmalloc保证的是在虚拟地址空间上的连续(物理地址并不连续),malloc不保证任何东西;
3.kmalloc能分配的大小有限,vmalloc和malloc能分配的大小相对较大;
4.内存只有在要被DMA访问的时候才需要物理上连续;
5.vmalloc比kmalloc要慢;
6.calloc分配好内存后会自动初始化为0,其他则分配好内存后保持着原有数据;
7.函数原型:
malloc (size_t size);

calloc(size_t numElements,size_t sizeOfElement);有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小。

void *kmalloc(size_t size, int flags);

tcp/ip 端口号有哪些
1、公认端口(WellKnownPorts):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。
2、注册端口(RegisteredPorts):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。
3、动态和/或私有端口(Dynamicand/orPrivatePorts):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。

auto和register只有在使用时才为该类型变量分配内存的存储类说明
auto : 在缺省的情况下,编译器默认所有变量都是auto的
register : 请求编译器尽可能地将变量存在CPU内部寄存器中(速度快)
标识符:
由字母或下划线(-)开头,后跟零个或多个字母、下划线和数字中任何一个符号组成的符号序列。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值