招银测开面经

目录

测试

1.测试的一些方法,因果图

2.测试的流程

3.测试主要测试哪些方面?

4.编写测试用例包括哪几个条目

5.兼容性测试是什么?

6.测试微信登陆功能

7.怎样测试用户体验?

8.测试一个刷脸支付的平板,你认为应该测试哪些方面?

9.APP兼容性怎么测试?

10.测试商家扫客户二维码(提示二维码在app上)

11.测试实例(登录APP,用手机号得到验证码的方式登录)

12.ATM用户插卡和取钱功能的测试

13. 写代码,输入年月日,输出是一年中第几天,然后用黑盒和白盒测试分别测试这个程序

14.App买电影票

15.POS机  如何测试

16.测试支付宝的转账中的“转账到银行卡”的功能

C++

0.数组和指针的区别

1.指针和引用的区别

2.内存分区

3.静态(成员)函数的作用

4.静态变量,什么时候会用到

5.构造函数和析构函数

6.map,set的区别,用什么实现的,然后追问二叉树,平衡二叉树。。。

7. C++的三个基本特征以及每个的具体解释

8.循环和递归的区别,优缺点

9.说一下宏

10.重写和重载的区别

11.深拷贝和浅拷贝

12.如何实例化类里面的对象

13.虚函数

14.时间复杂度,如果一个算法的时间复杂度是O(1)代表的含义是什么

15.头文件重复的包含和重复的引用

16.抽象类与接口的区别?

17指针数组和数组指针的区别

18.class和struct的区别

19.int和float的字节数,如果在不同的机型上有没有区别

20.类里有一个int有一个virtual,占多少字节。各在什么位置。

21.list和vector区别

22.内存溢出和内存泄漏

23.空指针和野指针的区别

24.new和malloc区别

25.Static

26.DFS、BFS

数据库

1.数据库给一个表把年龄23-30之间的人的总数查出来

2.group by 和having

3.事务是什么?事务的特性、主要作用;一致性是啥,隔离级别,分别解决了什么问题?默认是什么级别?序列化是啥,可重复度读是啥。。。

4.索引是什么、结构、原理以及优缺点;为什么使用B+树;什么情况下不建议使用索引;在一列添加索引,什么情况下索引什么并没有生效,如何改进;

5.死锁是什么?如何避免?乐观锁悲观锁

6.drop、delete以及truncate的区别

7.数据库的范式

8.数据库的优化的思路

9.事务一般在哪个层进行控制?为什么?

10. Mysql Oracle是什么类型的数据库 还有什么其他类型的数据库? Mysql的优势是什么?

11.删除表和删除字段分别用什么关键词

12.怎么把所有重复的字段查询出来

13.怎么修改一个表的某个字段长度

14.数据库左连接、右连接是什么,区别?内连接和外连接区别

15.给一个成绩表,查找一个班级里平均分大于90的学生姓名

16.select * 为什么不好呢?

17.数据库建表存储引擎怎么选(innodb,myisam的区别)?同一条SQL语句在InnoDB和MyISAM下哪个执行快?

18.建立索引和主键怎么考虑

19.数据库的完整性和一致性可以使用什么方法保证

20.收回用户权限的命令

21.五张关联表 如何快速查询 什么方法可以提升查询效率

22.给你一个5亿行的数据,如何设计表?

23.查找学生信息表里姓名第一个字为‘王’的学生姓名

24.统计个数

25.视图的优缺点

26.select语句的执行逻辑

27.存储过程

28.输入中文 数据库查询出来是乱码如何解决 例如GBK如何转UTF-8

计算机网络

1.TCP哪一层,FTP呢,http包含哪些部分

2.get和post的区别

3.IOS七层模型讲一下

4.TCP的滑动窗口、拥塞控制

5. HTTP协议包括哪些请求

6.TCP和UDP的区别?

7.输入一个URL后发生了什么?

8.常用协议端口 80用于什么协议

9.三次握手过程?

10.Tcp协议是什么?TCP头部和数据部分是不是等长的?

11.发邮件用什么协议,tcp特性

Linux

1.常用的一些linux的命令,ll和ls的区别

数据结构

1.堆和栈的区别?

 2.二叉树的使用场景

3. 快速排序、堆排序原理、冒泡排序,最好和最坏的情况下时间复杂度是多少

4. 数组和链表的区别

5. 双向链表优点

6.链表、二叉树、哈希的查找复杂度

操作系统

1.为什么引用多进程

2. 进程和线程分别是什么?进程和线程的区别?进程间通信的有哪几种方式

3.进程互斥和进程同步

场景题

2.怎么看待测试开发,测试和开发结合起来的意义?

代码

1.递归写n!

2.leetcode283----移动 0 (简单题)

3.统计字符串字符再按字典顺序输出,然后一直问还有没有改进空间

4.给一个偶数,求和为该偶数且差值最小的质数对

5.翻转链表(剑指offer24)

6.两个队列实现栈,两个栈实现队列

7.给一个txt文件,输出文件中每个单词的出现次数

智力题

1.一元钱买一瓶水,2个盖子换一瓶水。20块能买几瓶水?


测试

1.测试的一些方法,因果图

按测试对象

(1)白盒测试

(2)黑盒测试

(3)灰盒测试

按测试对象是否执行

(1)静态测试

(2)动态测试

按测试手段

(1)手工测试

(2)自动化测试

 

2.测试的流程

需求分析

(1)梳理清楚需要设计的点是什么

(2)需求来源:需求规格说明书、API文档、竞品分析、个人经验

设计用例

评审用例

配置环境

执行用例

(1)执行用例前会做一个冒烟测试:核心是快速的对当前软件的核心功能进行验证。若有问题,将此版本回退给开发

回归测试及缺陷跟踪

(1)回归测试:指的是当我们将某个缺陷提交给开发,修复完成之后,需要测试人员再次对其进行测试

(2)缺陷跟踪:当测试人员发现某个缺陷之后需要一直对其进行状态的跟踪

输出测试报告

测试过程中产生的数据进行可视化输出

测试结束

产生的文档进行整理归档

 

3.测试主要测试哪些方面?

【功能靠用,效率可以】

功能性、可靠性、易用性、效率性、可维护性、可移植性

 

4.编写测试用例包括哪几个条目

(1)标题或者描述

(2)前置条件,要执行这个测试所需要满足的条件

(3)用例编号

(4)执行步骤

(5)预期结果

(6)实际结果,这个是每次测试用例执行完后需要填写的

(7)用例执行日期

(8)用例执行者(如果是一个人测试的话,这个字段就是所有用例所共有的)

(9)测试环境:包括软硬件环境,配置信息等,但因为我每次测试都在同样环境中执行不止一个用例,所以测试环境是每次执行的测试用例所共有的信息.

 

5.兼容性测试是什么?

软件兼容性测试是指检查软件之间能否正确地进行交互和共享信息。

 

6.测试微信登陆功能

一、界面

1、登录界面是否清晰合理美观,无乱码(文字简洁、无错别字)

二、功能(主要采用等价类、边界值方法)

1、输入正确的用户名、密码,是否登录成功

2、输入错误的用户名或者密码,登录失败有没有提示(用户名或密码为空)

3、不同的登陆方式:手机号、微信号、扫码

4、记住用户名的功能

5、点击登陆页面中的注册、找回密码等是否能跳到正确的页面

6、大写键盘开启,是否提示

三、安全性

1、在登录页面,输入的密码是否隐藏显示

2、多次登录失败,系统会不会阻止后续的尝试以应对暴力破解

3、用户名、密码能否支持复制、粘贴

4、密码输入框内的密码是否都可以在页面源码模式下被查看

四、兼容性

1、不同平台下能否正常打开登录界面,界面正常

2、相同平台下的不同版本能否正常打开登录界面,界面正常

3、不同分辨率下显示是否正常

4、不同网络下显示是否正常

五、性能压力

1、打开登陆页面,需要多长时间

2、输入正确用户名、密码之后点击登录按钮,直到登录成功打开页面,需要多长时间(小于3秒)

3、多个用户同时进行登录操作,相应登录的时间是否会变长(小于5秒)

 

7.怎样测试用户体验?

(1)感官体验:呈现给用户视听上的体验,强调舒适性。

(2)交互体验:呈现给用户操作上的体验,强调易用/可用性。

(3)情感体验:呈现给用户心理上的体验,强调友好性。

(4)浏览体验:呈现给用户浏览上的体验,强调吸引性。

(5)信任体验:呈现给用户的信任体验,强调可靠性。

 

8.测试一个刷脸支付的平板,你认为应该测试哪些方面?

【功能靠用,效率可以】

功能性、可靠性、易用性、效率性、可维护性、可移植性

 

9.APP兼容性怎么测试?

(1)系统

a.安卓 不同版本

b. ios 不同版本

(2)分辨率

(3)网络

       a. wifi

        b. 4G

(4)其他

数据兼容性(不同版本间的数据兼容)
蓝牙设备兼容性测试 (如果是一款使用蓝牙的应用)
存储卡兼容性测试(比如文件管理器)
第三方软件兼容冲突(比如输入法冲突)

 

10.测试商家扫客户二维码(提示二维码在app)

用户角度:

功能性测试:

(1)用户能否成功生成用于支付的二维码

(2)二维码出现后屏幕能否变成增亮的模式,

(3)用户能否成功选取不同的付款方式,比如“花呗”、“账户余额”、“余额宝”、“银行账户”等。

(4)扫码完成后,用户能否收到支付成功的界面,并且界面能正确显示用户支付的金额,包括付款信息、是否使用优惠、折扣等。

界面测试:打开支付宝后,能否正确显示界面,二维码的界面是否正确,支付的每个步骤界面是否正确。

易用性测试:在整个用户支付的过程中,操作步骤是否简易方便。

兼容性:测试扫码支付功能,在不同手机品牌,不同操作系统下是否兼容。

安全测试:二维码如果超过安全时间后能否自动更新为新的二维码。测试整个支付流程的安全机制能否成功实现。

压力测试:持续的扫码,测试扫码支付功能在强压的状态下,工作状态如何。

网络测试:测试在不同网络环境下,不同网络信号强度的情况下,整个支付流程是否出现卡顿,卡顿的点容易出现在哪里。

 

商家角度:

功能性测试

(1)扫码后能否成功扫到用户手机中的二维码,

(2)扫码成功后能否收到钱,并且成功生成收款的界面。

(3)支付宝后台、商家后台、用户手机能否成功传输支付结果信息。

易用性测试:在不同光线,屏幕不同亮度的情况下,能否成功完成扫码收款的功能。

其他测试与用户测试差不多。

 

11.测试实例(登录APP,用手机号得到验证码的方式登录)

通过性测试

输入正确的手机号码,点击获取验证码,查看手机是否收到短信。收到短信后输入验证码,若为登录功能,还应检查是否进行页面跳转,是否正确进行登录,是否可操作登录后应操作的项,若功能为注册,则应查看是否注册成功,去数据库检查数据的正确性,若测试成功后进行非通过性测试

正确的手机号验证的规则为:13,14,15,17,18为开头的11位数字

为空测试

(1)不输入手机号,不输入验证码 直接点击登录或注册等功能点 ,提示不能为空

(2)不输入手机号,只输入验证码 直接点击登录或注册等功能点 ,提示不能为空 

(3)输入手机号码,不输入验证码 直接点击登录或注册等功能点  ,提示不能为空

输错手机号码错误测试

(1)输入汉字、小数,字符串,空格及组合在手机号码文本框中,提示手机号码不正确

(2)输入10位,12位数字进行登录,提示手机号码不正确,提示手机号码不正确

(3)输入11位非手机号码进行获取验证码,提示手机号码不正确

验证码

(1)输入错误的验证码,提示请输入正确的验证码

(2)输入多一位或少一位的验证码

(3)明确验证码的失效时长后,在时长之后输入验证码,提示该验证码已失效,请重新获取验证码

 

12.ATM用户插卡和取钱功能的测试

(1)成功取钱

(2)卡无效

(3)密码错误

(4)余额不足

(5)ATM机余额不足

(6)超过提款限额

 

13. 写代码,输入年月日,输出是一年中第几天,然后用黑盒和白盒测试分别测试这个程序

黑盒测试

年份                                                           预期结果

能被4整除,不能被100整除的年份        

能被4和100整除,不能被400整除

能被4、100、400整除的年份

偶数,不能被4整除

奇数年份

小于0的年份,月,天

不同的月份 1 2 12临界点

不同的日   1 28 29 30 31

白盒测试

(1)语句覆盖

(2)分支覆盖  闰年||平年

 

14.App买电影票

15.POS机  如何测试

16.测试支付宝的转账中的“转账到银行卡”的功能

 

C++

0.数组和指针的区别

(1)数组是用于存储多个相同数据类型的集合;指针相当于一个变量,存放的是其他变量在内存中的地址

(2)同类型指针变量可以相互赋值;数组不行

(3)数组在内存中连续存放;指针很灵活,可以指向任意类型的数据

(4)sizeof(数组名)=数组的大小;sizeof(指针),32位系统下=4

(5)数组传参时,会退化为指针

 

1.指针和引用的区别

(1)指针存储变量的地址,引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名

(2)指针可以为空;引用不可以为空,使用之前必须初始化

(3)指针的值在初始化后可以改变;引用不可以

(4)sizeof指针得到的是指针本身的大小;sizeof引用得到的是变量的大小

(5)指针可以多级;引用只有一级

 

2.内存分区

(1)代码区:二进制代码

(2)全局区:全局变量,静态变量,常量

(3)堆区:编译器自动分配和释放,存放函数的参数、局部变量。New分配的

(4)栈区:程序员分配和释放

(5)自由存储区:由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。

 

3.静态(成员)函数的作用

  (1) 不需要生成一个对象的实例就可以直接使用该函数

(2)提供一种方式访问静态成员变量

(3)避免使用全局函数,为函数设置一个类域的访问权限

 

4.静态变量,什么时候会用到

(1)变量所包含的对象体积较大,占用内存较多。

(2)变量所包含的对象生命周期较长。

(3)变量所包含的对象数据稳定。

(4)该类的对象实例有对该变量所包含的对象的共享需求。

 

5.构造函数和析构函数

构造函数用来初始化类对象的成员的,所以当创建类对象就会调用构造函数。特点:

(1)函数名和类名必须一样,没有返回值。

(2)当没有显式的定义构造函数时,系统会自己生成默认的构造函数。

(3)可以重载,不可以为虚函数。

析构函数用来释放对象使用的资源,并销毁非static成员。特点:

(1)函数名是在类名前加上~,无参数且无返回值。

(2)一个类只能有且有一个析构函数,如果没有显式的定义,系统会生成一个缺省的析构函数。

(3)析构函数不能重载。

 

6.map,set的区别,用什么实现的,然后追问二叉树,平衡二叉树。。。

map和set区别:

(1)map中的元素是key-value(关键字--值)对:关键字起到索引的作用,值则表示与索引相关联的数据;Set就是关键字的简单集合。

(2)set的迭代器是const的,不允许修改元素的值;map允许修改value,但不允许修改key。

(3)map支持下标操作,可以用key做下标,不建议使用;set不支持下标操作。

 

底层实现都是红黑树。

 

二叉树:每个节点最多含有两个子树的树结构。

平衡二叉树:任何节点的两个子树的高度最大差为1

红黑树:节点是红色或黑色;根节点、叶子节点是黑色;每个红色节点的两个子节点都是黑色

 

7. C++的三个基本特征以及每个的具体解释

封装:将对象的属性和行为封装起来,也就是将数据和基于数据的操作封装在一起,保护数据并隐蔽具体的细节,只保留有限的接口与外界联系

继承:是指可以让某个类型的对象获得另一个类型的对象的属性的方法。

       多态:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。

底层原理

第一:编译器在发现基类中有虚函数时,会自动为每个含有虚函数的类生成一份虚函数表,该表是一个一维数组,虚表里保存了虚函数的入口地址。

第二:编译器会在每个对象的前四个字节中保存一个虚表指针vptr,指向对象所属类的虚函数表。在程序运行时,根据对象的类型去初始化vptr,从而让vptr指向正确的虚函数表。

 

8.循环和递归的区别,优缺点

循环:通过设置初始值和终止条件,在一个范围内重复运算

递归:函数内部调用这个函数本身。

(2)优缺点

递归

优点:可读性好;

缺点:浪费空间,而且递归太深容易造成堆栈的溢出。

循环

优点:代码运行效率好,没有额外的空间开销;

缺点:代码不如递归简洁

 

9.说一下宏

C/C++中的宏定义是进行符号常量定义,宏定义会在预处理阶段将用define定义的内容对代码中相应的标识符进行替换。

使源代码更具有可读性,能在一定程度上提高程序的运行效率。

 

10.重写和重载的区别

重载:具有不同参数(参数的类型,个数&

  • 10
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值