6.网络linux面试

七言 2025-8-1 14 8/1

[TOC]

网络 LINUX面试题

网络面试题

1. 网络协议分层-osi模型包含哪些?

  • 应用层:为应用程序提供服务
  • 表示层:数据格式转化及加密操作
  • 会话层:建立、管理和维护会话
  • 传输层:建立、管理和维护端到端的选择
  • 网络层:IP地址及路由选择
  • 数据链路层:提供介质访问和链路管理
  • 物理层:物理层,即物理设备
  • http协议处于应用层,TCP和UDP协议处于传输层
  • 6.网络linux面试

2. 说下你知道的HTTP状态码,以及它们代表什么意思?

  • 200:请求成功
  • 302:重定向
  • 400:Bad Request 错误请求,客户端语法错误服务器无法理解
  • 401:Unauthorized 未授权,需要身份认证
  • 403:Forbidden 服务端禁止访问
  • 404:Not Found 请求资源未找到
  • 405:Method Not Allowed 请求方法未允许
  • 500:Internal server error 内部服务器错误
  • 503:Service unavailable 服务无法获得

3. Get和Post的区别是什么?

  • 1.请求参数的位置:get在url里面传输,post在body请求体里传输
  • 2.安全性:因为传输参数位置的区别,所以get的安全性不如post
  • 3.传输数据的大小:get的参数长度受限于浏览器,post的长度不受限制
  • 4.表现形式:请求行的表现形式不一样,因为请求行里面包含请求方法

4. http和https的区别是什么?

  • 1.http信息是明文传输的,https是安全的,具有安全性的SSL加密传输
  • 2.http标准端口是80,https的标准端口是443
  • 3.http无需证书,https需要认证证书,需要到CA申请证书,一般免费证书较少,因而需要一定费用

5. cookie和session的区别是什么?

  • 1.数据存放位置不同:cookie数据存放在客户的浏览器上,session数据放在服务器上
  • 2.安全程度不同:cookie不是很安全,别人能分析存放在本地的cookie并进行cookie欺骗,考虑到安全性应当使用session
  • 3.性能使用程度不同:session会在一定时间内保存在服务器上。当访问增多,会比较占用服务器的性能,考虑到减轻服务器性能方面,应使用cookie
  • 4.数据存储大小不同:单个cookie保存数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie,而session存储在服务端,浏览器对其没有限制
  • 5.cookie一般用来记住用户登录状态,session用来进行登录验证

6. token和session的区别是什么?

  • session的弊端:
    • 1.服务器资源占用大,session是存储在服务器的内存中的,随着用户量的增大,服务器的压力就会增大
    • 2.安全性较低,session是基于cookie进行用户识别的,如果cookie被截获,用户就会很容易受到跨站请求伪造的攻击
    • 3.扩展性不强,随着用户量的增加,系统使用了多服务器的负载均衡方案,session数据是保存在单节点的内存中的,用户第一次访问的是服务器1,当用户再次请求时,可能访问的是另外一台服务器2,服务器2获取不到session信息,就会判定用户没有登录过
  • 改用token认证机制后,由于服务端不保存session了,它只是生成token,然后验证token。用服务器CPU的计算时间,换取了session的存储空间,而且即使是多台服务器集群,只是每台机器的处理逻辑算法是一样的。意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录,这为应用的扩展提供了便利
  • token:访问权限和身份认证
    • 相当于令牌、口令(动态变化),保存在客户端本地
    • 鉴权:访问的接口是否正常,是否非法访问绕过前端。防止跳过页面直接访问接口
    • 授权:是否具有访问接口的权限

7. 在浏览器输入url,到页面出现请求数据,会经历哪些过程?

  • 浏览器输入url————》DNS协议把域名地址解析为ip————》通过三次握手建立TCP并发起请求————》服务器接收请求后返回数据————》浏览器将拿到的资源进行解析和加载,渲染数据到页面————》四次挥手,断开连接

8. 什么是长连接和短连接?

  • 长连接:客户端和服务端建立连接后,后续无论进行多少次通信,所有的请求和响应数据都是在这个链接上进行,这就是长连接
  • 短连接:客户端每一次和服务端进行通信时,都重新创建一个链接,通信完成后关闭连接

9. Socket 和 websocket 有什么区别?

  • scoket并不是一个协议,它是一组接口,两个服务之间进行数据通信的时候,socket会去组织数据以便符合指定的协议
  • websocket是一个典型的应用层协议,是工作在tcp连接上的全双工通讯协议
  • 简单来说 socket组装底层的数据实现接口,websocket是应用层的全双工通讯协议

10. 说一下三次握手和四次挥手过程

  • 三次握手

    • 第一次握手:客户端给服务器发送一个SYN报文,申请连接(A向B申请连接)
    • 第二次握手:服务器收到SYN报文后,会应答一个SYN+ACK报文,表明服务器已准备好,让客户端确认是都能收到(B说我准备好了,看你的)
    • 第三次握手:客户端收到SYN+ACK报文后,会回应服务器一个ACK报文。表明客户端准备好了,开始进行连接(A说我也准备好了,连接吧)
  • 三次握手才能确认双方的接收与发送都正常

  • 四次挥手

    • 第一次挥手:客服端发送一个FIN报文,提出申请告诉服务器需要关闭连接,表示自己不再发送数据了(A向B申请断开)
    • 第二次挥手:服务端发送一个ACK报文,告诉客户端接收到关闭的请求,但是还没准备好(B说知道了,可以断开的时候我会告诉你)
    • 第三次挥手:服务端准备好关闭连接时,发送FIN报文,告诉客户端准备关闭了,发送完成后等待客户端确认(B告诉A,行了我现在准备好断开了)
    • 第四次挥手:客户端接到服务端的关闭请求,再发送ACK报文,等待服务端可能请求重传ACK。服务端接收到ACK报文后,关闭连接。客户端在等待固定时间内没有接收到服务端的ACK报文后,认为服务器已关闭连接,自己也进行关闭连接。(A说我也做好了断开准备,断开...)
  • 第四次挥手的time_wait状态,为什么客户端发送ACK后不直接关闭,需要等待一阵子才关闭,因为要确保服务器是否已经收到客户端的ACK报文,没有收到的话,服务端会要求客户端重传ACK

linux面试题

1. 常用的Linux命令都有哪些?

  • cd:切换目录;——ls -l:列出文件详细信息;——ls -a:列出当前目录下所有文件;——cp:拷贝文件;——mv:移动文件;——rm:删除文件;——chmod:设置文件权限;——cat:浏览文件内容;——vi:文件编辑;——find:搜索文件;——grep:过滤文件内容,在文本文件中查找某个字符串;——touch:创建文件;——mkdir:创建目录
  • 可以结合对应的业务来说明你的使用场景。比如说:当你安装了一个Jdk之后呢,你可能需要一些编辑的操作,需要用到vim,在这个环境当中,还有可能去安装一些对应的软件,比如说你的环境是用docker搭建的,需要用到yum装docker。如果你的项目出错了,可能需要去查看一些日志,需要用到cat,less,more。获取一些动态日志,会用到tail -f,也可能会对一些用户的权限进行设置,会用到chomd

2. linux中几种常用的查看文件内容的命令?

  • cat:适用于内容较少的文件,可以一次性显示整个文件
  • more:适用于查看内容较多的文件,可以使用空格键翻页查看后面的内容
  • less:也适用于查看内容较多的文件,less比more更灵活,因为less可以往上、往下翻页
  • head:用于查看文件的前n行
  • tail:与head命令相反,用于查看文件的后n行内容
  • 6.网络linux面试

3. 在shell环境如何杀死一个进程?

  • 比如tomcat,查看tomcat的PID命令如下:

    ps -ef|grep tomcat

  • 比如tomcat的PID是12345,停止tomcat进程命令如下:

    kill -9 12345

4. 如何找当前目录下大于10K的文件?

  • 查找目录命令find 当前目录命令.
  • 文件类型参数-type 普通文档f 文件大小参数-size

    find . -type f -size +10k

5. linux下查看/web.log第25行第三列的内容?

  • 常用的三种实现方式如下所示:
  • sed:替换、删除、更新文件中的内容
  • -n 屏蔽启动输出,对sed命令限制除非是明确表明要输出的行,否则不会输出,-n与P配合使用
  • cut:剪切文件中的数据,-d后面跟分隔符 -f来设置提取的第一个域
  • awk:格式就是 awk 条件1{动作1}... 文件名 ,对文件进行脚本命令的处理 -F指定分隔符 变量NR表示当前处理的第几行。\$n代表当前行的第几个字段

sed -n 25p /web.log | cut -d "" -f3

head -n25 /web.log |tail -n1 | cut -d "" -f3

awk -F "" 'NR==25{print \$3}' /web.log

6. linux下修改test.txt的23行test为TEST?

  • 修改文件命令sed 直接修改文件内容参数i
  • 指定行替换参数s加g

sed -i '23s/test/TEST/g' test.txt

7. 在linux中如何查找日志文件中的Error信息

  • linux中通过grep命令可以过滤文本文件中的指定信息,如:

    grep "Error" access.log

以上命令会将access.log中包含Error的行打印出来

8. 用过Docker吗?常用的docker命令有哪些?

  • docker pull:拉取镜像
  • docker images:查看本地镜像
  • docker run:运行创建镜像为容器
  • docker ps:查看正在运行的容器
  • docker logs:查看容器日志
  • docker cp:拷贝容器文件
  • docker start/stop/restart:启动、停止、重启容器

9. 如何查看服务端口号?以及对应的进程?

  • netstat -tunlp 用于显示tcp,udp的端口和进程等相关情况

  • netstat查看端口占用语法格式:

    netstat -tunlp | grep 端口号

  • 通常用ps查看进程pid

    ps -aux | grep 进程名

- THE END -

七言

8月01日16:37

最后修改:2025年8月1日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论