[TOC]
网络 LINUX面试题
网络面试题
1. 网络协议分层-osi模型包含哪些?
- 应用层:为应用程序提供服务
- 表示层:数据格式转化及加密操作
- 会话层:建立、管理和维护会话
- 传输层:建立、管理和维护端到端的选择
- 网络层:IP地址及路由选择
- 数据链路层:提供介质访问和链路管理
- 物理层:物理层,即物理设备
- http协议处于应用层,TCP和UDP协议处于传输层
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行内容
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 -
最后修改:2025年8月1日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://www.qian777.cn/65.html
共有 0 条评论