10 点刚到, 先进行笔试, 笔试的题目很基础, 涉及到 Linux, 涉及到 oracle 数据库, 涉及编程基础, 涉及测试理论, 但是你读完题目和写完也要是花时间的. 我花了 40 分钟左右的时间才写完..
Linux 基础
1. 查看 a.txt 文件中 bbb 字符串
grep 'bbb' a.txt
2. 改变 a.txt 的所属者为 Lisa
chown Lisa:Lisa a.txt
chown Lisa a.txt [只让改所属者, 没让改所属组]
3. 查看 conrob 进程的命令
ps -ef | grep conrob
4.vi 命令下, 向上移动光标, 向下移动光标
上下左右 kjhl[这四个键盘很好记, 右手习惯的几个键, h 最左右所以向左, l 最右边, jk 是先下后上]
5. 将文件 a.txt 排序生成 b.txt
sort a.txt>b.txt
6. 不保存文件退出命令
末端模式下输入 q![Esc : q!]
7. 查找当前目录以及子目录下文件后缀是 xxx 的文件
find ./ -name *.xxx
8. 显示日期的命令
date
Oracle 基础
[oracle 数据库我好久没有遇到了, 查询 sql 根据 MySQL 和 sqlserver 写的, 也不敢太用别名, 怕错]
1. 给 a 表创建联合索引 name+bb+cc
create index ind_name on tablea(name,bb,cc)
2. 赋予用户 alex update delete a 表的权限
grant update,delete on tablea to alex
3. 查看 a 表中的所有记录且姓名不在 b 表中的
select * from tablea where name not in (select distinct name from tableb) [我想了想加了个 distinct 在 b 表中]
4. 查询 b 表中的唯一的卡号
select cardnum from tableb group by cardnum [起初不小心加了 distinct, 然后想想把它给划了]
5. 查询 b 表中币种是 RMB 且地区是深圳的贷款总和
select sum(amount) from tableb where city = 'shenzhen' and bizhong='RMB'
[起初没看到只要差 RMB, 还多此一举,
select bizhong, sum(amount) from where city = 'shenzhen' group by bizhong, 也不知道后来有没有多划掉]
6. 复制 b 表的结构到新表
create table tablec as select * from tableb where 1=2
[之前没印象, 用的 MySQL 格式 CREATE TABLE 新表 LIKE 旧表 ]
7. 查询 b 表中姓名和卡号, 要求同一个卡号既有人民币消费, 又有美金消费
select name, cardnum from tableb group by name, cardnum having count(*)>=2
[我做这样的题目有各种疑问, 比如消费金额为 0 的记录, 算不算? 虽然解决办法很简单, 加上一个 where amount> 0 即可,
但是 proc 测试多了, 一眼瞄过, 对各个字段就不免想多了,
我 10 点钟才到, 11 点半吃饭, 又怕做题太长, 最终影响人家 interviewer 的情绪, 也让我...]
8. 用一个 select 查询表表中姓名和卡号, 要求美金中显示 2 条消费最大的记录, rmb 中显示两条最大的记录
- select name , cardnum ,rownum from tableb where bizhong = 'dollor' and rownum<=2
- order by amount desc
- union all
- select name , cardnum ,rownum from tableb where bizhong = 'rmb' and rownum<=2
- order by amount desc
编程基础
1.java 中 == 和 equals 的区别
== 是表示值和内存地址完全一致
equals 判断值是否相等
2. 一个 java 中能有多个类吗? 为什么?
一个. java 源文件中可以有多个类吗?(内部类除外) 有什么条件?
可以的
但是只能有一个 public 类, 而且如果有 public 类的话, 这个文件的名字要和这个类的名字一样.
如果都没有 public 类, 名字可以不和这个类一样.
3. 将 x/y/z 从大到小输出
- int[] a ={
- x,y,z
- }
- for (int i=0;i<a.length()-1;i++){
- for (int j=0;j<a.length()-1;j++){
- if (a[j]<a[j+1])
- temp =a[j];
- a[j]=a[j+1];
- a[j+1] = temp;
- }
- }
自己写错了, 下面才是正确的.
- import org.testng.annotations.Test;
- import java.util.Arrays;
- public class TestSort {
- int a[] = {1, 2, 3, 4, 5, 6, 7};
- int temp;
- @Test(priority = 1, description = "利用 Arrays 中的 Sort 函数排序")
- public void ArraysSort() {
- Arrays.sort(a);
- for (int i = 0; i < a.length; i++) {
- System.out.println(a[i]);
- }
- }
- @Test(priority = 2, description = "冒泡排序")
- public void BuddleSort() {
- for (int i = 0; i < a.length - 1; i++) {
- for (int j = 0; j < a.length - 1 - i; j++) {
- int temp = a[j];
- a[j] = a[j + 1];
- a[j + 1] = temp;
- }
- }
- }
- }
4. python2.1 和 python3.1 的默认字符编码?
'ascii'
'utf-8'
猜也能猜到, 但我懒得写. python 的确不熟
5.python 中分割 aa_bb_cc,
- s1="aa_bb_cc"
- s1.split('_')
6. 如何用 python 将整型 1 输出为 0001
测试的基础
1. 软件测试的意义
2. bug 的生命周期
3. 常见的测试方法
4. 你常用的自动化测试工具?
接口用 Jmeter 和 httpClient
UI 用 selenium 和 macaca
5. 一个文本框, 输入 6 的字符, 要求输入的年份在 199001 到 204912 月, 要求前四位是年, 后两位是月, 请设计测试用例并说明
写完给 HR 打电话, 之后直接一面.
面试的问题
1. 讲一个具体的接口, 你是怎么测试的, 怎么实现自动化的?
针对 http 接口进行测试, 使用 Jmeter 工具实现.
Jmter 工具设计之初是用于做性能测试的, 它在实现对各种接口的调用方面已经做的比较成熟, 因此, 本次直接使用 Jmeter 工具来完成对 Http 接口的测试.
一, 开发接口测试案例的整体方案:
我们起初会得到一个 CR 文档, CR 文档里列出里客户此次的痛点和痒点, 还有 PM 列出的解决方案. 比如要开发什么接口, 以达到什么目的.
这种接口是一次性使用, 做活动用的, 还是日常使用等等的说明.
第一步: CR 文档下来之后, 我会分析出测试需求, 大概知道会怎么实现, 对对 CR 有疑问的地方, 做下标记; 等到下次全项目开会, 提出疑问, 确保测试, 开发和 PM 对需求的理解是一致的. 会议上也会阐述大概的实现方式, 涉及的表, 是否用触发器, 等等的问题. 会议之后可以拿到开发提供的接口说明文档;
第二步: 从接口说明文档中整理出接口测试案例, 里面要包括详细的入参和出参数据以及明确的格式和检查点
第三步: 和开发一起对接口测试案例进行评审.
第四步: 结合开发库, 准备接口测试案例中的入参数据和出参数据, 并整理成 CSV 格式的文件.
第五步: 结合接口测试案例文档和 CSV 格式的数据文档, 做接口测试案例的自动化案例开发.
对于大一点的公司, 用 Jmeter 编写自动化脚本, 真的很 low 吧. 我也觉得很 low, 但是不得不说完全够用, 还极其容易上手.
对数据处理灵活, 断言, 数据落地, 都可以查询和验证.
2. 端到端的测试你们做过吗?
3. 性能测试关注点是什么?
我们通常认为的规定的指标是:
服务器资源使用情况, 不管是中间件服务器, 还是 DB 服务器, 从内存, 到 CPU, 不超过 70%
从响应的结果来看, 错误率不超过 1%, 甚至要求错误率更低; 基本上实践当中, 不超过 0.1%;
平均响应时间不超过 3 秒, 视查询条件而定, 有的要求是不超过 2 秒;
90% 的响应时间不超过 3 秒.
你们不看 TPS 吗? TPS 知道吗?
也要看啊, 我还没讲完呢. 每秒中的处理请求的数量啊~~
TPS 是受木桶原理影响, 要看每一处的配置的.[后悔没多说点, 抬头对上 interviewer 的眼神, 这个话题就完了]
3. 扯闲话部分:
你们公司的开发测试的比例是怎样的? 我们是 4:1?
你们公司系统的中间件是什么?
性能测试中, 你有进行性能调优吗?
嗯, 验证过很多接口, 有的定量需求, 比如要求某个接口的 TPS 达到 500. 如果第一次性能测试, 能达到 500, 也就够了, 没有下文了; 但是这个是注册接口, 随着时间推移, DB 服务器资源 CPU 到内存都吃的越来越紧, 发现 TPS 下降了, 之后越来越低.
什么原因造成的?
DB 服务器的原因. 这个一个 nosql 数据库, 以前这个接口是能达到 500TPS 的, 但是随着微信绑定推出 unionid 后, 需要增加新的字段, 新的表; 而这种 DB 对查询条件需要加索引, 要不然不支持查询.
表中数据量越来越多, 又有很多字段添加了索引, 当数据量达到千万级别之后, 添加索引消耗 DB 的资源, 也明显感受到占用了时间. 导致接口查询慢, 新增也慢.
有别的调优吗?
还有发现, 若干个字段, 因为没有加索引, 导致查询接口 TPS 不高等问题;
项目中有用 hibernate 的, 有时候定位比较难, 因为 sql 都是 hibernate 拼接的.
4. 有没有自己创新什么工具, 用来提高效率的?
自己回答
5. oracle 中分页怎么实现的?
oracle 很久没用, 打错了, 我回答的是跟 MySQL 差不多吧, 用 limit 的?
用 limit?
后来发现用 rownum
6. selenium 在你们的测试过程中也用? 还用吗? 有没有什么问题? 浏览器兼容性问题能做到吗?
差不多就这么多了, 接下来到面试者问问题时间.
总体感觉就是, 自己就像一个 AI, 面试官问什么, 自己回答什么, 没有做必要的延伸, 没有引入自己的话题.
总体感觉就是面得不好.
我想说我也可以开发自动化测试平台, 只是还不太成熟. 因为都是一个人做, 时间和能力都有限, 不知道用什么技术, 架构, 要增加什么.
来源: https://www.cnblogs.com/qianjinyan/p/10335962.html