一、测试基础面试题
二、语言类面试题(python)
问:解释一下__call__的用法
答:
python 中有一个有趣的语法,只要是定义类型的时候,实现__call__函数,这个类型就成为了可以调用的,换句话说,我们可以吧这个来信的对象当作函数来直接使用,相当于重载了括号运算符:
示例:
class Person(object):
def __init__(self,name,gender):
self.name = name
self.gender = gender
def __call__(self,friend):
print('my name is %s'%self.name)
print('my friend is %s' %friend)
def test(self,friend2):
print('my name is %s'%self.name)
print('my friend2 is %s' %friend2)
#对于类person实例可以直接调用:
p = Person('bob','name')
p('tim')
p.test('jack')
#输出结果
my name is bob
my friend is tim
my name is bob
my friend2 is jack
三、操作系统类面试题(linux)
四、计算机网络类面试题(TCP/IP,HTTP,ARP)
问:说一下 tcp 流量控制(tcp 滑动窗口机制)
答:
滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。
五、数据库类面试题(sql,mysql)
DDL 语句是用来定义数据库对象,主要对数据库和表,列进行操作,常用的操作:
问:DDL 语言对数据库的操作语句有哪些_
答:
1、创建/查看数据库:
查看数据库:
mysql> show databases;
查看数据库具体的定义信息:
mysql>SHOW CREATE DATABASE dbtest2
创建数据库(数据库名不能重复):
mysql> CREATE DATABASE dbtest;
创建数据库检查是否存在,若存在就不会再创建,只会提示(好处在于不会报错,可以继续执行后续 sql 语句):
mysql> CREATE DATABASE IF NOT EXISTS dbtest;
创建数据库,并指定字符编码(mysql8.0 默认情况下是 utf-8):
mysql> CREATE DATABASE dbtest2 CHARACTER SET gbk
2、修改数据库:
修改字符集:
mysql> ALTER DATABASE dbtest1 DEFAULT CHARACTER SET gdk
3、删除数据库:
mysql> DROP DATABASE dbtest1;
4、查看正在使用的数据库
mysql> SELECT DATABASE();
5、使用数据库
mysql> USE dbtest2;
问:DDL 语言对表的操作语句有哪些_
答:
1、创建/查看表:
创建表:
mysql> CREATE TABLE student(number INT,name VARCHAR(10),age INT,birthday DATA,sex CHAR(1));
需要注意:varchar 和 char 中没有默认值,所以在创建时需要指定大小。Int 有默认值 10
查看所有表:
mysql>showTABLES;
查看具体表项:
mysql>DESC student;
查看建立表现的语句:
mysql>show create table student;
快速创建一个表结构跟当前表一致:
mysql>CREATE TABLE student1 like student
2、删除表:
mysql> DROP TABLE student1
判断删除的表是否存在,进行删除:
mysql> DROP TABLE IF EXISTS student1;
3、修改表结构:
为当前表添加一个字段
mysql> ALTER TABLE student1 ADD remark varchar(20) ;
修改列类型:
mysql> ALTER TABLE student1 MODIFY remark varchar(100);
改变列名:
mysql>ALTER TABLE student1 change remark intro varchar(30)
4、删除列(注意还是 ALTER 开头)
mysql>ALTER TABLE student1 DROP intro;
5、修改表名:
mysql>RENAME TABLE student1 to student2;
6、修改字符集:
mysql>ALTER TABLE student2 character set gbk;
六、自动化接口测试(Jmeter)
问:如何写测试用例,举一个平时测试中的测试用例设计过程
答:
ABCDE
七、code(算法)
问:leecode 1 easy
答:
'''
输入一组数组nums和目标值target,如果数组中有两个数相加等于目标值,输出这两个数的位置
示例:输入nums=[2,4,7,10],target=14,返回[1,3]因为nums[1]+nums[3]=14
'''
class Nums_mark():
def N_mark(self,nums,target):
self.nums = nums
self.target = target
x = len(self.nums)
for i in range(x-1):
for j in range(i,x):
if int(self.nums[i])+int(self.nums[j]) == int(self.target):
return (i,j)
if __name__ == '__main__':
nums = list(input('请输入一组数组:'))
target = input('请输入目标参数:')
numsmark = Nums_mark()
mark = numsmark.N_mark(nums,target)
print(mark)
程序题解法多种,如果程序有问题可以留言帮我提升一下(比如还有什么 hash 算法,这个我知道,但是能写出来的还在这种最笨的方法)