1.Linux设置环境变量

暂时的:export MYNAME=”new name”

echo $MYNAME

new name

永久的:通过改变/etc/profile实现

EG: export CLASSPATH=./java_HOME/lib;$JAVA_HOME/jre/lib

更改文件后执行 source /etc/profile

2.TCP连接的特点

(1)面向连接:采用C/S模型

(2)全双工

(3)安全可靠:

①流量控制:解决接收方不能不及时处理数据的问题

②拥塞控制:解决因网络通信延迟带来的数据丢失问题

③差错控制:解决数据被破坏、重复、时序和丢失的问题

(4)基于字节流

3.为什么TCP连接需要三次握手,两次不可以吗?为什么?

两次不可以

三次握手连接过程

(1)建立连接时,客户端发送SYN(SYN=j)包到服务器,并进入SYN_SEND状态,等待服务器响应、、确认

(2)服务器收到SYN包,必须确认客户端的SYN(ACK=j+1),同时自己也发送一个SYN包,即SYN+ACK包此时服务器进入SYN_RECV状态

(3)客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕客户端和服务器端进入ESTABLISHED状态,完成三次握手

为了保证服务端能收到客户端的信息并能做出正确的响应而进行前两次握手,为了保证客户端能够收到服务端的信息并能做出正确的响应而进行后两次响应

4、代理的实现原理

代理服务器有很多种,大体分为三类:HTTP、FTP、SOCKS,其中又分为透明代理和不透明代理,透明代理一般是网关,为硬件

过程:

(1)客户端先和代理服务器通讯,建立TCP连接,目的IP是代理服务器的IP

(2)客户端发出GET命令,GET命令中包含URL或IP地址、明文

(3)代理服务器将其中的URL转换为IP地址,可能会有DNS,将源数据包中的数据拷贝下来,去掉URL,重新组包再发出去

(4)代理服务器和真实服务器通讯,源IP是代理服务器的IP

5、TCP和UDP分别有什么优缺点

TCP:

优点:可靠、稳定

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

缺点:慢,效率低,占用系统资源高,易被攻击

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

UDP:

优点:快,比TCP稍安全

UDPm没有TCP拥有的各种机制,是一个无状态的传输协议,所以传递数据非常快,没有TCP的这些机制,被攻击利用的机制就少一些,但是也无法避免被攻击

缺点:不可靠,不稳定

因为没有TCP的那些机制,UDP在传输数据时,如果网络质量不好,就会很容易丢包,造成数据的缺失

适用场景:

TCP:当对网络通讯质量有要求时,比如HTTP、HTTPS、FTP等传输文件的协议, POP、SMTP等邮件传输的协议

UDP:对网络通讯质量要求不高时,要求网络通讯速度要快的场景

6、面向对象和面向过程的区别

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就行。

面向对象是把构成问题事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。面向对象是以功能来划分问题,而不是步骤

7、HTTP请求的过程与原理

HTTP是一种无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。HTTP遵循请求/应答模型

(1)建立TCP连接

(2)Web浏览器向Web服务器发送请求命令

(3)Web浏览器发送请求头信息

(4)Web服务器应答

(5)Web服务器发送应答头信息

(6)Web服务器向浏览器发送数据

(7)Web服务器关闭TCP连接

HTTP的长连接与短连接:

在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接,在服务端不保留连接的有关信息。

从 HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码:

Connection:keep-alive

在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

长连接短连接操作过程

短连接的操作步骤:

建立连接----数据传输-----关闭连接。。。建立连接-----数据传输----关闭连接

长连接的操作步骤:

建立连接---数据传输。。(保持连接)。。数据传输---关闭连接

长连接和短连接的优点和缺点

长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来说,较适用长连接。但是会存在一个问题,随着客户端连接越来越多,server早晚有扛不住的时候,这时候server端需要采取一些策略,如关闭一些长时间没有读写事件发生的连接,这样可以避免一些恶意连接导致server端服务受损;如果条件再允许就可以以客户端机器为颗粒度,限制每个客户端的最大长连接数,这样可以完全避免某一个客户端连累后端服务。

短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。

HTTP报文格式:

请求消息格式:

  • 请求行

  • 头部行

  • 附属行

响应消息格式:

  • 状态行

  • 头部行

8、常见HTTP状态码

成功的状态码(基本以2开头):这一类型的状态码,代表请求已成功被服务器接收、理解、并接受

200--请求已成功,请求所希望的响应头或数据体将随此响应返回

202--服务器已接受请求,但尚未处理

205--服务器成功处理了请求,且没有返回任何内容

内容被重定向(基本以3开头):需要客户端采取进一步的操作才能完成请求

301--被请求的资源已永久移动到新位置

302--请求的资源临时从不同的 URI响应请求

303--对应当前请求的响应可以在另一个 URI 上被找到,而且客户端应当采用 GET 的方式访问那个资源

305--被请求的资源必须通过指定的代理才能被访问

307--请求的资源临时从不同的URI 响应请求

请求失败的状态码(基本以4开头):

400--语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求或者请求参数有误

401--当前请求需要用户验证

403--服务器已经理解请求,但是拒绝执行

404--请求的网页不存在

405--请求行中指定的请求方法不能被用于请求相应的资源

408--请求超时

服务器端的错误(基本以5开头):了服务器在处理请求的过程中有错误或者异常状态发生

500--服务器内部错误

503--服务器暂时不可用

9、什么是死锁

进程死锁,它是操作系统或系统软件运行的一种状态:在多任务系统下,当一个或多个进程等待系统资源,而资源又被进程本身或其他进程占用时,就形成了死锁

产生死锁的原因:

①系统资源不足

②进程运行推进的顺序不合适

③资源分配不当等

产生死锁的四个必要条件:

①互斥条件:一个资源每次只能被一个进程使用

②请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放

③不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺

④循环等待条件:若干进程之间形成一种头尾相连的循环等待资源关系

避免死锁的方法:

①有序的资源分配法

②银行家算法

解决死锁:

①进行系统的重新启动(最简单粗暴)

②撤销进程,剥夺资源

银行家算法

银行家算法是一种最有代表性的避免死锁的算法

我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。

10、close_wait

在被动关闭连接的情况下,在已经接收到FIN,但是还没有发送自己FIN的时刻,连接处于close_wait状态。通常来讲,close_wait状态持续的时间应该很短,如SYN_RECV状态,但是在一些特殊情况下,就会出现连接长时间处于close_wait状态的情况。出现大量close_wait的现象,主要原因是某种情况下对方关闭了socket连接,但是我方忙于读或者写。没有关闭连接,代码需要判断socket,一旦读到0,断开连接,read返回负,检查一下errno,如果不是AGAIN,就断开连接。

11、time_wait

主动关闭的socket端会进入此状态,并且持续2MSL(最大分节生命期)时间长度,这是一个IP数据包能在互联网上生存的最长时间,超过这个时间将在网络消失。

作用:

a:可靠的实现TCP全双工连接的终止

b:允许老的重复分节在网络中消失

12、进程间通信机制

管道、消息队列、共享内存(速度最快)、信号量、文件映射、匿名/命名管道

十二条Linux运维面试必备经典笔试/面试题的更多相关文章

  1. Linux运维跳槽必备的40道面试精华题(转)

    Linux运维跳槽必备的40道面试精华题(转)   下面是一名资深Linux运维求职数十家公司总结的Linux运维面试精华,助力大家年后跳槽找个高薪好工作. 1.什么是运维?什么是游戏运维? 1)运维 ...

  2. Linux运维跳槽必备的40道面试精华题

    过一次年,结婚.存款.父母养老,一系列向钱看的事都在碾压我们本来还挺简单的神经,但难过没有出路,唯有找到好的方法和事业方向,才能实现一步一个脚印的逆袭. 下面是一名资深Linux运维求职数十家公司总结 ...

  3. 高级Linux运维工程师必备技能(扫盲篇)

    高级Linux运维工程师必备技能(扫盲篇) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在了解文件系统之前,我们要学习一下磁盘存储数据的方式,大家都知道文件从内存若要持久化存储的 ...

  4. Linux运维跳槽必备

    Linux运维跳槽必备的40道面试精华题 1.什么是运维?什么是游戏运维?1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常, 在他运转的过程中,对他进行维护,他集合了 ...

  5. Linux 运维面试问题总结

    Linux 运维面试问题总结 1.详细描述mysql主从复制的方式?(类似跟DRBD高可用的协议类型) 答: (1)同步复制(C协议:sync):只有在本地和远程磁盘都确定写入已完成时,主节点才会认为 ...

  6. 亲爱的,我是一条Linux运维技术学习路径呀。

    根据我的经验,人在年轻时,最头疼的一件事就是决定自己这一生要做什么.在这方面,我倒没有什么具体的建议:干什么都可以,但最好不要写小说,这是和我抢饭碗.总而言之,干什么都是好的:但要干出个样子来,这才是 ...

  7. 运维是做什么的?史上最全互联网Linux工作规划!十分钟找到linux运维工程师职业方向!

    首先祝贺你选择学习Linux,你可能即将踏上Linux的工作之旅,出发之前,让我带你来看一看关于Linux和Linux运维的一切. Linux因其高效率.易于裁剪.应用广等优势,成为了当今中高端服务器 ...

  8. (转)linux运维必会MySQL企业面试题

    linux运维必会MySQL企业面试题  老男孩教育运维班全体学员MySQL必会企业面试题最实战.最细致.最落地的运维实训基地,老男孩教育连续多年国内平均就业工资最高! 数据库的重要性是所有技术里最核 ...

  9. linux运维面试前,先来检查这些基础知识忘了没?

    知乎上有这样一个问题:一个新手面试 Linux 运维工作至少需要知道哪些知识?其中有一个答案对这一话题的解读非常深入,今天特别分享给大家. 一.什么是大型网站运维? 首先明确一下,全文所讲的”运维“是 ...

随机推荐

  1. Android开发之漫漫长途 XI——从I到X的小结

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

  2. Kubernetes 架构(下)- 每天5分钟玩转 Docker 容器技术(121)

    上一节我们讨论了 Kubernetes 架构 Master 上运行的服务,本节讨论 Node 节点. Node 是 Pod 运行的地方,Kubernetes 支持 Docker.rkt 等容器 Run ...

  3. Jfinal启动源码解读

    本文对Jfinal的启动源码做解释说明. PS:Jfinal启动容器可基于Tomcat/Jetty等web容器启动,本文基于Jetty的启动方式做启动源码的解读和分析,tomcat类似. 入口  JF ...

  4. Codeforces Round #301 (Div. 2)(A,【模拟】B,【贪心构造】C,【DFS】)

    A. Combination Lock time limit per test:2 seconds memory limit per test:256 megabytes input:standard ...

  5. Entity Framework Core 懒加载

    众所周知在EF 6 及以前的版本中,是支持懒加载(Lazy Loading)的,可惜在EF Core 并不支持,必须使用Include方法来支持导航属性的数据加载.不过现在EF Core的开发团队打算 ...

  6. c# tolist() 浅析

    在介绍tolist()的时候我先个大家介绍一下linq的延迟加载: var products = new List<Product> { , Category = "Electr ...

  7. VMWare 安装ubuntu,虚机设置静态IP接入公网

    本文提供的kafka安装配置为Linux(ubuntu-16.04.3) 1.首先安装VMarea(14.0.0 build-6661328) 2.到http://www.ubuntu.org.cn/ ...

  8. [国嵌攻略][117][LED驱动程序设计]

    LED程序设计 1.编写内核模块 2.搭建字符驱动框架 3.实现设备方法 头文件 <linux/io.h> writel() 1.编译/安装驱动 make cp leddev.ko ... ...

  9. 程序员之殇 —— (The Beginning of the End)噩梦、崩坏

    Look at all those faces out there (当我环视周遭的一张张脸孔) We are so different(我们是如此的不同) But we have one thing ...

  10. 基于 fireasy 构建的 asp.net core 示例

    最近花时间弄了一个关于fireasy使用的demo,已放到 github 上供大家研究,https://github.com/faib920/zero 该 demo 演示了如何使用 fireasy 创 ...