面试后 总结一下 TCP和UDP、进程和线程 数据库

一、先简单介绍下 makefile 的作用是什么?

作用:管理工程文件。通过工程文件 makefile 的编写,对工程下不同目录

中的文件的编译、链接的方式、顺序进行描述。

在编写 makefile 后,编译工程只要求输入 make 命令,极大地提高了编译效率


二、数据库 与 文件进行数据存储 有哪些区别?

数据库 属于结构化管理的存取数据模式, 而文件属于 自定义结构 的存取数据模式

区别:

1、文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存取数据

2、文件系统中的程序和数据有一定的联系,数据库系统中的程序和数据分离

3、文件系统用操作系统中的存取方法对数据进行管理,数据库系统用 DBMS 统一管理和控制数据

4、文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享


三、为什么数据库选择 sqlite ? 还有哪些嵌入式数据库?特点是什么?

1、sqlite:支持事件,不需要配置,不需要安装,也不需要管理员;支持大部分 sql92;

文件保存,文件可在不同字节序的机器上使用,支持内存大;

系统精简,内存占用少(少于 250 kb),大部分应用比目前常见的客户端/服务端的数据快,没有其它依赖源代码开放


2、eXtremeDB:实时数据库,开销小,可用于资源紧凑型系统,不基于任何文件系统


3、Firebird嵌入服务器版:单文件型小型数据库,支持事件,支持存储过程、触发器


4、mSQL:单用户数据库管理系统,小型的关系数据库,对 SQL 支持不完全,运行简单操作较快


四、TCP 与 UDP 区别?

TCP:面向连接、可靠的通信方式,适用于传输大量数据、对可靠性要求高的场合

UDP:无连接、不可靠的通行方式,但由于无连接,传送速度较快,适用于对可靠性

要求不高、数据量较小、速度要求较快的场合


TCP 与 UDP 基本区别?

1、基于连接与无连接

2、TCP要求系统资源较多,UDP较少

3、UDP程序结构较简单

4、流模式(TCP)与 数据报模式(UDP)

5、TCP保证数据正确性,UDP可能丢包

6、TCP保证数据顺序,UDP不保证


TCP 与 UDP 区别总结:

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的、即发送数据之前不需要建立连接

2、TCP提供可靠的服务。通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;

UDP尽最大努力交付,即不保证可靠交付

3、TCP面向字节流,实际上是 TCP 把数据看成一连串无结构的字节流;UDP是面向报文的

UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送频率降低(对实时应用很有用,如 IP 电话,实时视频会议等)

4、每一条 TCP 连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

5、TCP首部开销20字节(开销大);UDP的首部开销小,只有8个字节

6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道


五、什么时候选择 TCP ,什么时候选择 UDP?

TCP:传输大量数据、可靠性要求较高的场合;

UDP:传输少量数据、对可靠性要求不高、速度要求较快的场合

UDP应用场景:

面向数据报方式、网络数据大多为短消息、拥有大量客户端、对数据安全性无特殊要求、

网络负担非常重,但对响应速度要求高


六、TCP是如何保证可靠数据传输的?

通过三次握手确认连接;通过序列化应答和必要的重发机制提供可靠的传输流控制;

使用数据窗口机制协商队列大小实现数据队列传输


七、端口号与ip、网关的作用?

端口号:指计算机与外界通讯的接口,分为逻辑端口与物理端口,端口号为 0~65535

IP:是网络之间互连的协议

网关:又称为网间连接器、协议转换器。用于在网络层上实现网络互联,对收到的信息

重新打包以适应目的系统的要求。


八、进程间通信方式有哪些?各自的优缺点及应用选择?

1、管道(无名):只能单向传递,且只能在有亲缘关系的进程中使用

有名管道:也是单向传递,但可以在非亲缘进程中使用

2、信号:信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生

3、消息队列:消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点

4、共享内存:由一个进程创建,但多个进程都可以访问。往往与其他通信机制,如信号量配合使用,来实现进程间的同步和通信

5、信号量:可以用来控制多个进程对共享资源的访问(用于线程同步)

6、套接字:套接口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。


九、进程与线程

1、进程是指在系统中运行的一个应用程序;程序一旦运行就是进程,或者更专业化来说

进程是指程序执行的一个实例,即它是程序已经执行到某种程度的数据结构的汇集。

从内核的观点来看,进程的目的就是担当分配系统资源(CPU时间,内存等)的基本单位。

2、线程是系统分配处理器时间资源的基本单位,或者说进程之内独立执行的一个单元执行流。

3、进程——资源分配的最小单位   线程——程序执行的最小单位(CPU调度和分派的最小基本单位)

线程是比进程更小的能独立运行的基本单位;一个进程由几个线程组成(拥有很多相对独立的执行流

的用户程序共享应用程序的大部分数据结构);线程与同属一个进程的其他的线程共享进程所拥有的全部资源


十、进程与线程的区别?

1、进程——资源分配的最小单位,线程——程序执行的最小单位

2、进程拥有独立的堆栈空间和数据段,每启动一个进程必须分配给它独立的地址空间

线程只是进程中独立执行的一个单元执行流,有独立的堆栈段但是共享数据段,没有独立的地址空间

3、多进程的程序要比多进程的程序健壮     (进程有独立的地址空间,一个进程崩溃,在保护模式下

不会对其它进程产生影响,而线程只是一个进程中的不同执行路径,一个线程死掉就等于整个进程死掉)

4、进程切换时,消耗资源大,效率要差一些。

5、对于一些要求同时进行并且又要共享变量的并发操作,只能用线程,不能用进程


线程的优点:

1、线程是一种非常"节俭"的多任务操作。(启动一个新的进程必须分配给它独立的地址空间,

建立众多的数据表来代码段、堆栈段和数据段)

2、线程开销小、切换速度快,效率高

3、线程间方便的通信机制。(进程有独立的数据空间,数据传递只能通过复杂的通信机制,而线程的

数据可以直接为其他线程所用,这不仅快捷而且方便)

4、使 CPU 系统更加有效 (因为操作系统会保证当线程数不大于CPU数目,不同的线程运行于不同的CPU上)

5、改善程序结构 (举例:使用进程会不由自主使用if else 来判断 pid ,使程序结构繁琐,但使用线程,基本可以甩掉它

当然程序内部执行功能单元需要使用的时候还是要使用,所以线程对程序结构的改善有很大帮助)


十一、进程与线程如何选择

1、需要频繁创建销毁的优先使用线程;因为对于进程来讲创建和销毁一个进程代价是很大的

2、线程的切换速度快,所以在需要大量计算,切换频繁时用线程,还有耗时的操作使用线程可

提高应用程序的响应

3、因为对CPU系统的效率使用上线程更占优,所以可能要发展到多机分步的用进程,多核分步

用线程

4、并行操作使用线程,如C/S架构的服务器端并发线程响应用户的请求

5、需要更稳定安全时,适合选择进程;需要速度时,选择线程




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值