美团测开岗 【一面总结】
目录
1.实习经历
2.你知道有哪些测试的分类
3.测试一个水杯
4.手撕代码
5.MySql代码
6.说说继承
7.用final修饰的类可以被继承吗
8.继承与实现接口的区别
9.String、StringBuffer、StringBuilder的区别
10.HashMap插入一个元素的底层实现
1.实习经历
开始问了一些上一家公司的实习的情况,包括做的项目,实习期间遇到的问题(测试问题,沟通问题)怎么解决的。
ps:这部分我一般是预先准备好问题,这样面试的时候就可以快速说出来,一般只要简历上写了项目经历或实习经历必问。
2.你知道有哪些测试的分类
1.按测试对象划分
- 界面测试
- 可靠性测试(是指系统正常运行的能力或者程度,一般用正常向用户提供软件服务
的时间占总时间的百分比表示:可靠性 = 正常运行时间/(正常运行时间+非正常运行时间)*100%)- 容错性测试(指系统能够处理异常,用户的错误操作而不至于系统崩溃)
- 兼容性测试(系统自身版本的兼容;应用环境的兼容性,比如操作系统,应用平台,浏览器的兼容)
- 易用性测试(用户体验,让用户获得舒适,易用的体验)
- 安装卸载测试(软件不同的安装卸载方式、安装或者卸载过程中是否可以手动暂停,或者取消、安装空不足的时候系统是否有提示)
- 安全测试(信息安全)
- 性能测试(指标:用户响时间,事务平均响应时间(TPS),吞吐率,每秒点击
次数,内存和CPU使用率等)2.按是否查看代码划分
- 黑盒测试
- 白盒测试
- 灰盒测试
3.按开发阶段划分
- 单元测试(单元测试是对软件组成单元进行测试,检验软件基本组成单位的正确性。)
- 集成测试(也称联调,检查软件单元之间的接口是否正确。)
- 系统测试(对软件的功能、性能整体进行测试)
- 回归测试(指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。属于系统测试)
- 冒烟测试(确认软件主要功能和核心流程正常,属于系统测试,黑盒)
- 验收测试(一般由产品经理或用户进行)
4.按测试实施组织
- α测试(公司内部除测试人员和开发人员)
- β测试(由用户进行)
3.测试一个水杯
功能:
- 是否会漏水(超过/没超过安全线)
- 水杯的实际容量与说明书上写的是否一样
- 水杯上的刻度是否准确
- 拧紧盖子是否漏水
- 是否隔热
- 保温杯(是否保温,保温时间是多久)
界面:
- 外观、大小、材质是否与说明书一致
- 图案是否容易掉落(遇水,高温,低温,摩擦)
易用性:
- 使用简单,容易操作
- 倒水方便
- 喝水方便
- 防滑(沾水是否防滑,沾上其他液体是否防滑)
兼容性:
- 能够兼容果汁……不同液体
性能:
- 耐热性
- 耐寒性
- 长时间放置是否漏水
- 使用寿命多久
- 耐摔性
- 杯子上放置重物达到什么程度会被损坏,抗压性
安全性:
- 杯子的材质是否安全
- 高温会不会释放毒性
- 低温会不会释放毒性
4.手撕代码
给定一个整数数组
nums
和一个整数目标值target
,请你在该数组中找出 和为目标值target
的那 两个 整数,并返回它们的数组下标。思路:①暴力,两个for循环
②排序,左右指针
③用HashMap,key来存元素,value来存下标
5.MySql代码
1.建一张表
2.查询含有‘我’字的name
3.再建一张表
4.联合查询
6.说说继承
继承可以降低代码编写的冗余度,提高编程的效率。通过继承,子类获得了父类的成员变量和方法。
子类拥有父类非private的属性、方法;
子类可以拥有自己的属性和方法,即子类可以就自己的功能需求对父类进行扩展;
子类可以用自己的方式实现父类的方法;
7.用final修饰的类可以被继承吗
不可以,final代表最终的,
final修饰一个类,这个类不能被继承
final修饰一个方法,这个方法不能被重写
final修饰一个变量,表示这个变量是不可变的
8.继承与实现接口的区别
- 不同的关键字,即实现接口(implements),继承(extends);
- 在面向对象编程的时候只能是单继承,但是实现接口可以有多个,简单点说,就是实现接口可以有好多个,但是继承的中父类只能只有一个,因为父亲只有一个;
- 在接口中只能定义全局变量和抽象方法,而在继承中可以定义属性方法,变量,常量的等等…;
- 当某个接口被实现的时候,在类中一定要用接口中的抽象方法,而继承中子类能随意调用父类的属性和方法;
- 当你需要去调用接口时,实现接口一定要实现(重写)接口中所有的抽象方法,即使在抽象方法你并不需要去实现什么样的功能,但这个步骤是一定不能少的;但是在继承中并不是这样的,当子类需要实现的功能和父类中的实现功能毫无差别的时候,则父类中的实现方法可写可不写,但是当你想要在你的子类中去实现某些特有的功能时,这时候需要将父类中的实现方法去重写,以实现在子类中所需要的特定功能。
9.String、StringBuffer、StringBuilder的区别
- String底层是被final修饰的,所以字符串的值创建之后就不可以被修改,具有不可变性,如果要修改,会重新开辟内存空间来存储修改之后的对象;而StringBuffer和StringBuilder对象的值是可以被修改的;
- StringBuffer几乎所有的方法都使用synchronized实现了同步,线程比较安全,在多线程系统中可以保证数据同步,但是效率比较低;而StringBuilder 没有实现同步,线程不安全,在多线程系统中不能使用 StringBuilder,但是效率比较高。
10.HashMap插入一个元素的底层实现
HashMap底层实现是通过哈希算法来定位元素的位置,将键值对存储在对应位置的链表或红黑树中。具体而言,当插入一个元素时,先根据键的哈希值计算出在数组中的位置,如果该位置为空,则直接插入;如果不为空,则遍历对应位置的链表或红黑树,查找是否已有相同键的元素,有则更新其值,没有则插入新节点。