测试开发面经

news2025/1/9 4:32:44

操作系统

进程与线程

在这里插入图片描述

进程间通信方式

进程间的六种通信方式

  • 管道
  • 消息队列
  • 共享内存
  • 信号量
  • 信号
  • 套接字

socket长连接和短连接

长连接与短连接的概念:前者是整个通讯过程,客户端和服务端只用一个Socket对象,长期保持Socket的连接;后者是每次请求,都新建一个Socket,处理完一个请求就直接关闭掉Socket。所以,其实区分长短连接就是:整个客户和服务端的通讯过程是利用一个Socket还是多个Socket进行的

同步和异步的区别

同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是处于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。 (打电话)

异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。(发短信)

计算机网络

HTTP状态码

状态码详解

1xx : 消息,这一类型的状态码,代表请求已被接受,需要继续处理。但是一般服务器禁止向客户端发送此类状态码;
2xx : 成功,这一类型的状态码,代表请求已成功被服务器接收、理解、并接受;
3xx : 重定向,这类状态码代表需要客户端采取进一步的操作才能完成请求;
4xx : 请求错误,这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理;
5xx : 服务器错误,这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。


200:(成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
301 – (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
302 – (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
401:请求未通过认证
403:请求通过认证但没有授权
404:服务器找不到请求的网页。
500:表示服务器内部异常
503:表示服务器正处于超负载或者正在进行停机维护,无法处理请求
504:表示服务器请求超时,没有返回结果

体系结构

在这里插入图片描述

TCP与UDP的区别

  • TCP 面向连接(如打电话要先拨号建立连接)提供可靠的服务,UDP 是无连接的,即发送数据之前不需要建立连接,UDP 尽最大努力交付,即不保证可靠交付。

  • UDP 具有较好的实时性,工作效率比 TCP 高,适用于对高速传输和实时性有较高的通信或广播通信。

  • 每一条 TCP 连接只能是一对一的,UDP 支持一对一,一对多,多对一和多对多的交互通信。

  • UDP 分组首部开销小,TCP 首部开销 20 字节,UDP 的首部开销小,只有 8 个字节。

  • TCP 面向字节流,实际上是 TCP 把数据看成一连串无结构的字节流,UDP 是面向报文的一次交付一个完整的报文,报文不可分割,报文是 UDP 数据报处理的最小单位。

  • UDP 适合一次性传输较小数据的网络应用,如 DNS,SNMP 等。

TCP长连接和短连接

TCP长连接和短链接的区别及应用场景

三次握手四次挥手

面试官,不要再问我三次握手和四次挥手

输入域名后经过了什么

在这里插入图片描述

Get和Post的区别

1.get请求一般是去取获取数据(其实也可以提交,但常见的是获取数据);
post请求一般是去提交数据。
2.get因为参数会放在url中,所以隐私性,安全性较差,请求的数据长度是有限制的,
不同的浏览器和服务器不同,一般限制在 2~8K 之间,更加常见的是 1k 以内;
post请求是没有的长度限制,请求数据是放在body中;
3.get请求刷新服务器或者回退没有影响,post请求回退时会重新提交数据请求。
4.get请求可以被缓存,post请求不会被缓存。
5.get请求会被保存在浏览器历史记录当中,post不会。get请求可以被收藏为书签,因为参数就是url中,但post不能。它的参数不在url中。
6.get请求只能进行url编码(appliacation-x-www-form-urlencoded),post请求支持多种(multipart/form-data等)。

Cookie和Session

Cookie和Session的区别(面试必备)

Http和Https

HTTP与HTTPS的区别,详细介绍

Linux

如何查看进程是否存活以及端口号

  • ps:ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。
  • netstat:netstat 命令用于显示网络状态

ps aux命令,通过stat列可以查看进程状态
在这里插入图片描述

netstat -anp命令,可以查看端口号及进程
在这里插入图片描述

查看Cpu和内存情况

top:能够实时显示系统中Cpu、内存以及各个进程的资源占用状况
在这里插入图片描述
cat /proc/cpuinfo:存储Cpu信息
cat /proc/meminfo:存储内存信息

awk、sed、grep

数据库Mysql

左连接右连接

MySQL 有这一篇就够(呕心狂敲37k字,只为博君一点赞!!!)

数据结构与算法

快速排序


func sortArray(nums []int) []int {
	quickSort(nums, 0, len(nums)-1)
	return nums
}
func quickSort(nums []int, begin int, end int) {
	if begin > end {
		return
	}
	randIdx := begin + rand.Intn(end-begin+1)
	nums[begin], nums[randIdx] = nums[randIdx], nums[begin]
	key := nums[begin]
	j := begin
	for i := j + 1; i <= end; i++ {
		if nums[i] < key {
			j++
			nums[j], nums[i] = nums[i], nums[j]
		}
	}
	nums[j], nums[begin] = nums[begin], nums[j]
	quickSort(nums, begin, j-1)
	quickSort(nums, j+1, end)
}

堆排序

哈夫曼编码

哈夫曼编码

堆和栈的区别

(1)管理方式不同。栈由操作系统自动分配释放,无需我们手动控制;堆的申请和释放工作由程序员控制,容易产生内存泄漏;

(2)空间大小不同。每个进程拥有的栈大小要远远小于堆大小。理论上,进程可申请的堆大小为虚拟内存大小,进程栈的大小 64bits 的 Windows 默认 1MB,64bits 的 Linux 默认 10MB;

(3)生长方向不同。堆的生长方向向上,内存地址由低到高;栈的生长方向向下,内存地址由高到低。

(4)存放内容不同。栈存放的内容,函数返回地址、相关参数、局部变量和寄存器内容等。堆存放使用new创建的对象,全局变量

Go/C++

面向对象的三大特征

  • 封装
    封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。
  • 继承
    就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为
  • 多态
    在继承基础上,才有多态
    多态的实现的必要条件:
    存在继承关系
    存在方法重写
    父类引用指向子类对象

方法的重载与重写

  1. 方法的重载:
    方法名相同,而方法的参数数量不同或数量相同而类型和次序不同。

  2. 方法的重写:
    方法的重写,不能发生在同类中,只能发生在子类中。 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数,则新方法将覆盖原有的方法。

  3. 重写与重载的区别:
    重载实现于一个类中;重写实现于子类中。

测试

如果定位bug出现在前端还是后端

1.通常可以利用抓包工具来进行分析
(1)传参内容是否正确
如果传参内容不正确,定位为前端的bug。
(2)响应内容是否正确
如果响应内容不正确,为后端bug。

2.前后端bug各有什么样的特殊性质
(1)前端bug特性:界面相关,布局相关,兼容性相关,交互相关。
(2)后端bug特性:数据相关,安全性相关,逻辑性相关,性能相关。

3.定位BUG属于前端还是后端,常用的有以下2种方法:
(1)查看http请求参数和响应结果。
(2)查看后端服务log日志有无错误日志信息。

计算机组成原理

冯·诺依曼体系结构

运算器、控制器、存储器、输入设备、输出设备
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/333628.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows/VM虚拟机安装黑群晖6.1-----保证有效而且简单操作

1视频&#xff1a;Windows/VM虚拟机安装黑群晖教程_哔哩哔哩_bilibili2:网址&#xff1a;Synology Web Assistant3&#xff1a;重新打开群晖操作步骤1&#xff1a;按着视频下载好资源后&#xff0c;按照视频操作&#xff0c;途中修改地方&#xff08;两个情况选择其中一个&…

Docker系列(镜像原理)03

前言 镜像就是图中的集装箱&#xff0c;仓库就是超级码头&#xff0c;容器就是我们运行程序的地方。 从联合文件系统说起 Union文件系统(UnionFS )是一种分层、轻量级并且高性能的文件系统。它支持对文件系统的修改作为一次提交来一层层的叠加&#xff0c;同时可以将不同目录…

【游戏逆向】】游戏全屏捡物的分析实现

前言 在角色对战类中&#xff0c;拾取怪物掉落的装备是一项必备的工作&#xff0c;由于装备位置掉落的不确定性&#xff0c;玩家想要拾取离角色距离较远的装备需要一定的时间&#xff0c;这一段时间往往会影响游戏的评分或是玩家的心态&#xff0c;基于此&#xff0c;全屏捡物…

【Unity VR开发】结合VRTK4.0:键盘操作运动与旋转

前言&#xff1a; 当我们的手柄无发进行VR测试&#xff0c;或者想通过键盘进行验证&#xff0c;那么就用到了我们今天的一个功能&#xff1a;组合操作。组合操作允许更复杂的输入类型&#xff0c;我们将介绍如何使用布尔输入&#xff08;如键盘键&#xff09;来模拟模拟轴&…

Java中LinkedList增删改比ArrayList快吗?

在 Java 中&#xff0c;LinkedList 和 ArrayList 的性能是不同的&#xff0c;具体取决于你所需要的操作。 对于频繁的插入和删除操作&#xff0c;LinkedList 的性能通常更好&#xff0c;因为它使用了链表数据结构&#xff0c;只需更改节点的指针就可以在链表中插入或删除元素。…

剑指Offer 第26天 表示数值的字符串 Hard

表示数值的字符串_牛客题霸_牛客网 描述 请实现一个函数用来判断字符串str是否表示数值&#xff08;包括科学计数法的数字&#xff0c;小数和整数&#xff09;。 科学计数法的数字(按顺序&#xff09;可以分成以下几个部分: 1.若干空格 2.一个整数或者小数 3.&#xff08;可选&…

计算机组成原理第七章笔记记录

仅仅作为笔记记录,B站视频链接&#xff0c;若有错误请指出&#xff0c;谢谢 基本概念 演变过程 I/O系统基本组成 I/O软件 包括驱动程序、用户程序、管理程序、升级补丁等 下面的两种方式是用来实现CPU和I/O设备的信息交换的 I/O指令 CPU指令的一部分,由操作码,命令码,设备…

前端 基于 vue-simple-uploader 实现大文件断点续传和分片上传

文章目录一、前言二、后端部分新建Maven 项目后端pom.xml配置文件 application.ymlHttpStatus.javaAjaxResult.javaCommonConstant.javaWebConfig.javaCheckChunkVO.javaBackChunk.javaBackFileList.javaBackChunkMapper.javaBackFileListMapper.javaBackFileListMapper.xmlBac…

2023年rabbitMq面试题汇总4(7道)

一、如何保证消息的顺序性&#xff1f;1. 通过某种算法&#xff0c;将需要保持先后顺序的消息放到同⼀个消息队列中(kafka中就是partition,rabbitMq中就是queue)。然后只⽤⼀个消费者去消费该队列。2. 可以在消息体内添加全局有序标识来实现。二、使⽤RabbitMQ增加rest服务吞吐…

JVM调优几款好用的内存分析工具

对于高并发访问量的电商、物联网、金融、社交等系统来说&#xff0c;JVM内存优化是非常有必要的&#xff0c;可以提高系统的吞吐量和性能。通常调优的首选方式是减少FGC次数或者FGC时间&#xff0c;以避免系统过多地暂停。FGC达到理想值后&#xff0c;比如一天或者两天触发一次…

【Android -- 每日一问】现在 Android 怎么学?学什么?

不管在任何行业&#xff0c;任何岗位&#xff0c;初级技术人才总是供大于求&#xff1b;不管任何行业、岗位&#xff0c;技术过硬的也都是非常吃香的&#xff01; 这几年 Android 新技术的迭代明显加速了&#xff0c;有来自外部跨平台新物种的冲击&#xff0c;有去 Java 化的商…

Dropout的原理与细节?

1. 什么是Dropout? Dropout是通过使得每个神经元以一定的概率停止工作来接缓解过拟合问题。dropout(随机失活):dropout是通过遍历神经网络每一层的节点,然后通过对该层的神经网络设置一个keep_prob(节点保留概率),即该层的节点有keep_prob的概率被保留,keep_prob的取值范围…

YOLO-V1~V3经典物体检测算法介绍

大名鼎鼎的YOLO物体检测算法如今已经出现了V8版本&#xff0c;我们先来了解一下它前几代版本都做了什么吧。本篇文章介绍v1-v3&#xff0c;后续会继续更新。一、节深度学习经典检测方法概述1.1 检测任务中阶段的意义我们所学的深度学习经典检测方法 &#xff0c;有些是单阶段的…

windows无法访问指定设备路径或文件怎么办?2个解决方案

有时候Win10电脑打不开程序或文件&#xff0c;windows无法访问指定设备路径或文件该怎么办&#xff1f;原因是什么呢&#xff1f;一般导致这种情况的出现&#xff0c;大多是因为我们的电脑缺乏相应的查看权限&#xff0c;我们只需要通过赋予权限就可以解决这个难题了。 操作环境…

负载均衡下的webshell上传

负载均衡下的webshell上传1.应用场景2.面临的困难2.1 shell文件上传问题2.2 命令执行时的漂移2.3 大工具投放失败2.4 内网穿透工具失效3.一些解决方案3.1 关机3.2 基于IP判断执行主机3.3 脚本实现web层的流量转发3.3.1 创建antproxy.jsp脚本3.3.2 修改 Shell 配置4.总结1.应用场…

零基础学SQL(十、子查询与多表关联)

目录 前置建表 ​编辑 编辑 一、子查询 1、什么是子查询 2、子查询的类型 二、表关联查询 1、连接分类 1.1、交叉连接 &#xff08;CROSS JOIN&#xff09; 1.2、内连接&#xff08;inner join&#xff09; 1.3、外连接&#xff08;left join ,right join,full joi…

Nodejs原型链污染

Nodejs与JavaScript和JSON 有一些人在学习JavaScript时会分不清Nodejs和JavaScript之间的区别&#xff0c;如果没有node&#xff0c;那么我们的JavaScript代码则由浏览器中的JavaScript解析器进行解析。几乎所有的浏览器都配备了JavaScript的解析功能&#xff08;最出名的就是…

《Terraform 101 从入门到实践》 第二章 Providers插件管理

《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新&#xff0c;书中的示例代码也是放在GitHub上&#xff0c;方便大家参考查看。 不怕出身低&#xff0c;行行出状元。 插件 Terraform可以对多种平台的多种资源进行管理&#xff0c;这个是通过…

隐私计算概览

1、政策背景与应用驱动 1、国内政策法规 2022年1月&#xff0c;十四五规划&#xff1a;初步建立数据源要素市场体系&#xff0c;在保护数据安全和用户隐私前提下&#xff0c;参与数据价值开发。2022年3月&#xff0c;国务院《关于构建更加完善的要素市场化配置体制机制的意见…

java面试题(十七)spring

2.1 请你说说Spring的核心是什么 参考答案 Spring框架包含众多模块&#xff0c;如Core、Testing、Data Access、Web Servlet等&#xff0c;其中Core是整个Spring框架的核心模块。Core模块提供了IoC容器、AOP功能、数据绑定、类型转换等一系列的基础功能&#xff0c;而这些功能…