QA基础笔试练习题及答案解析

本练习包含知识点:计算机网络、SQL语句、Python基础、软件测试基础。

目录

一、选择题

二、简答题

 


一、选择题

1. 以下哪种HTTP状态码表示客户端错误?(B)

a. 200

b. 404

c. 500

d. 302

  • 200:表示请求成功(OK)。
  • 404:表示客户端错误,具体含义是“未找到”(Not Found),即请求的资源不存在。
  • 500:表示服务器错误(Internal Server Error)。
  • 302:表示重定向(Found),并非客户端错误。

2. 当一个页面从HTTP迁移到HTTPS,但其中一些资源仍然使用HTTP链接时,这种情况叫什么?(A)

a. Mixed Content

b. Resource Fallback

c. SSL Renewal

d. Protocol Mismatch

  • Mixed Content(混合内容):指的是在HTTPS页面上仍然使用HTTP加载部分资源(如图片、脚本、CSS),可能导致安全风险。
  • Resource Fallback:指的是资源无法加载时回退到备用资源,并非指HTTP和HTTPS混用。
  • SSL Renewal:指SSL证书的续期,与资源加载无关。
  • Protocol Mismatch:一般指通信协议不匹配,未特指HTTP和HTTPS混用。

3. 哪一个是Python中的无效变量名?(C)

a. _myVar

b. myVar1

c. 1myVar

d. my_Var

  • 变量名必须以字母(a-z, A-Z)或下划线(_)开头,不能以数字开头。
  • _myVar:合法,以下划线开头的变量在Python中是有效的。
  • myVar1:合法,变量名可以包含字母和数字。
  • 1myVar:非法,变量名不能以数字开头。
  • my_Var:合法,Python允许使用下划线。

4. 在Python中,哪个关键字用于定义类方法?(C)

a. func

b. def

c. class

d. static

  • func:不是Python的关键字,Python使用def来定义函数和方法。
  • def:用于定义函数或方法。
  • class:用于定义类,而非类方法。
  • static@staticmethod是Python中的装饰器,用于定义静态方法,但不是定义方法的关键字。

5. 要从数据库表中选取所有唯一的城市名称,你会使用哪个SQL关键字?(B)

a. UNIQUE

b. DISTINCT

c. SINGLE

d. ONE

  • UNIQUE:用于定义列的约束(constraint),防止重复值,但不能用于查询去重。
  • DISTINCT:用于SQL查询,返回唯一值,即去掉重复的城市名称。
  • SINGLEONE:不是SQL关键字。

示例查询:

SELECT DISTINCT city FROM table_name;

6. 哪一个SQL语句用于返回表中记录的数量?(B)

a. RETURN

b. COUNT

c. SUM

d. NUMBER

  • RETURN:SQL中没有此关键字用于计数。
  • COUNT:用于统计查询结果的行数,例如:
    • SELECT COUNT(*) FROM table_name;
      
  • SUM:用于计算数值列的总和,不是用于计数的。
  • NUMBER:SQL中没有这个关键字。

二、简答题

7.什么是HTTP的无状态性?这有什么缺点?

HTTP的无状态性是指HTTP协议本身不会保存任何关于客户端状态的信息。每个请求都是独立的,服务器不会记住之前的请求或会话状态。这意味着服务器不能根据之前的请求来了解客户端的上下文或状态。缺点是无法跟踪会话状态,以及服务器在每个请求中重新获取客户端的状态信息,这可能会导致额外的性能开销,特别是在处理大量并发请求时。

8. 描述HTTP和HTTPS的主要区别。

HTTPS = HTTP+完整性保护+身份认证+加密。

  1. https有ssl加密机制,比http更加安全。
  2. http传输是明文传输,https是密文。
  3. https需要用到CA,CA一般是收费的。但http是免费的。
  4. http响应速度更快,因为它只需要3次tcp握手,交换3个包,但是https除了3次tcp握手外还要和ssl握手,一共交换3+9=12个包。
  5. http端口80,https端口443
  6. 浏览器显示不一样。http会显示不安全,https会显示安全。

9. 什么是跨域资源共享(CORS)?为什么它是重要的?

跨域资源共享是一种机制,用于在浏览器和服务器之间进行跨源(即不同源)HTTP请求时控制对资源的访问权限。跨域拦截的初衷是保护用户,使用户不受到恶意网站的侵害,但这个机制也阻碍了正常的跨域调用。CORS是重要的因为它允许Web应用程序从不同的域中获取所需的资源,而不必牺牲安全性。没有CORS,浏览器会阻止这些跨域请求。

10. 当你找到一个bug时,应该如何记录和报告它,以使开发人员能够有效地理解并修复它?

详细描述问题,提供复现步骤,提供环境信息,附加截图或录像,提供错误信息或日志,分配优先级和严重程度,持续跟进。

11. 如果你正在测试一个Web API,并收到了一个500的HTTP响应,你会如何进一步诊断该问题?

检查错误消息,查看服务器日志,重现问题,使用调试工具,与开发团队沟通。

12. 假设你正在使用一个bug追踪工具,开发团队频繁地将bug标记为“不能重现”。你会如何解决这个问题?

持续跟进,有时候,bug只在特定条件下才会出现,持续跟进可以帮助找到这些条件。

与开发团队保持良好的沟通和协作。

13. 在Web应用中,为什么重要要考虑到SQL注入和XSS攻击?这两者有何不同?

SQL注入是一种利用Web应用程序中未经过滤的用户输入来执行恶意SQL语句的攻击。攻击者通过在输入字段中注入恶意的SQL代码,可以绕过身份验证、获取敏感数据、修改数据库内容等。

XSS攻击是一种将恶意脚本注入到Web页面中,然后在用户的浏览器上执行的攻击。攻击者可以利用XSS漏洞窃取用户会话信息、篡改页面内容、重定向用户浏览器等。

14.描述Python的装饰器,并给出一个简单的示例。

装饰器是Python中一种用于修改函数或方法行为的函数。它们可以接受函数作为参数,并返回一个新的函数,通常用于添加额外的功能或修改原始函数的行为。

def my_decorator(func):
    def wrapper():
        print("A.")
        func()
        print("B.")
    return wrapper


@my_decorator
def say_hello():
    print("Hello!")


say_hello()

15. 什么是Python中的列表推导式(list comprehension)?请给出一个例子。

生成1到10的平方列表:squares = [x**2 for x in range(1, 11)]

16. 写一个Python函数,用于计算并返回一个字符串中每个字符的出现频率。

def char_frequency(string):
    frequency = {}
    for char in string:
        if char in frequency:
            frequency[char] += 1
        else:
            frequency[char] = 1

    return frequency



result = char_frequency("hello")
print(result)

17. 何时应该使用INNER JOIN,何时应该使用LEFT JOIN?

当只需要返回两个表中共有的记录时使用INNER JOIN。INNER JOIN会返回两个表中满足连接条件的记录,如果没有匹配的记录,则不返回任何结果。

当需要返回左表中的所有记录以及右表中与之匹配的记录时使用LEFT JOIN。即使右表中没有匹配的记录,左表中的记录也会被返回,右表中的字段值为NULL。

18. 设有一个员工表employees和一个部门表departments。employees表有一个department_id字段来标识每个员工所在的部门。编写一个SQL查询,列出每个部门及其员工数量。

SELECT departments.department_id, COUNT(*)
FROM departments, employees
WHERE employees.department_id = departments.department_id
GROUP BY departments.department_id;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值