备战嵌入式软件工程师技术面试day2

学习目标:

C/C++篇:

多态如何实现?

const和static的区别?const char*p和char* const p的区别?

为什么会产生内存泄露?如何预防内存泄露?

网络编程篇:

TCP、UDP的区别?

TCP的三次对话,三/四次握手的实现过程?

TCP、UDP的优缺点?TCP UDP适用场景?


学习内容:

多态如何实现?

1.首先多态有两种情况:静态多态,动态多态。

静态多态就是进行函数重载。

动态多态就是通过继承重写基类的虚函数。

const和static的区别?const char*p和char* const p的区别?

static 类成员变量,表示这个成员为全类所拥有。

static 类成员函数,表示这个函数为全类所共有,而且只能访问静态成员变量

cont 修饰类成员函数:该函数对成员变量只能进行只读操作

对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不可以修改类的成员变量。

const char*p 修饰的是指针,所以指针的指向可以修改,但是指向的值不可修改。

char* const p,修饰的是常量,指针的指向不可改变,但是指针指向的值可以更改。

为什么会产生内存泄露?如何预防内存泄露?

用户向系统申请发分配内存进行使用(malloc) (new),在使用完后不归还,导致内存空间孤立,导致不能再次访问,系统也无法再次将它分配给需要的程序。

一般造成泄漏的三种情况

1.指针重新赋值

char*p = (char *)malloc(10);
char *np = (char *)malloc(10);
p = np ;

int*p = new int;
p = new int..

这样会导致p指针申请的内存空间孤立起来,无法释放,会导致内存泄漏。

2.错误的内存释放

对于结构化的元素,释放内存前先遍历子内存地址,并从这里开始释放,再遍历父节点。

free(p->np);
free(p);

3.返回值的不正确处理

char *func()
{
   return malloc(20);
}
void callingFunc()
{
  func();
}

calingFunc()函数中对func函数的调用未处理该内存位置的返回值,结果会导致func()函数所分配的20个字节的块就丢失了,并且导致了内存泄漏。

总结:

避免内存泄漏需要注意的几个方面:

1.确保没有访问空指针;

2.每个内存分配的函数都应该有一个free函数与之对应,alloca函数除外。

3.每当向指针写入值时,都要确保对可用字节数和所写入的字节数进行交叉核对。

4.对指针进行赋值之前,要确保没有内存位置孤立的情况。

5.释放结构化元素时候,(包括指向动态内存分配的内存位置的指针时),先遍历子节点的内存位置,并从那里开始释放,然后再遍历回父节点。

6.正确处理返回动态内存引用的函数返回值。

网络编程篇:

TCP、UDP的区别?

tcp因为是面向连接的协议,所以它需要通过建立三次握手进行连接,四次挥手解除连接。udp因为是一种无连接的通信协议,所以它的传输效率会比tcp要高,但是不一定能确保数据的传输成功率。

tcp之间的连接是点对点,udp可以一对一,一对多,多对多,多对一的交互通信,通俗的来说就是可以同时接受多个人的包。

tcp是全双工的可靠信道,udp是不可靠信道。

TCP的三次对话,三/四次握手的实现过程?

服务端A先向服务端B发送连接请求,服务端B在收到服务端A发来的请求后,向服务端A发送连接请求,服务端A确认连接请求后,两者正式开始连接。

服务端A先向服务端B发送一个关闭的请求,服务端B在接受到请求后,也向A发送一个知道A要关闭的信息,然后服务端A此时收到服务端B发送的确认信息,然后再给服务端B发送一个包,表明自己已经关闭。

TCP、UDP的优缺点?TCP UDP适用场景?

  • TCP的优点:

可靠,稳定。tcp的可靠体现在tcp在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认,窗口,重传,拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。

  • TCP的缺点:

速度慢,效率低,占用系统资源高,易被攻击。TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制,重传机制,拥塞机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU,内存等硬件资源。而且,因为TCP有确认机制,三次握手机制,这些也导致TCP容易被人利用,实现DOS,DDOS,CC等攻击。

  • UDP的优点:

速度快,比TCP稍安全。UDP没有TCP的握手,确认,窗口,重传,拥塞控制等机制。UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的。比如:UDP Flood攻击。

  • UDP的缺点:

不可靠,不稳定。因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会容易丢包。

  • 什么时候应该使用TCP:

当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传送给对方,这往往用于一些可靠的应用,比如HTTP,HTTPS,FTP等传输文件的协议,POP,SMTP等邮件传输的协议。

  • 什么时候使用UDP:

当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。常见使用UDP协议的应用如下:QQ语音,QQ视频,TFTP等。
 


学习时间:

  • 周一至周六晚上 10 点—晚上1点
  • 周日上午 8 点-中午 12 点

学习产出:

提示:这里统计学习计划的总量

例如:

  • 面试笔记笔记 1 篇
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值