米哈游测开岗 【一面总结】

本文涵盖了软件测试中的黑盒与白盒测试概念及其区别,下单功能的测试要点,GET和POST请求的不同,以及一次GET请求的数据包数量。还讨论了常用的Linux命令,进程与线程的对比,数据库查询的去重方法,MySQL的表连接及索引原理。此外,涉及了会话管理中的Cookie和Session,接口问题的排查步骤,Java的基本数据类型,多线程实现,Selenium中的等待机制,以及代码问题示例——删除字符串空格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.黑盒测试与白盒测试的区别

2.测试一个下单功能 

3.get与post的区别 

4.一次get请求产生几个数据包 

5.常用的linux命令

 6.进程与线程的区别

7.数据库查询如何去重

 8.MySql怎么连接两张表,有什么区别

9.说说索引 

10.cookie 和 session 的区别 (会话管理)

11.工作中给你一个接口有问题,怎么排查 

12.Java的基本数据类型有哪些 

13.如何实现多线程

14.selenium显示等待与隐式等待 

 15.手撕代码


1.黑盒测试与白盒测试的区别

黑盒测试:

黑盒测试就是不关心软件内部代码的实现,不关心代码的逻辑结构,只关心输入输出是否符合预期。

优点:

  1. 从用户的角度去设计测试用例
  2. 测试用例是基于软件需求文档,不容易遗漏软件需求文档中需要测试的功能。

缺点:

  1. 不可能覆盖所有的代码

用到的测试方法:等价类、边界值、场景法、错误猜测法等

白盒测试:

白盒测试是针对代码进行的测试,分析测试代码的逻辑结构,实现的功能看是否符合用户的需求,针对程序的逻辑结构来设计测试用例。

用到的测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖

2.测试一个下单功能 

功能测试

测试下单流程是否正常,包括收货地址、支付方式等;
测试订单状态是否正确更新,包括未支付、已支付、已发货、已收货等。

接口测试

测试下单接口是否可以正确处理下单请求;
测试下单接口是否可以正确验证用户输入的信息;
测试下单接口返回的状态码和响应信息是否正确;
测试支付接口是否可以正确处理支付请求;
测试支付接口返回的状态码和响应信息是否正确。

3.get与post的区别 

  • get是从服务器获取资源,post是向服务器提交资源
  • get请求的参数是放在url里面的,post请求的参数是在请求体里面
  • get传输的数据受到URL长度的限制(1024个字节),post可以传输大量数据
  • 使用get时参数会显示在地址栏上,如果这些数据不敏感可以用get,如果是敏感数据,还是用post

4.一次get请求产生几个数据包 

get请求产生一个TCP数据包;post请求产生两个TCP数据包(get请求,浏览器会把http header和data一并发送出去,服务器响应200返回数据;post请求,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 返回数据)

5.常用的linux命令

  •  ls  列出目录
  • pwd  显示当前所在目录
  • cd  打开一个目录
  • cat  查看文件内容
  • mkdir  创建文件夹
  • rm  删除文件或目录
  • cp  复制文件或目录
  • mv  将文件重命名或将其移至一个新目录中
  • head  显示指定文件开头内容
  • tail  显示指定文件末尾内容
  • vim  文本编辑
  • grep  查找文件中是否包含指定字符串
  • ps  查看当前进程

 6.进程与线程的区别

  1. 进程是系统分配资源的最小单位,线程是系统调度的最小单位
  2. 一个进程包含一个或多个线程
  3. 多个进程间的内存是独立的,一个进程中的多个线程拥有共享内存
  4. 进程挂了,不会影响其他进程,线程挂了会影响整个进程

7.数据库查询如何去重

  1.  使用distinct关键字(SELECT DISTINCT name FROM users)

  2. 使用group by分组(SELECT name FROM users GROUP BY name)

 8.MySql怎么连接两张表,有什么区别

  1. A inner join B  取交集
  2. A left join B  取A全部,B没有为null
  3. A right join B 取B全部,A没有为null
  4. A outer join B 取并集,彼此没有为null

9.说说索引 

索引的分类:主键索引、单值索引、唯一索引、复合索引

MySql索引底层数据结构:B+Tree

在放入数据的时候他会基于数据进行排序,排序后以指针的形式将数据连接起来,同时MySql为了进一步优化,以B+Tree的形式进行存储,就是以页的形式存储,一页的大小默认是16KB,对于一个3层的B+Tree大概能存9亿数据。

聚簇索引:将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据。

非聚簇索引:将数据与索引分开存储,索引结构的叶子节点指向了数据对应的位置

在使用非聚簇索引时会进行2次查找,先找到数据的id,然后再通过聚簇索引找到对应的行数据。

10.cookie 和 session 的区别 (会话管理)

  1. cookie数据存放在客户的浏览器上,session数据存放在服务器上
  2. cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
  3. session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
  4. 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

会话管理:

11.工作中给你一个接口有问题,怎么排查 

1.先检查接口ip是否正确,可以通过在本机ping 接口的ip,检查网络是否通畅

2. 再检查接口的端口号是否正确,可以通过在本机telnet接口的ip和端口号,检查端口是否能连通

3.检查项目是否启动或者部署成功,可以找研发确认,或者自己登录到服务器上,通过ps命令检查项目的进程是否存在,然后用tail命令查看部署日志

4.检查服务器防火墙是否关闭,如果因为安全或者权限问题不能关闭,需要找运维进行策略配置,开放对应的ip和端口号

5.检查你的客户端(浏览器/测试工具),是否设置了网络代理,网络代理可能会造成请求失败

6.检查操作系统的host文件,是否绑定了一个错误的ip映射

原文链接:https://blog.youkuaiyun.com/Yanan990830/article/details/123237930

12.Java的基本数据类型有哪些 

byte、short、int、long、float、double、boolean、char

13.如何实现多线程

  1. 继承Thread类,重写run方法
  2. 实现Runnable接口,重写run方法
  3. 实现Callable接口,重写call方法

14.selenium显示等待与隐式等待 

隐式等待:driver.implicitly_wait(timeout)

定位元素时,如果能定位到元素则直接返回该元素,不触发等待; 如果不能定位到该元 素,则间隔一段时间后再去定位元素; 如果在达到最大时长时还没有找到指定元素,则抛出元素 不存在的异常 NoSuchElementException 。

区别:

1、显示等待:针对单个元素生效

 2、隐式等待:针对全局元素生效

 15.手撕代码 

代码问的是:给定一个字符串删除字符串里的空格,进阶是只删除前后的空格,不删除中间的空格。

思路:删掉前面的空格,然后把字符串颠倒过来,再删除后面空格,然后再次颠倒字符串。

### 米哈位的常见面试问题和准备资料 #### 常见面试问题 米哈面试通常会关注候选人的基础知识和技术能力。常见的面试问题包括但不限于: - **基础理论** - 解释什么是单元试、集成试以及系统试的区别[^2]。 - **实际案例分析** - 给定一个具体的戏场景,描述如何设计测试用例来验证特定功能的行为是否符合预期。 - **工具使用经验** - 提问关于自动化试框架的选择标准及其优缺点评价。 - **项目经历探讨** - 对于简历中提及的所有个人参与过的项目细节进行深入讨论,特别是那些与应聘职位相关的部分。 #### 准备材料建议 为了更好地应对上述类型的提问,在准备阶段应该着重考虑以下几个方: - **扎实掌握计算机科学的基础概念**:这不仅限于编程语言本身,还包括数据结构、算法效率等方的知识点复习。 - **深入了解目标公司产品特性**:研究米哈旗下主要产品的特点和发展历程,思考这些因素会对产品质量保障工作带来怎样的挑战。 - **积累丰富的实践经验**:无论是通过实习机会还是源贡献的方式获取更多实战操作的机会都是非常有益处的做法。 - **熟练运用各类试技术和方法论**:除了传统的黑盒白盒试外,还应学习探索性试等新型模式的应用技巧[^3]。 ```python # 示例代码展示简单的冒烟试函数实现 def smoke_test_login_functionality(username, password): try: login_result = attempt_to_log_in_with_credentials(username, password) if not isinstance(login_result, bool): raise ValueError("Login function did not return a boolean value.") expected_behavior = True # Assuming successful login is the desired outcome here. assert login_result == expected_behavior, f"Expected {expected_behavior}, but got {login_result}." print("Smoke test passed!") except Exception as e: print(f"An error occurred during testing: {str(e)}") smoke_test_login_functionality('test_user', 'password123') ```
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值