百度一面(C/C++研发):2017-08-10

2017-08-14 21:46 阅读 551 次 评论 0 条

简述HTTP长连接与短连接,应用场景:设计一个长连接?

短连接:在HTTP/1.0中,默认使用的是短连接。浏览器和服务器每进行一次http请求,就建立一次连接,但任务结束就中断连接。短连接的操作步骤是:

长连接:从HTTP/1.1起,默认使用长连接,使用长连接的http协议,会在响应头加上这行代码:

上述的keep-alive是对http而言的。http keep-alive与tcp keep-alive不属于同一回事。http keep-alive是为了让tcp活的久一点,以便在同一个连接上传送多个http,从而提高socket的效率。而tcp keep-alive是tcp的一种检测tcp连接状况的保险机制(心跳机制)。

使用长连接的情况下,客户端与服务器之间用于传输http数据的tcp连接不会关闭,如果客户端再次访问该服务器上的网页,会继续使用这一条已经建立的连接。

HTTP的长连接和短连接,本质上是TCP的长连接与短连接,也可将HTTP理解为应用层TCP协议。

shell脚本控制服务是如何实现的?

上题是针对于非内置命令来说的,可以通过enable [命令]来查看是否为内置命令。我简单介绍一下Linux下的内置命令与非内置命令(执行过程如下图所示):

内置命令:比如cd、echo、exit等,它会改变shell的参数,并且写在bash 的源码中。内置命令实现上是shell的一部分,被shell程序识别并在shell的程序内部执行。通常系统加载运行时shell会被加载并驻留在系统内存中,其执行速度比外部命令块,因为它不需要创建子进程。

非内置命令:比如ls、vi等,它不会改变shell 的参数。它在系统加载时不随系统一起加载到内存中,而是在需要的时候才将其调入内存,通常非内置命令的实体并不包含在shell中,但是其命令过程是由shell控制的。一般而言,which能够查到的命令都是非内置命令。

awk、sed工具的使用及场景?

sed工具的使用方法

awk工具的使用方法

利用你熟悉的语言编写一个堆排序?

基本思想:大堆对应升序序列,小堆对应降序队列,我们从最后一个非叶子结点建堆,步骤如下:

⑴ 将堆顶元素与当前最大堆的最后一个节点交换

⑵ 最大堆节点-1,即调整剩下的n-1个节点

⑶ 从堆顶继续向下调整,试之满足最大堆,循环⑴ ⑵ ,直至剩下一个节点。

Linux进程间通信机制,说说它们之间的特点及区别?

1.信号(signal)      2.管道(pipe/fifo)     3.信号量(semophore)    4.消息队列(message queue)     5.共享内存(shared memory)    6.套接字(socket)

描述一下进程的地址空间?

进程的地址空间布局如下:

1.程序段(.text):程序段为程序代码在内存中的映射,一个程序可以在内存中多有个副本。

2.已初始化的数据(.data):在程序运行值初已经对变量进行初始化的。

3.未初始化的数据(.bss):该段用于存放全局的、但未初始化的变量。bss段与data段的区别是,编译时需为data段分配空间,而bss段不用。数据存放于bss段,减小了可执行程序的文件大小。

4.堆(stack):存储局部临时变量,在程序块开始时自动分配内存,结束时自动释放内存,存储函数的返回指针。

5.栈(heap):存储动态内存分配,需要程序员手工分配,手工释放。

你是如何理解TCP三次握手与四次挥手的?

TCP的三次握手与四次挥手

是否了解过SYN洪水攻击?

SYN Flood是当前最流行的的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)。

我们模拟一个场景:假设一个用户向服务器发送SYN报文后突然宕机,那么服务器在发出SYN+ACK应答报文后是无法接受到客户端的ACK的,此时,服务器会尝试重新发送,这段时间的称之为SYN Timeout,一般在30秒~2分钟不等。此时如果有一个恶意的攻击者大量模拟这种情况,服务器将为了维护一个非常大的半连接列表而耗费大量的资源。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃---即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了SYN Flood攻击(SYN洪水攻击)。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:百度一面(C/C++研发):2017-08-10 | 术与道的分享
分类:笔经面经 标签:, ,
1024do.com导航_术与道导航平台

发表评论


表情