1、正则表达式中,什么是贪婪匹配、什么是非贪婪匹配。
2、正则表达式中,seach() 和 mathch() 的区别。
3、介绍一下 udp 和 tcp 协议。
4、get 和 post 的根本区别。(划重点:根本)
5、介绍一下自动化实现的步骤。
6、UI 自动化过程中用到哪些定位元素的方法。
8、UI 自动化中,用到哪些等待方式。
7、用 python 操作 excel。
8、session cookie、token、的区别。
9、介绍一下自己的优势。
10、判断 ipV4 的合法性。(代码实操)
get 和 post 的根本区别就是没有区别,从协议的角度上看都是用的 http 协议,http 只规定了客户端和服务器直接的通信规则需要包含请求头、请求体和响应码等字段,这两种方法只是浏览器或者开发者对请求的行为做了定义并做了不同的解释和规范
自己的优势:
人长得帅,运气又好,家里还挺有钱,我爱说实话
*
、+
、?
)会尽可能多地匹配字符,这称为贪婪匹配。?
,可以使量词变为非贪婪匹配,即尽可能少地匹配字符。示例代码:
import re
# 贪婪匹配
greedy_match = re.findall(r'\d+', '123abc456def789')
print(greedy_match) # 输出 ['123456789']
# 非贪婪匹配
non_greedy_match = re.findall(r'\d+?', '123abc456def789')
print(non_greedy_match) # 输出 ['123', '456', '789']
search()
:在字符串中搜索正则表达式的第一次出现,并返回一个匹配对象。如果没有找到匹配,则返回None
。match()
:仅从字符串的开始位置匹配正则表达式,如果开始位置没有匹配,则返回None
。示例代码:
import re
# search() 示例
search_result = re.search(r'foo', 'bar foo baz')
print(search_result.group()) # 输出 'foo'
# match() 示例
match_result = re.match(r'foo', 'bar foo baz')
print(match_result) # 输出 None
介绍一下 udp 和 tcp 协议。
get 和 post 的根本区别。(划重点:根本)
介绍一下自动化实现的步骤。
UI 自动化过程中用到哪些定位元素的方法。
UI 自动化中,用到哪些等待方式。
示例代码(使用 Selenium):
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("http://example.com")
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
finally:
driver.quit()
使用openpyxl
库操作 Excel 示例代码:
from openpyxl import Workbook
# 创建一个新的Excel工作簿
wb = Workbook()
# 选择默认的工作表
ws = wb.active
# 给工作表命名
ws.title = "Sample Sheet"
# 写入数据
ws.append(["ID", "Name", "Score"])
ws.append([1, "John", 85])
ws.append([2, "Doe", 90])
# 保存工作簿到文件
wb.save("sample.xlsx")
session cookie、token、的区别。
介绍一下自己的优势。
判断 ipV4 的合法性。(代码实操)
- 示例代码:
def is_valid_ipv4(ip):
# 将输入的IP地址字符串按照点`.`分割成四部分
parts = ip.split(".")
# 检查分割后的结果是否正好有四部分,因为IPv4地址必须有四组数字
if len(parts) != 4:
return False
# 遍历这四部分
for part in parts:
# 检查每部分是否都是数字
if not part.isdigit():
return False
# 将每部分转换为整数,并检查是否在0到255的范围内
if not 0 <= int(part) <= 255:
return False
# 如果所有检查都通过,说明IP地址是有效的
return True
接下来是两个测试用例:
print(is_valid_ipv4("192.168.1.1"))
:这个测试用例检查字符串"192.168.1.1"
是否是一个有效的 IPv4 地址。每组数字都在 0 到 255 之间,所以这个函数应该返回True
。
print(is_valid_ipv4("256.100.50.25"))
:这个测试用例检查字符串"256.100.50.25"
是否是一个有效的 IPv4 地址。第一组数字256
超出了 0 到 255 的范围,所以这个函数应该返回False
。
这个函数通过简单的字符串操作和条件检查来验证 IPv4 地址的有效性,但它不会处理一些边缘情况,比如前导零(例如"01.0.0.0"
)或者空字符串(例如".1.2.3"
)。对于更健壮的 IPv4 地址验证,可能需要更复杂的正则表达式或其他方法。
搜了下 有两种回答
1 GET 和 POST 最本质的区别是 “约定和规范” 上的区别,在规范中,定义 GET 请求是用来获取资源的,也就是进行查询操作的,而 POST 请求是用来传输实体对象的,因此会使用 POST 来进行添加、修改和删除等操作
2 GET 产生一个 TCP 数据包;POST 产生两个 TCP 数据包。
对于 GET 方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应 200(返回数据);
而对于 POST,浏览器先发送 header,服务器响应 100 continue,浏览器再发送 data,服务器响应 200 ok(返回数据)。
RESTful API 风格都出来多久了,咋还有人面试问 get/post 的区别 emm
get 和 post “根本” 上有区别吗?我觉得没有
你的第二种说法是错误的,存在误导性,并不是所有的 POST 请求都会经历 100 continue 响应,它只会在请求包含较大的 body 且请求 head 中包含 Expect: 100-continue 时才会触发,post 请求可能会有多个 TCP 数据包传输,特别是当数据较大时,并非特地两个。对于大多数普通的 post 请求,没有这个过程,浏览器会直接发送 header 和 body,然后服务器响应 200 OK。但是就像我上面说的,这些只是浏览器或者开发者对请求的行为做了定义并做了不同的解释和规范,本质上还是 http 协议
像这类问题其实都是上一批互联网人喜欢问的,在大模型搜索更便捷的年代,这类问题其实很鸡肋,都可以网上查得到的,不知道问的意义是什么,所以我现在面试不会问这种
都没啥意义的面试问题
挺好奇用 python 操作 excel、判断 ipv4 这种允许使用互联网搜索吗..... ,
操作 excel 这种如果不是经常用, 库和方法都不一定记得起来, 如果简单用用就那么一回事.
判断 ipv4 合法, 题目会给出规则吗, 毕竟 ABCD 类地址还真不记得了
大佬喜欢问些啥, 很多技能只是隔着一层窗户纸, 通过大模型了解到后很容易简单用起来. 另外面试考察的知识点如果不常用就容易丢分, 感觉很亏
我比较随意耶,对着简历去询问,目的是了解该人的工作观、处世观、性格是否好相处、他有什么想法、做过什么具体的项目。
大部分都是紧贴项目业务的问题,能干活的,一般都会对项目流程的启动、规划、执行、收尾、总结和反馈 的详细细节描述得比较好。像上面的 IPV4 问题,你不知道怎么当场写其实无所谓,你可以说下你是怎么在不知道怎么写的情况下去完成这件事的,让我知道你有干活的能力,然后你也可以现场查网络去实现,实现完后我会再让你描述下怎么去测试你写的代码等。至于手撕算法题这种的,我觉得得看价格,工资低还让你手撕算法题的,一般就是遇到装逼到极致的面试官了,95% 或者 99% 的测试工作根本就不需要有去刷算法题的能力,就算是大厂的员工,基本也是贴着业务需求测试功能的
我的理念是招一个让自己和团队都舒服的人,其实我也不太懂那些面试时对候选人全方位严格的面试官,仿佛公司是他开的,而且其实这些问题都会有人去背答案的,背答案和直接网上查询有啥区别?,可能部分人喜欢这类的服从性测试。
剩下的就看 HR 的筛选了,所以一般基础学历和年限得通过
喜欢问些 :
我就不问这些,毫无影响,基本上只能恶心人,我通常更喜欢思路好沟通好协调能力抢的候选人,技术差不多就行,毕竟又不是真的造飞机
不看面试题,我都快忘了我是个测试