面试笔记(未完待续)

啊!面试凉了两个了!而且问的问题,完全不一样啊!
嗯……算是回顾一下吧。

1,关于结构体数据对齐

在深信服笔试里出现的问题,觉着还挺有意思的,记一下
首先是关于字节长度,在不同机位的系统下中,不同类型对应的字节长度也不同
比如
int 16位系统下两字节,32下四字节,64下四字节
char 什么系统都一字节
long 16系统下4字节 32下四字节 64下八字节
至于指针,因为值得是地址,所以只跟系统长度有关
16系统:2字节 32系统:4字节 64系统:8字节
那么,什么是结构体数据对齐呢?
首先,这里有一个结构体

struct  animal
{
    int num;
    char name;
    int age;
    double height;
}

起始的地址为0x0000,32位
int 4位 0x0000~0x0004
char 1位 0x0005
int 4位 这个时候就引出了第一个性质
性质一:结构体里,一个类型开始的地址一定是它位数的整数倍
所以就不能是0x0005~0x0008
而是0x0008~0x000b
double 8位
同理地址为0x0010~0x0018
此时引出第二个性质(虽然没用上
结构体本身也要对齐,对齐结构体内最大的字节倍数
此时位数是0x0018,24,是八的倍数
所以不用补齐
如果后面再来一个int year,就要补齐到32

2,加密方式

加密有两种,对称加密和不对称加密,下面分类介绍一下
1,md5:一种很复杂的,无法还原的加密方式,将输入的字符串加密成一长串字符,如果想要验证,只能再加密一次进行比较。
2,sha1:跟上面那个差不多,更复杂一些
对称加密:
1,DES加密:无法被破解的加密方式,对称加密
2,3DES加密:顾名思义,DES加密三次
3,AES加密:在DES的基础上,更快更高更强
不对称加密:
1,RSA:非常出名的,运用素数分解的不对称加密
2,ECC:运用椭圆曲率的不对称加密

3,计算机网络相关

1,每次都复习的!OSI七层结构
在这里插入图片描述
物理层:物理介质
数据链路层:负责结点—结点数据传输
在帧头中增加发送端/接收端的物理地址
流量控制(避免淹没接收端),差错控制,访问(接入)控制
网络层:负责源主机到目的主机数据分组,逻辑寻址
路由
传输层:负责源—目的(端—端)
进程间完整报文传输
连接控制,流量控制,差错控制,对话控制
在数据流中插入“同步点”
表示层:处理两个系统间交换信息的语法和语义
数据转化,加密解密,压缩解压缩
应用层:支持用户通过代理使用网络

2,如何查找域名?
首先是四个定义:本地域名解析服务器,根域名,顶级域名,权威域名
需要解析域名时,先到本地查询,如果找到了直接输入,没找到就去根域名查找,再之后的查找方式有两种情况
一种是迭代,就是自己查
在这里插入图片描述
一种是递归,就是你爹替你查
在这里插入图片描述

4,const和define的区别

const:静态变量修饰,被修饰后参数从变量变成常变量,储存在可读数据段,但它的本质是变量,储存在内存中。
顺便一提,const还能用于修饰函数,输入输出不提,如果放在函数尾部,表示此成员函数不能改变类的成员函数,也不能调用非静态函数。
define:宏,宏一般用于预处理阶段,定义的参数是单纯的变量。
一般来说,在编译时就进行了字符替换,不占内存。
从安全角度来说,进行类型检查的const要比机械替换的define要好
注意:
define 是没有括号的!
比如

# define x 3 + 5
int main()
{
   int m = 3 * x;
   cout << m;
}

m输出为14,因为被替换成了 3*3 + 5 = 14,而不是24

5,float 比较

唉……怎么能错这种题呢
下面代码会输出什么呢?

int main()
{
    float x = 1.1;
    float y = 2.2;
    if ((x + y) == 3.3)
        cout << "yes";
    else
        cout << "NO";
}

答案是NO,涉及float的精度问题
正确写法如下

int main()
{
    float x = 1.1;
    float y = 2.2;
    if ((x + y) - 3.3 < pow(10,-6))
        cout << "yes";
    else
        cout << "NO";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值