一、测试基础面试题

问:请你说一说 PC 网络故障,以及如何排除故障
答:
  1、排除接触故障,即确保你的网线是可以正常使用的。然后禁用网卡后再启用,排除偶然故障:打开网络和共享中心窗口,单击窗口左上侧 “更改适配器设置”,选中其中 “本地连接” 或 “无线网络连接”,单机快捷菜单中的 “禁用” 命令,即可禁用所选网络,接下来重启网络,只需右击后单击启动即可
  2、使用 ipconfig 查看计算机的上网参数:打开 cmd 窗口,输入 ipconfig,按 enter 确认,可以看到机器的配置信息,暑促 ipconfig/all,可以看到 ip 地址和网卡物理地址等相关网络详细信息
  3、使用 ping 命令测试网络的连通性,定位故障范围:在命令提示符窗口中输入 “ping 127.0.0.1”,数据显示本机分别发送和接受了 4 个数据包,丢包率为 0,可以判断本机网络协议工作正常,若显示 “请求超时”,表明本机网卡的安装或 TCP/IP 协议有问题,接下来就应该检查网卡和 TCP/ip 协议,卸载后重装即可
  4、ping 本机 ip:在确认 127.0.0.1 地址能够被 ping 通的情况下,继续使用 ping 命令测试本机的 ip 地址是否能被 ping 通,如不能,说明本机的网卡驱动程序不正确或者网卡和网线之间连接有故障,也有可能是本地的路由表受到了破坏,因此应检查本机网卡的状态是否为已连接,网络参数是否设置正确,如果正确可是依旧不能 ping 通,就应该重新安装网卡驱动程序,丢失率为零,可以判断网卡安装配置没有问题,工作正常
  5、ping 网关:网关地址能够被 ping 通,说明本机网络连接已经正常,如果命令不成功,可能是网关设备本身存在问题,也可能是本机上网参数设置有误,检查网络参数。

二、语言类面试题(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)

问:想要在电脑中运行 linux 系统,通常需要安装虚拟机,在虚拟机中安装所需要 linux 系统,那么在配置虚拟机网络配置中有哪几类?分别有什么区别
答:
  1、在哪里配置:安装完虚拟机后,设置 -- 网络页面进行配置网络模式
  2、达到什么目的:主机 --- 虚拟机,虚拟机 --- 外网,主机 --- 外网。三者互通
  3、具体模式:①NAT 模式,内网访问外网的时候,使用一个统一的 ip 来访问,节约 ip 地址的分配。配置了 nat 模式后,虚拟机访问外网的时候,这个是默认状态下的配置,默认时虚拟机访问外网是通过主机来提供的地址,缺点是访问速度比较慢,痛点是虚拟机无法和主机之间访问(即主机 ping 虚拟机不通,但虚拟机可访问外网)。②、网桥模式(网络桥接模式),本质是为虚拟机模拟出一个独立的网卡,并且有独立的 ip 地址,所有的网络和主机一样,是对等的,可以实现主机 --- 虚拟机之间,虚拟机 --- 外网之间都可以互通。但是如果和主机在同一个网段下时,会占用主机的 ip 地址,可能会导致主机 ip 不够用。③、internal 模式:实现虚拟机 --- 虚拟机之间互通,比如在虚拟机中装了多个系统,要使得系统间通信,不关心外网,可以配置这种模式。相当于在虚拟机之间构建了局域网。④、host-only 模式(仅主机模式),即虚拟机和主机之间访问
具体的配置可以在虚拟机中安装了系统后再自己深入了解一下

四、计算机网络类面试题(TCP/IP,HTTP,ARP)

问:说一下 tcp 流量控制(tcp 滑动窗口机制)
答:
  滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。

  发送和接收方都会维护一个数据帧的序列,这个序列被称为窗口。发送方的窗口大小由接收方确定,目的在于控制发送速度,以免接收方的缓存不够大,导致溢出,同时控制流量也可以避免网络拥塞。途中 4,5,6 数据帧已经被发送出去,但是未收到关联的 ACK,7,8,9 帧则是等待发送。可以看出发送端窗口大小为 6,这是由接收端告知的(事实上必须考虑拥塞窗口 cwnd,这里暂时考虑 cwnd>rwnd)。此时如果发送端收到 4 号 ACK,则窗口的左边缘向右边缘收缩,窗口的右边缘则向右扩展,此时窗口就向前 “滑动” 了,即数据帧 10 也是可以被发送

五、数据库类面试题(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 算法,这个我知道,但是能写出来的还在这种最笨的方法)

八、其他

问:如何写测试用例,举一个平时测试中的测试用例设计过程
答:
  ABCDE


↙↙↙阅读原文可查看相关链接,并与作者交流