2018-9-27 招银信用卡测试岗面经
2018-10-17 本文已影响0人
囊萤映雪的萤
招银信用卡测试岗
main主函数运行之前先会干什么
- 全局对象的构造函数会在main 函数之前执行,
全局对象的析构函数会在main函数之后执行;
用atexit注册的函数也会在main之后执行。 - 一些全局变量、对象和静态变量、对象的空间分配和赋初值就是在执行main函数之前,而main函数执行完后,还要去执行一些诸如释放空间、释放资源使用权等操作
- 进程启动后,要执行一些初始化代码(如设置环境变量等),然后跳转到main执行。全局对象的构造也在main之前。
https://blog.csdn.net/huang_xw/article/details/8542105
内存分区
https://www.cnblogs.com/madonion/articles/2269195.html
分为五大块:栈,堆,全局区,常量区和代码区
- 栈区
由系统进行内存的管理,主要存放函数的参数以及局部变量。栈区由系统进行内存管理,在函数完成执行,系统自行释放栈区内存,不需要用户管理。整个程序的栈区的大小可以在编译器中由用户自行设定,默认的栈区大小为3M。 - 全局/静态区
初始化的全局变量和静态变量是在一起的。未初始化的全局变量和静态变量是在相邻的空间中。全局变量和静态全局变量的存储方式是一致的,但是其区别在于,全局变量在整个源代码中都可以使用,而静态全局变量只能在当前文件中有效。比如我们的一个程序有5个文件,那么某个文件中申请了静态全局变量,这个静态全局变量只能在当前文件中使用,其他四个文件均不可以使用。而某个文件中申请了全局变量,那么其他四个文件中都可以使用该全局变量(只需要通过关键字extern申明一下就可以使用了)。事实上static改变了变量的作用范围。 - 字符串常量区
存放字符串常量,程序结束后,由系统进行释放。比如我们定义const char * p = “Hello World”; 这里的“Hello World”就是在字符串常量中,最终系统会自动释放。 - 代码区:存放程序体的二进制代码。比如我们写的函数,都是在代码区的。
- 堆区:由用户手动申请,手动释放。在C中使用malloc,在C++中使用new(当然C++中也可以使用malloc)。
new操作符本质上还是使用了malloc进行内存的申请
1)malloc是C语言中的函数,而new是C++中的操作符。
2)malloc申请之后返回的类型是void*,而new返回的指针带有类型。
3)malloc只负责内存的分配而不会调用类的构造函数,而new不仅会分配内存,而且会自动调用类的构造函数。
数据库索引分类
https://www.cnblogs.com/newpanderking/p/3781043.html
根据索引的顺序与数据表的物理顺序是否相同分为聚集索引和非聚集索引。
- 聚集索引:对表中的数据行按指定键值(即索引列值)进行排序后再重新存储到磁盘上,使数据表的物理顺序与索引一致。每个表只能建立一个聚集索引
优点:检索速度比非聚集索引快。
缺点:重组了表的物理顺序并且在建立聚集索引时需要足够的工作空间。 - 非聚集索引:具有完全独立于数据行的结构,不需要将数据表中的数据行按索引值重新排序。非聚集索引表中存储了组成非聚集索引的键值和行定位器,行定位器是指向数据行的指针,该数据行具有与索引键值相同的字段值。
优点:不需要改变数据行的存储顺序,而且可以建立多个非聚集索引。
如果一个表中既要建立聚集索引,又要建立非聚集索引,应该先创建聚集索引,然后创建非聚集索引。
一般需要建立索引的情况:
- 主键和外键
- 检索频繁的字段
- 经常需要排序的字段
死锁
测试方法有哪些
https://www.cnblogs.com/vigo01/p/7554603.html
补充一个对测试介绍很全面的:
https://blog.csdn.net/brave_insist/article/details/72169396
快排,冒泡
以下给出常见的排序算法:
#include <iostream>
using namespace std;
void quick_sort(int a[], int left, int right) {
if (left >= right) return;
int i = left;
int j = right;
int tmp = a[left];
while (i < j) {
while (a[j] >= tmp && i<j) {
j--;
}
while (a[i] <= tmp && i < j) {
i++;
}
if (i < j) {
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
a[left] = a[i];
a[i] = tmp;
quick_sort(a, left, i - 1);
quick_sort(a, i + 1, right);
return;
}
void insert_sort(int a[], int n) {
int i, j, tmp;
for (i = 1; i < n; i++) {
tmp = a[i];
for (j = i - 1; j >= 0 && a[j] > tmp; j--) {
a[j + 1] = a[j];
}
a[j + 1] = tmp;
}
}
void bubble_sort(int a[], int len) {
int tmp{};
bool flag{};
for (int i = 0; i < len; i++) {
flag = 0;
for (int j = len - 1; j >= i; j--) {
if (a[j] < a[j - 1]) {
flag = 1;
tmp = a[j];
a[j] = a[j - 1];
a[j - 1] = tmp;
}
}
if (!flag) return;
}
}
void select_sort(int a[], int len) {
for (int i = 0; i < len; i++) {
int k = i;
int tmp = a[i];
for (int j = i+1; j < len; j++) {
if (a[j] < tmp) {
tmp = a[j];
k = j;
}
}
a[k] = a[i];
a[i] = tmp;
}
}
int main() {
int arr[10] = {54,38,96,15,23,72,60,45,83,64};
//快速排序
//quick_sort(arr, 0, 9);
//直接插入排序
//insert_sort(arr, 10);
//冒泡排序
//bubble_sort(arr, 10);
//选择排序
select_sort(arr, 10);
for (int i = 0; i < 10; i++) {
cout << arr[i] << ' ';
}
system("pause");
return 0;
}
设计测试出厂前的杯子质量是否合格
https://www.cnblogs.com/TankXiao/p/2381284.html
https://blog.csdn.net/qq_30353203/article/details/49252149?utm_source=blogxgwz0
- 功能测试(Function test)
能否装水,
除了装水, 能否装其他液体。比如可乐,酒精
能装多少ML的水
杯子是否有刻度表
杯子能否泡茶,跑咖啡
杯子是否能放冰箱,做冰块
杯子的材质是什么(玻璃,塑料,黄金做的) - 界面测试(UI Test)
外观好不好看。
什么颜色
杯子的形状是怎么样的。
杯子的重量是多少
杯子是否有异味
杯子的图案是否合理 - 性能测试(performance test)
能否装100度的开水 (泡茶)
能否装0度冰水
装满水,放几天后,是否会漏水
杯子内壁上的涂料是否容易脱落。
杯子上的颜色是否容易褪色或者脱落 - 安全性测试(Security test)
制作杯子的材料,是否有毒
放微波炉里转的时候,是否会爆炸, 或者杯子是否会熔化。
从桌子上掉到水泥地上是否会摔碎。
杯子是否容易长细菌
杯子是否有缺口,会划坏嘴巴
杯子内壁上的材料,是否会溶解到水中
杯子破碎后,是否会对使用者造成伤害 - 压力测试(Pressure Test)
双手握紧水杯,是否会破裂
在物品的一定挤压下是否破裂、变形
在一定高度摔下来是否会摔坏 - 可用性测试(Usability Test)
杯子是否容易烫手
杯子是否好端,好拿
杯子的水是否容易喝到
杯子是否有防滑措施
测试需要的能力
https://blog.csdn.net/brave_insist/article/details/72169396
- a.沟通能力 b.技术能力 c.细心、信心、耐心
- 软件测试员自身素质
a.应对软件测试感兴趣和对自己有自信。
b.善于怀疑,世界上没有绝对正确的,总有错误的地方,具有叛逆心理,别人认为不可能发生的事,我却认为可能发生。别人认为是对的,我却认为不是对的。
c.打破砂锅问到底的精神,对于只出现过一次的bug,一定找出原因,不解决誓不罢休。
d.保持一个良好的心情,否则可能无法把测试做好。不要把生活中的不愉快的情绪带到工作中来。
e.做测试时要细心,不是所有的bug都能很容易的找出,一定要细心才能找出这些bug。
f.灵活一些,聪明一点,多制造一些容易产生bug的例子。
g.在有条件的情况下,多和客户沟通,他们身上有你所需要的。 - 其他
a.设身处地为客户着想,从他们的角度去测试系统。
b.不要让程序员,以“这种情况不可能发生”这句话说服你,相反,你应该去说服他,告诉他在客户心里,并不是这样的。
c.考虑问题要全面,结合客户的需求、业务的流程、和系统的构架,等多方面考虑问题。
d.提出问题不要复杂化,这一点和前面的有点矛盾,如果你是一新手,暂时不要管这一点,因为最终将有你的小组成员讨论解决。
e.追求完美,对于新测试员来说,努力地追求完美,这对你很好,尽管有些事无法做到,但你应该去尝试。
f.能和开发小组很好地沟通是关键。