测试开发面试笔记(1)

自我介绍

自己发挥

找工作的原因

如果在职时间比较短,面试官会问离职的原因

Python相关

深拷贝和浅拷贝

拷贝顾名思义就是复制,拷贝分为深浅拷贝 深浅拷贝 使用内置函数:copy(浅拷贝)、deepcopy(深拷贝)。 拷贝:新开辟一段空间用来存储新的对象。 而深浅拷贝的区别在于:
浅拷贝:不拷贝子对象的内容,只是拷贝子对象的引用。
深拷贝:会连子对象的内存也全部拷贝一份,对子对象的修改不会影响源对象

  • 1.深拷贝和浅拷贝只针对像Object,Array这样的引用类型数据。
  • 2.浅拷贝是对对象引用地址进行拷贝,并没有开辟新的栈,也就是拷贝后的结果是两个对象指向同一个引用地址,修改其中一个对象的属性,则另一个对象的属性也会改变。
  • 3.深拷贝则是开启一个新的栈,两个对象对应两个不同的引用地址,修改一个对象的属性,不会改变另一个对象的属性。

Python中类的多继承

多继承

python中支持多继承,语法为:

 class 子类名(父类1, 父类2, ...):
        子类中的代码

如果继承了多个父类,且父类都有同名方法,则默认只执行第一个父类的

多继承的缺点

当类很多,继承复杂的情况下,继承路径太多,很难说清什么样的继承路径。Python语法是允许多继承,但Python代码是解释执行,只有执行到的时候,才发现错误。团队协作开发,如果引入多继承,那代码很有可能不可控。不管编程语言是否支持多继承,都应当避免多继承。Python的面向对象,我们看到的太灵活了,太开放了,所以要团队守规矩。

Java相关

Java 方法重写(Override)与重载(Overload)

重写(Override)

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,抛出 IOException 异常或者 IOException 的子类异常。 在面向对象原则里,重写意味着可以重写任何现有方法。

重载(Overload)

重载 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
最常用的地方就是构造器的重载。

构造函数

构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同来区分它们,即构造函数的重载。

  • 1、构造函数的特点:

构造函数的主要作用是完成对象的初始化工作,(如果写的类里面没有构造函数,那么编译器会默认加上一个无参数且方法体为空的构造函数).它能够把定义对象时的参数传给对象的域。意即当创建一个对象时,这个对象就被初始化.如果这时构造函数不为空,则会在创建对象时就执行构造函数里面的代码。
构造函数的名称必须与类名相同,包括大小写;
构造函数没有返回值,也不能用void修饰. 如果不小心给构造函数前面添加了返回值类型,那么这将使这个构造函数变成一个普通的方法,在运行时将产生找不到构造方法的错误。
一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
构造方法可以重载,以参数的个数,类型,顺序。

  • 2、构造函数的作用

首先,构造函数用来生成并初始化对象
构造函数可以通过函数的重写给对象赋初始值,简化代码
类已经有了一个有参数有方法体的构造函数,这时编译器就不会再给它默认加上一个无参且方法体为空的构造函数.可以理解为无参的构造函数被覆盖了.这种情况称为没有默认构造函数.
而在函数的继承里,子类必须调用父类的构造函数。但是,子类只能继承父类的默认构造函数,如果父类没有默认的构造函数,那子类不能从父类继承默认构造函数.这时子类必须使用super来实现对父类的非默认构造函数的调用.

在创建对象时,先调用父类默认构造函数对对象进行初始化,然后调用子类自身自己定义的构造函数。

测试理论相关

测试用例设计方法

等价类,边界值等

你可能感兴趣的:(测试开发面试笔记,python,pycharm,qt)