前言
最近有收到一些不同公司的面试题,像字节跳动、 易、美团等,趁着有时间,给大家梳理下,说不定面试能派上用场,大概给大家从以下几个方面来做了整理:
- 个人信息:(工作/实习经验,所做的项目,态度素养)
- 测试思维
- 情景问题
- 计算机 络
- 操作系统
- 代码/算法题
- 语言(Python/Java)
- Linux
- 数据库
计算机 络
1.介绍 OSI 模型
第一层:物理层,功能:利用传输介质为通信的主机之间的建立、管理和释放物理连接,实现比特流的透明传输,为数据联立层提供数据传输服务
第二层:数据链路层,功能:在物理层提供比特流的基础上通过建立数据链路连接,采用差错控制与流量控制方法,使有差错的物理线路变成无差错的数据链路
第三层: 络层,功能:通过路由选择算法为分组通过通信子 选择适当的传输路径,实现流量控制,拥塞控制与 络互联的功能
第四层:传输层,功能:为分布不同地理位置计算机的进程提供可靠的端对端链接与数据传输服务;传输层向高层屏蔽了底层数据通信的细节
第五层:会话层,功能:负责维护两个会话主机之间连接的建立、管理和终止,以及数据的交换
第六层:表示层,功能:负责通信系统之间的数据格式变换、数据加密与解密、数据压缩与恢复
第七层:应用层,功能:实现协同工作的应用程序之间的通信过程控制
2.为什么 TCP 消耗系统资源多
3.TCP 与 UDP 区别
- 基于连接与无连接;
- 对系统资源的要求(TCP 较多,UDP 少);
- UDP 程序结构较简单;
- 流模式与数据 模式 ;
- TCP 保证数据正确性,UDP 可能丢包,TCP 保证数据顺序,UDP 不保证。
4.TCP 怎么保证可靠连接
5.http 会话保持功能如何实现strong>
6.http 状态码strong>
1XX:通知。1XX 系列响应代码仅在与 HTTP 服务器沟通时使用。
2XX: 成功。2XX 系列响应代码表明操作成功了。
3XX 重定向。3XX 系列响应代码表明:客户端需要做些额外工作才能得到所需要的资源。
4XX:客户端错误。这些响应代码表明客户端出现错误。不是认证信息有问题,就是表示格式或 HTTP 库本身有问题。客户端需要自行改正。
5XX 服务端错误。这些响应代码表明服务器端出现错误。
7.http 长连接和短连接以及他们分别适用的场景 strong>
8.get 和 post 区别strong>
Get:
a.一般对于从服务器取数据的请求可以设置为 get 方式
b.Get 方式在传递参数的时候,一般都会把参数直接拼接在 url 上(例如:http://xxx=1&type=2)
c.Get 请求方法可以传递的参数数据量是有限的(因为一般参数是拼接在 url 上,而浏览器对于 url 的长度是有限制的)
d.Get 请求因为是直接将数据拼接在 url 上,所以安全性不如 post 强(相对),但是 get 的执行效率要快于 post
Post:
a.一般往服务器提交数据的请求会设置为 post 方式
b.Post 方式传递参数一般都会把参数放在请求体,而不会拼接在 url
c.Post 请求方法可以提交的数据量不受限制
Post 请求传参相对于 get 要安全(相对不是绝对),但是 post 的执行效率不如 get。
9.post 主体的格式strong>
10.http 协议的 header
11.cookie 和 session 是什么,为什么要用 cookie 和 session strong>
12.DNS 协议和作用strong>
13.Https 中的 CA 证书在客户端还是在服务端strong>
代码题、算法题
1.装饰器并写一个装饰器例子p>
2.找出 数组中出现次数超过一半的数字
3.哈希表的空间复杂度
4.算法题:给你一个字符串,查找出所有的重复子字符串。
5.算法题:树的深度遍历:while 循环:栈,先入右子树节点,后入左子树节点。
6.算法题:给你一个字符串找出其中的回文字符串,对你的算法设计用例
7.算法题:二叉树的前序遍历
Python/Java 基础
- 面向对象语言的特性strong>
- 深拷贝与浅拷贝strong>
数据类型分为两种基础类型和引用类型
- 基础类型:像 Number、String、Boolean 等这种为基本类型
- 引用类型:Object 和 Array
浅拷贝只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝(例:assign())
深拷贝是将对象及值复制过来,两个对象修改其中任意的值另一个值不会改变,这就是深拷贝
- python 元祖和列表的区别
a=[] 这是一个列表
b=() 这是一个元组
区别:列表可以修改而元组不能修改,例如可以往列表中用 append()添加元素,由于元组是不可修改的所以不存在添加元素的问题。
相同点:列表和元组都是容器,包含了一些列的对象,二者都可以包含任意类型的元素甚至包含序列。
- python 去重用什么 strong>
- python 用过哪些库函数strong>
- selenium 用到什么程度了strong>
- python 装饰器,作用,用法
- Java:多态说一下,接口类和抽象类的区别;
- Java/Python 的垃圾回收机制strong>
- Java 和 python 创建多线程和多进程的方式 strong>
Linux
1.常见命令
2.打印当前文件夹文件 ls -al a 所有文件 l 详细信息
3.查询 CPU 等情况的命令
答案:free 命令是一个快速查看内存使用情况的方法,它是对 /proc/meminfo 收集到的信息的一个概述。
top 命令提供了实时的运行中的程序的资源使用统计
atop 命令是一个终端环境的监控命令。它显示的是各种系统资源(CPU, memory, network, I/O, kernel)的综合,并且在高负载的情况下进行了彩色标注
htop 命令显示了每个进程的内存实时使用率。它提供了所有进程的常驻内存大小、程序总内存大小、共享库大小等的 告。列表可以水平及垂直滚动。
ps 命令可以实时的显示各个进程的内存使用情况。
smem 命令允许你统计基于/proc 信息的不同进程和用户的内存使用情况。内存使用情况的分析可以导出图表(如条形图和饼图–图形界面窗口才提供)。
vmstat 命令显示实时的和平均的统计,覆盖 CPU、内存、I/O 等内容。例如内存情况,不仅显示物理内存,也统计虚拟内存。
nmon 是一个基于 ncurses 的系统基准测试工具,它可以监控 CPU、内存、I/O、文件系统及 络资源等的互动模式。对于内存的使用,它可以实时的显示 总/剩余内存、交换空间等信息。
好文分享
数十万csdn小白难题:自学软件测试,学到什么程度可以出去找工作啊offer不要了,换字节跳动…
25岁的我失业了,学物流管理的我选择转行做软件测试,5个月靠体系化自学“跳进”阿里年薪15w+!
B站免费系列学习视频分享
【软件测试0基础学习】
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93523 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!