├── Linux 操作系统.md ├── Python高级.md ├── README.md ├── image ├── InnoDB.png ├── InnoDB索引.png ├── MyISAM.png ├── MyISAM索引.png ├── jvm内存空间.png ├── jvm垃圾回收.png ├── 技术深入.png ├── 解决人际关系.png ├── 项目质量.png └── 项目质量1.png ├── mysql数据库及性能相关.md ├── web自动化.md ├── 二面面试的核心考察点.md ├── 性能测试.md ├── 总结.md ├── 接口自动化.md ├── 综合素质考察点.md ├── 网络知识面试题.md ├── 面向对象及函数式常见问题.md └── 面试流程和技巧.md /Linux 操作系统.md: -------------------------------------------------------------------------------- 1 | # Linux 操作系统 2 | 3 | 1、如何动态查看文件中你关心的内容,比如 error 信息 4 | 5 | tail -f xxx.log | grep error 6 | 7 | 2、如何跨服务器拷贝你的文件 8 | 9 | scp -r 10 | 11 | 3、超大文件在跨服务器拷贝过程中,经常断开,你是怎么解决的 12 | 13 | rsync 14 | 15 | 4、文件查看常用命令有什么?请讲述他们的区别 16 | 17 | tail more less cat 18 | 19 | 5、如何去除文件中的重复行 20 | 21 | cat data | sort | uniq 22 | 23 | 6、如何通过监控命令查看服务器的平均负载值 24 | 25 | top -------------------------------------------------------------------------------- /Python高级.md: -------------------------------------------------------------------------------- 1 | # Python高级编程和算法面试真题 2 | 3 | 1、考点: 4 | 5 | + 深浅拷贝 6 | 7 | + 要从可变类型和不可变类型两方面回答 8 | 9 | + 可变对象:list dict 10 | 11 | + 对于可变对象:如果将a的值改变为 list 或 dict 12 | 13 | ``` 14 | import copy 15 | 16 | a = {'key':[1,2,3]} 17 | b = copy.copy(a) 18 | c = copy.deepcopy(a) 19 | print(a,b,c) 20 | print(id(a),id(b),id(c)) 21 | print(a['key'],b['key'],c['key']) 22 | print(id(a['key']),id(b['key']),id(c['key'])) 23 | 24 | 25 | 结果为: 26 | {'key': [1, 2, 3]} {'key': [1, 2, 3]} {'key': [1, 2, 3]} 27 | 7621560 7621640 42779544 28 | [1, 2, 3] [1, 2, 3] [1, 2, 3] 29 | 13831560 13831560 42777288 30 | ``` 31 | 32 | 当对象为可变对象时,浅拷贝的子元素的地址没变,引用之前的子元素的地址,但深拷贝的子元素也会被拷贝一份 33 | 34 | + 不可变对象:元组、字符串、数字,只要创建就不能改的元素 35 | 36 | + 对于纯不可变对象:深拷贝和浅拷贝的值一致,存储的地址空间也一致 37 | 38 | ``` 39 | a = ('a','b','c') 40 | b = copy.copy(a) 41 | c = copy.deepcopy(a) 42 | if b == c: 43 | print("b和c的值相等") 44 | if id(b) == id(c): 45 | print("b和c的地址相等") 46 | ``` 47 | 48 | 结果:两个都打印 49 | 50 | + 当不可变元素中含有可变元素时,如元组含有可变元素 51 | 52 | ``` 53 | import copy 54 | 55 | a = (1,2,[2,3,4]) 56 | b = copy.copy(a) 57 | c = copy.deepcopy(a) 58 | print(a,b,c) 59 | print(id(a),id(b),id(c)) 60 | print(id(a[2]),id(b[2]),id(c[2])) 61 | 62 | 结果: 63 | (1, 2, [2, 3, 4]) (1, 2, [2, 3, 4]) (1, 2, [2, 3, 4]) 64 | 46282984 46282984 46971144 65 | 46402984 46402984 46971240 66 | 67 | 对于不可变对象中含有可变对象时,浅拷贝的父父元素和子元素地址没改变,而深拷贝的会将父元素和子元素都复制一份,地址都会改变 68 | ``` 69 | 70 | 71 | 72 | 73 | 74 | 2、考点: 75 | 76 | + 类变量和实例变量 77 | 78 | ``` 79 | class Person: 80 | x = 5 81 | y = 6 82 | def __init__(self,x,y): 83 | self.x = x 84 | self.y = y 85 | def add(self): 86 | return self.x + self.y 87 | person = Person(10,20) 88 | person.z = 7 89 | print(person.x) #10 90 | print(person.y) #20 91 | print(Person.x) #5 92 | print(Person.y) #6 93 | print(Person.add(Person)) #11 94 | print(person.add()) #30 95 | print(person.z) #7 96 | print(Person.z) #报错:AttributeError: type object 'Person' has no attribute 'z' 97 | ``` 98 | 99 | 每个实例的变量都是相互独立的 100 | 101 | 102 | 103 | 3、考点:可变参数 104 | 105 | python 中一个函数 function 接收 3 个参数 a、*args 、**kwargs 106 | 107 | + *args:元组类型 108 | + **kwargs:dict 类型 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 4、考点:推导式 117 | 118 | 请根据列表 list1=[1,2,3,4,5,6],使用一行代码生成一个新的列表 list2,list2 中每个元素是 list1 中的平方 119 | 120 | + lambda:list2 = map(lambda x:x*x,list1) 121 | + 推导式方式: 122 | list2=[i*i for i in list1] 123 | list2 = [i * i for i in list if i > 2] 有条件的列表推导式 124 | 字典推导式: 125 | key = { 126 | "key1":10, 127 | "key2":20, 128 | "key3":30 129 | } 130 | key1 = {key:value for key,value in key.items() if key == "key1"} 131 | 132 | 133 | 134 | 5、考点:冒泡、快排在效率上不同 135 | 请将下面的列表进行排序 list1=[20,15,88,97,76,13,27,49] 136 | 137 | 常见的排序算法: 138 | + 插入算法、希尔算法、直接排序、堆排序、冒泡排序、快速排序、归并排序、基数排序 139 | 复杂度: 140 | + 时间复杂度: 141 | + 常数阶 O(1)、对数阶 O(log2n)、线性阶 O(n)、线性对数阶 O(nlog2n)、平方阶 O(n^2)、立方阶 O(n^3) 142 | 随着问题的规模n的不断增大,上述的时间复杂度就不断的增大,意味着算法的执行效率越低 143 | + 空间复杂度 144 | 145 | + 冒泡排序: 146 | + 相邻的两个数字进行比较,大的向下沉,最后一个元素是最大的 147 | + 时间复杂度 O(n^2) 148 | ``` 149 | def bubble_sort(blist): 150 | count = len(list) 151 | for i in range(0,count): 152 | for j in range(i+1,count): 153 | if blist[i] > blist[j] 154 | blist[i], blist[j]=blist[j],blist[i] 155 | return blist 156 | ``` 157 | 158 | + 快速排序: 159 | 160 | + 递归 161 | + 列表中取出第一个元素,作为标准。把比第一个元素小的都放在左侧,把比第一个元素大的都放在右侧 162 | + 时间复杂度:O(nlog2n) 163 | 164 | ``` 165 | def quick_sort(quick_list): 166 | if quick_list == []: 167 | return [] 168 | else: 169 | first = quick_list[0] 170 | less = quick_sort([l for l in quick_list[1:] if l < first]) 171 | more = quick_sort([m for m in quick_list[1:] if m > first]) 172 | return less + [first] + more 173 | ``` 174 | 175 | 176 | 177 | 178 | 6、考点:装饰器 179 | 180 | 请实现 @runtime 效果为当调用 student_run 时会自动打印当前时间 181 | 182 | ``` 183 | @runtime 184 | def student_run(name): 185 | print("student" + name + "run") 186 | 187 | student_run("张三") 188 | ``` 189 | 190 | runtime 代码: 191 | ``` 192 | import time 193 | def runtime(fn): 194 | def run_outer(name): 195 | print(time.time()) 196 | fn(name) 197 | return run_outer 198 | ``` 199 | 200 | 7、考点:生成器 201 | 请简述 func1 和 func2 函数的返回值,以及函数运行机制 202 | 203 | ``` 204 | def func1(): 205 | for i in range(1, 5): 206 | return i 207 | 208 | def func2(): 209 | for i in range(1, 5): 210 | yield i 211 | ``` 212 | return 会阻断循环 213 | 214 | yield 不会阻断循环,会将结果存储在生成器对象中,每生成一个返回一个,不像 list 是等待所有一起返回,占用内存比较小,对于生产器对象可以使用循环获取值 215 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Test-interview-skills 2 | ### 测试学习之路与面试技巧 3 | -------------------------------------------------------------------------------- /image/InnoDB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xuefengji/Test-interview-skills/4e5dc18a6ccaeb9c251f650ea0c766834a89dea8/image/InnoDB.png -------------------------------------------------------------------------------- /image/InnoDB索引.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xuefengji/Test-interview-skills/4e5dc18a6ccaeb9c251f650ea0c766834a89dea8/image/InnoDB索引.png -------------------------------------------------------------------------------- /image/MyISAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xuefengji/Test-interview-skills/4e5dc18a6ccaeb9c251f650ea0c766834a89dea8/image/MyISAM.png -------------------------------------------------------------------------------- /image/MyISAM索引.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xuefengji/Test-interview-skills/4e5dc18a6ccaeb9c251f650ea0c766834a89dea8/image/MyISAM索引.png -------------------------------------------------------------------------------- /image/jvm内存空间.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xuefengji/Test-interview-skills/4e5dc18a6ccaeb9c251f650ea0c766834a89dea8/image/jvm内存空间.png -------------------------------------------------------------------------------- /image/jvm垃圾回收.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xuefengji/Test-interview-skills/4e5dc18a6ccaeb9c251f650ea0c766834a89dea8/image/jvm垃圾回收.png -------------------------------------------------------------------------------- /image/技术深入.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xuefengji/Test-interview-skills/4e5dc18a6ccaeb9c251f650ea0c766834a89dea8/image/技术深入.png -------------------------------------------------------------------------------- /image/解决人际关系.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xuefengji/Test-interview-skills/4e5dc18a6ccaeb9c251f650ea0c766834a89dea8/image/解决人际关系.png -------------------------------------------------------------------------------- /image/项目质量.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xuefengji/Test-interview-skills/4e5dc18a6ccaeb9c251f650ea0c766834a89dea8/image/项目质量.png -------------------------------------------------------------------------------- /image/项目质量1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xuefengji/Test-interview-skills/4e5dc18a6ccaeb9c251f650ea0c766834a89dea8/image/项目质量1.png -------------------------------------------------------------------------------- /mysql数据库及性能相关.md: -------------------------------------------------------------------------------- 1 | # mysql 数据库及性能相关 2 | 3 | 1、mysql 中索引作用 4 | 5 | 加快表的查询速度 6 | 7 | + 什么是索引:是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息 8 | + 索引分类: 9 | + 索引创建的目的:加快检索表中数据的速度,也就是查询数据的速度 10 | + 索引不是越多越好:索引过多创建,会带来数据的写入的代价过高,即减慢数据写入速度 11 | 12 | 2、如何分析一条查询 SQL 的效率 13 | 14 | explain + sql 15 | 16 | 3、MySQL 的常用存储引擎有什么?区别是什么? 17 | 18 | MyISAM 引擎: 19 | 20 | ![MyISAM](./image/MyISAM.png) 21 | 22 | 索引工作原理: 23 | 24 | ![MyISAM索引](./image/MyISAM索引.png) 25 | 26 | 特点: 27 | 28 | 1、在进行数据的备份、迁移、恢复等操作时,非常的容易,只要对文件进行操作就行 29 | 30 | 2、MyISAM 只支持表锁,没有行锁 31 | 32 | 3、MyISAM 不支持事务安全,但每次读的操作是具有原子性的,索引不必担心脏读等情况 33 | 34 | 35 | 36 | 37 | 38 | InnoDB 引擎: 39 | 40 | ![InnoDB](./image/InnoDB.png) 41 | 42 | 索引工作原理: 43 | 44 | ![InnoDB索引](./iamge/InnoDB索引.png) 45 | 46 | 特点: 47 | 48 | 1、支持事务、回滚、崩溃修复,所以对安全性较高的业务场景都选择这个引擎 49 | 50 | 2、支持行级锁,行级锁的支持大大提高了数据库的并发能力 51 | 52 | 3、支持外键约束,在 MySQL 中,只有 InnoDBhi 支持外键,在 fan 式设计的原则下,外键约束保证了数据的完整性 53 | -------------------------------------------------------------------------------- /web自动化.md: -------------------------------------------------------------------------------- 1 | # web自动化 2 | 1、你的自动化是如何落地的?遇到了什么难点 3 | 2、遇到过哪些比较难定位的元素,你是如何定位的 4 | 3、验证码问题你是如何解决的 5 | 4、你的自动化框架是如何设计的 6 | 7 | po 模型 8 | 9 | #### 滚动条定位 10 | 可以使用 js 进行定位 11 | js = “window.scrollto(10000,10000);” 12 | driver.excute_script(js) 13 | 14 | #### 时间控件定位 15 | js 16 | 17 | #### web弹出框 18 | 19 | #### 句柄切换 20 | 21 | #### 验证码问题 22 | 23 | #### 如何保证元素定位的成功率 24 | 等待: 25 | 1、强制等待 26 | 2、隐性等待:页面完全加载,对 driver 的周期都起作用,只要设置一次 27 | 3、显示等待:检测到元素是否被检测到 -------------------------------------------------------------------------------- /二面面试的核心考察点.md: -------------------------------------------------------------------------------- 1 | # 二面面试的核心考察点 2 | 3 | 1、你是如何保证项目质量的 4 | 5 | 提前了解需求、代码编写 6 | 7 | ![项目质量](./image/项目质量.png) 8 | 9 | 10 | 11 | ![项目质量1](./image/项目质量1.png) 12 | 13 | 2、你是如何推进项目进度的 14 | 15 | ![项目质量1](./image/推进项目进度.png) 16 | 17 | 3、推进项目的过程中遇到了哪些问题 18 | 19 | 内部问题: 20 | 21 | + 无自动化、测试效率低,推进自动化的测试能力 22 | + 有自动化用例维护不及时:用例维护在本地,推进用例以原始数据的形式存储在数据库中 23 | 24 | 外部问题: 25 | 26 | + 无文档 27 | + 与开发人员属于同一团队的情况 28 | + 与开发人员不属于同一团队的情况 29 | + 有文档,但文档更新不及时 30 | + 提高自己对文档的重视 31 | 32 | 4、为项目做了哪些贡献 33 | 34 | 突出价值: 35 | 36 | + 工作成果数字化 37 | + 提升 50% 的测 的测试效率 38 | + 提高 30%的测试覆盖率 39 | + 价值高度化 40 | + 推进项目流程的标准化 41 | + 文档建设 42 | + 持续集成 43 | + 测试准入 -------------------------------------------------------------------------------- /性能测试.md: -------------------------------------------------------------------------------- 1 | # 性能测试 2 | 3 | 1、什么是内存溢出?为什么会内存溢出 4 | 5 | 2、JVM 的内存区域是如何划分的 6 | 7 | ![jvm内存空间](./image/jvm内存空间.png) 8 | 9 | 10 | 11 | 3、JVM 是如何进行垃圾回收的 12 | 13 | ![jvm内存空间](./image/jvm垃圾回收.png) 14 | 15 | 垃圾回收算法: 16 | 17 | + 引用计数算法 18 | + 可达性分析法 19 | + 标记清除算法 20 | + 复制算法 21 | + 标记整理算法 22 | + 分代收集算法 23 | 24 | 25 | 26 | 4、JVM 监控 27 | 28 | + jmap 29 | + jmap -heap pid 查看堆内存的使用情况 -------------------------------------------------------------------------------- /总结.md: -------------------------------------------------------------------------------- 1 | # 总结 2 | 3 | + 一面:技术 4 | 5 | 技术深入: 6 | 7 | ![技术深入](./image/技术深入.png) 8 | 9 | 简历核心: 10 | 11 | 价值、数字 12 | 13 | ​ 14 | 15 | + 二面:项目 16 | 17 | + 三面:综合素质 -------------------------------------------------------------------------------- /接口自动化.md: -------------------------------------------------------------------------------- 1 | # 接口自动化 2 | 3 | 立项--》文档(测试需要参与,了解接口文档)---》代码编写(接口自动化测试代码)---》单元测试---》测试准入(web 自动化、接口自动化)---》功能测试---》性能测试---》集成测试(web 自动化、接口自动化)---》集成功能测试---》上线部署---》线上回归 4 | 5 | ##### 接口自动化与持续集成面试 6 | 1、你的接口自动化是如何做的 7 | 2、你常用的接口请求方式与区别 8 | 3、你的持续集成那个是怎么做的 9 | 10 | #### 接口自动化落地难点有哪些 11 | 1、接口文档的管理(创建于维护) 12 | 2、多测试人员协同开发时的 case 维护 13 | 14 | 15 | #### 接口自动化面试真题 16 | 1、常用的接口自动化数据传递方式和区别 17 | + get 和 post 方法 18 | + 两个角度:数据格式和数据传递位置 19 | 20 | 2、接口测试中常用的库 21 | requests 和 urllib 22 | 23 | 24 | #### 持续集成 25 | 持续集成落地过程 26 | 持续集成:自动化部署 27 | 28 | -------------------------------------------------------------------------------- /综合素质考察点.md: -------------------------------------------------------------------------------- 1 | # 综合素质考察点 2 | 3 | 1、性格 4 | 5 | 2、稳定性 6 | 7 | 3、沟通能力 8 | 9 | 4、团队协作能力 10 | 11 | 5、管理能力(个人及团队) 12 | 13 | 6、目标感与责任感 14 | 15 | 16 | 17 | #### 真题 18 | 19 | 1、业务能力(特定行业的业务知识) 20 | 21 | 2、团队中有人不服你怎么办?(管理岗必备) 22 | 23 | ![解决人际关系](./解决人际关系.png) 24 | 25 | 要产生工作之外的联系 26 | 27 | 3、未来的职业规划是什么 28 | 29 | 无休止的技术之路 30 | 31 | ​ 尽自己最大的努力为的团队、为公司的效能贡献力量 32 | 33 | 4、你认为你能够胜任这个工作的原因是什么 34 | 35 | 个人优势: 36 | 37 | + 持续的学习能力---丰富知识体系可为公司做更大的贡献 38 | + 乐观的态度--遇到困难优先去想解决办法,而不是逃避 39 | + 对工作的热情---在工作中能够找到自信与成就感 40 | 41 | 5、为什么要离职 42 | 43 | 不可触碰的雷区: 44 | 45 | + 吐槽加班 46 | + 吐槽公司和老板 47 | + 吐槽团队 48 | + 吐槽制度 49 | 50 | 6、团队中有工作需要加班,你会如何处理 51 | 52 | + 首先表明态度 53 | + 思考解决办法 54 | + 提高工作效率 55 | 56 | 57 | 58 | 7、经典个人问题 59 | 60 | + 你自己有什么缺点 61 | + 只讲技术方面,比如只是的深度还不够,源码阅读的比较少 62 | + 切记不要讲性格方面的缺点 63 | + 结婚与生子 64 | + 核心:短时间内没有计划 65 | + 业余时间有什么爱好 66 | + 一定要是积极向上的爱好 67 | + 对新技术的探索:看看论坛、技术文章之类的 68 | + 同事聚会,加强默契与了解 69 | 70 | #### 三面核心关键词 71 | 72 | 1、乐观 73 | 74 | 2、好学 75 | 76 | 3、积极 77 | 78 | 4、有责任 79 | 80 | 5、随和 81 | 82 | 6、奉献 -------------------------------------------------------------------------------- /网络知识面试题.md: -------------------------------------------------------------------------------- 1 | # 网络知识面试题 2 | 3 | 1、请说明 session 和 cookie 的作用和区别 4 | 5 | + cookie 在客户端的头信息中 6 | + session 在服务的存储 7 | + 一般说 session 的验证需要 cookie 带一个字段便是这个用户是哪一个 session,所以当 cookie 被禁用时,session 失效 8 | 2、http 协议如何保证数据在传输过程中不丢失 9 | TCP 的三次握手和四次挥手 10 | 3、简要说明请求头中 Accept\Accept-encoding\Accept-Language 都代表了什么 -------------------------------------------------------------------------------- /面向对象及函数式常见问题.md: -------------------------------------------------------------------------------- 1 | # 面向对象及函数式常见问题 2 | 3 | #### 面向对象常见问题 4 | 5 | 1、概述如何理解面向对象以及面向对象的特点 6 | 7 | 万物皆对象,面向对象编程是一种编程思想,是编程世界向现实世界的一种延申,也就是说万物皆可描述,我们用编程语言也可描述世界万物。类就是面向对象的一种表现形式 8 | 9 | 2、类中的私有变量是否能访问,如果能,那么如何访问 10 | 11 | 能,在 python 中会将私有变量改名为,私有变量加上_类名, 12 | 13 | 3、python 中的类有多少方法种类,他们有什么区别 14 | 15 | 实例方法:实例方法可直接被实例调用,类调用实例方法时需要传入类 16 | ``` 17 | class Person: 18 | x = 8 19 | 20 | def eat(self): 21 | print('eat') 22 | 23 | 24 | per = Person() 25 | per.eat() 26 | Person.eat(Person) 27 | 28 | 结果: 29 | eat 30 | eat 31 | 如果在类调用实例方法时,不传入类时,会报错 32 | ``` 33 | 34 | 类方法:类方法可以被类直接调用,类方法可以操作类变量 35 | ``` 36 | class Person: 37 | x = 8 38 | @classmethod 39 | def run(cls): 40 | print(cls.x) 41 | 42 | def eat(self): 43 | print('eat') 44 | 45 | per = Person() 46 | per.eat() 47 | Person.run() 48 | per.run() 49 | print(per.x) 50 | 51 | 结果: 52 | eat 53 | 8 54 | 8 55 | 8 56 | ``` 57 | 58 | 静态方法:脱离了类,不需要传入参数,能够被类调用,可用做工具类的实现 59 | ``` 60 | class Person: 61 | x = 8 62 | @classmethod 63 | def run(cls): 64 | print(cls.x) 65 | 66 | def eat(self): 67 | print('eat') 68 | 69 | @staticmethod 70 | def say(): 71 | print('say') 72 | 73 | per = Person() 74 | per.say() 75 | Person.say() 76 | 77 | 结果: 78 | say 79 | say 80 | ``` 81 | 82 | 私有方法:实例方法的一种,不能直接被访问,需要使用_类名__eat的形式调用 83 | ``` 84 | class Person: 85 | 86 | def __eat(self): 87 | print('eat') 88 | 89 | 90 | per = Person() 91 | print(per.__dir__()) 92 | per._Person__eat() // 93 | 94 | 结果: 95 | eat 96 | ``` 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | #### 函数式编程常见问题 105 | 106 | 1、用函数实现过滤掉集合 list1 = ['', 'hello',None, 'python' ] 中的空格和空值 107 | 108 | ``` 109 | list1 = ['', 'hello',None, 'python' ] 110 | def get_value(str1): 111 | if str1!=''or str1!=None: 112 | return str1 113 | 114 | a = list(filter(get_value,list1)) 115 | print(a) //['hello', 'python'] 116 | 或者使用lambda表达式的方式: 117 | a = list(filter(lambda x: x!='' and x!=None, list1)) 118 | 119 | 120 | ``` 121 | 122 | 2、用函数方法实现计算集合 list1 = [1,2,3,4,5] 中,所有元素的和 123 | 124 | ``` 125 | from functools import reduce 126 | b = reduce(lambda x,y:x+y,list2) 127 | print(b) //15 128 | ``` 129 | 注意:python3 中 reduce 函数被放置在 functools 中,需要引入 reduce 函数 130 | 131 | -------------------------------------------------------------------------------- /面试流程和技巧.md: -------------------------------------------------------------------------------- 1 | # 面试流程和技巧 2 | 3 | ### 岗位JD分析 4 | 5 | + 具备一门编程语言如:python、Java 6 | + 自动化测试 7 | + 性能测试 8 | + 操作系统 9 | + 数据库 10 | + 网络 11 | 12 | ### 高级测试技能树 13 | 14 | + 具备一门编程语言如:python、Java 15 | + 自动化测试:web、接口自动化 16 | + 性能测试 17 | + 操作系统:Linux 18 | + 数据库:Mysql 19 | + 网络:TCP/HTTP 20 | 21 | 22 | 23 | ### 测试工程师职业规划 24 | 25 | ​ 资深---》架构 26 | 27 | 初级---》中级---》高级---》 ---》CTO/VP 28 | 29 | ​ 经理---》总监 30 | 31 | 32 | 33 | ### 面试类型的分类 34 | 35 | + 技术面试(一面) 36 | + 广博的技术面 37 | + 专精的技术方向:测试技术方面 38 | + 项目面试(二面) 39 | + 价值 40 | + 为团队做了什么:质量方面、效率方面 41 | + 为项目做了什么:项目质量方面、项目效率方面、有没有推进项目 42 | + 为公司做了什么 43 | 44 | + 综合素质面试(三面) 45 | + 能力: 46 | + 团队协作能力 47 | + 团队管理能力 48 | + 核心竞争力 49 | + 精彩的自我介绍(面试的重点) 50 | + 深刻的第一印象 51 | + 优秀的语言表达能力:优秀的自我介绍 52 | + 亲和力 --------------------------------------------------------------------------------