-
题目均来自测试开发岗的大厂真实面试题
-
除此之外,还会不定期更新 测试内推岗 测试学习资源🍻
在阅读题目时,先自我思考一下🤔。然后再点击题目即可查看答案或百度。
01.白盒和黑盒测试的方法有哪些?
- 黑盒测试的测试方法有:等价类划分、边界值分析法、猜错法、随机数法、因果图。
- 白盒测试的测试方法有:代码检查法、程序变异、静态结构分析法、静态质量度量法、符号测试法、逻辑覆盖法、域测试、Z路径覆盖和基本路径测试法。
01.数组、list与arrayList区别
-
数组与ArrayList区别
- 数组是在内存空间中申请一段连续的内存地址,所以数组的查询速度很快是常量
- ArrayList的大小是按照其中存储的数据来动态扩充与收缩的。所以,我们在声明ArrayList对象时并不需要指定它的长度
-
List与ArrayList区别
- List类是ArrayList类的泛型等效类
- 由于ArrayList可以插入不同类型的数据,因为ArrayList都把他们当作了object来处理。
- 在我们使用ArrayList中的数据来处理问题的时候,很可能会报类型不匹配的错误,也就是说ArrayList不是类型安全
- 并且这里涉及了装箱和拆箱导致ArrayList处理性能低
- 装箱:将值类型的数据打包到引用类型的实例中
- 拆箱:从引用数据中提取值类型
- List继承了Arraylist,在定义时需要加上特定的类型,这样就不会引起强制转换,类型检测也交给编译器进行检测
- 由于ArrayList可以插入不同类型的数据,因为ArrayList都把他们当作了object来处理。
- List类是ArrayList类的泛型等效类
JDK、JVM、JRE是什么?
-
JVM
- Java 虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。
在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。
-
JDK
- JDK 是 Java Development Kit,它是功能齐全的 Java SDK。它拥有 JRE 所拥有的一切,还有编译器(javac)和工具(如 javadoc 和 jdb)。它能够创建和编译程序。
-
JRE
- JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机(JVM),Java 类库,java 命令和其他的一些基础构件。但是,它不能用于创建新程序。
如果你只是为了运行一下 Java 程序的话,那么你只需要安装 JRE 就可以了。如果你需要进行一些 Java 编程方面的工作,那么你就需要安装 JDK 了。但是,这不是绝对的。有时,即使您不打算在计算机上进行任何 Java 开发,仍然需要安装 JDK。例如,如果要使用 JSP 部署 Web 应用程序,那么从技术上讲,您只是在应用程序服务器中运行 Java 程序。那你为什么需要 JDK 呢?因为应用程序服务器会将 JSP 转换为 Java servlet,并且需要使用 JDK 来编译 servlet。
01如何使用python实现多线程
通过python提供的threading模块
import time, threading
# 新线程执行的代码:
def loop():
print('thread %s is running...' % threading.current_thread().name)
n = 0
while n < 5:
n = n + 1
print('thread %s >>> %s' % (threading.current_thread().name, n))
time.sleep(1)
print('thread %s ended.' % threading.current_thread().name)
print('thread %s is running...' % threading.current_thread().name)
t = threading.Thread(target=loop, name='LoopThread')
t.start()
t.join()
print('thread %s ended.' % threading.current_thread().name)
01.数据库的范式
- 第一范式NF:
- 数据库表中的字段都是单一属性的,不可再分。简单的说,每一个属性都是原子项,不可分割
- 第二范式2NF
- 数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖,即符合第二范式
- 第三范式3NF
- 数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合3NF
02.mysql常用的存储引擎有什么?区别是什么?
-
常用的存储引擎是:InnoDB,MyISAM
-
区别在于:
- InnoDB支持事务,而MyISAM不支持事务
- InnoDB支持行级锁,而MyISAM支持表级锁
- InnoDB支持MVC, 而MyISAM不支持
- InnoDB支持外键,而MyISAM不支持
- InnoDB不支持全文索引,而MyISAM支持。
01.Cookie与Session的区别
HTTP是无状态协议,它不对之前发生过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。HTTP/1.1虽然是无状态协议,但为了实现期望的保持状态功能,于是引入了Cookie技术。
- 隐私策略与安全策略不同
- Cookie:存储在客户端(浏览器),能被用户看见或使用。可能会被用于xss(跨站脚本攻击)
- Session:存储服务端,相对更加安全
- 有效期不同
- Cookie:通过Expires字段来设置过期时间
- Session:关闭浏览器后,服务器存储的Session就会失效,为了保障浏览器内存不溢出
- 服务器压力不通
- Cookie:存储在客户端,不占用服务端资源。但每次请求都会带上Cookie,对带宽造成一定浪费
- Session:存储在服务端,每个用户都会产生一个Session。假如并发访问的用户十分多,会产生十分多的Session,耗费大量的内存。
02.打开浏览器,从输入 www.baidu.com 到看到浏览器显示页面,这个过程中,都有哪些步骤和环节?
- DNS域名解析
- TCP三次握手
- 发生http请求
- 接受http响应
- 浏览器解析响应文件(js,css,html)
03.网络协议,如TCP/UDP的区别?
- TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
- TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
- TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
- 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
- TCP首部开销20字节;UDP的首部开销小,只有8个字节
- TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
查询文件中某个字符出现的次数,使用linux命令写出来
-
底线命令模式
- :%s/str//ng
-
文本查找模式
- grep -o str filename | wc -l
01.你能手写一下冒泡排序吗?
def bubble_sort(list):
for i in range(0,len(list)-1):
for j in range(i+1,len(list)):
if list[i]>list[j]:
list[j],list[i] = list[i],list[j]
return list