1. 直接手写一个python类
  2. 直接手写一个构造函数
  3. 紧接着上面的代码,直接手写,补充完整代码,要求对列表中的人进行排序,并筛选出分数大于80的人的名单,组成一个新的列表显示出来。
  1. class Person:
    def __init__(self, name, gender, age):
    self.name = name
    self.gender = gender
    self.age = age
  2. class Student(Person):
    def __init__(self, name, gender, age,score):
    super(Student, self).__init__(name, gender, age)
    self.score = score
  3. People = [kathy, Jim, John, Alice, Leo]

python的高阶函数有哪些,分别都有什么作用?

  1. 高阶函数:把函数作为参数传入,或者把函数作为返回值返回,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。
  2.  
  3. 1. map()函数,函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
  4. def f(x):
  5. return x * x
  6.  
  7. >>> map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
  8. [1, 4, 9, 16, 25, 36, 49, 64, 81]
  9.  
  10. 2.reduce()的用法。reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
  11.  
  12. reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
  13. 比方说对一个序列求和,就可以用reduce实现:
  14.  
  15. >>> def add(x, y):
  16. ... return x + y
  17. ...
  18. >>> reduce(add, [1, 3, 5, 7, 9])
  19. 25
  20.  
  21. 3. Python内置的sorted()函数就可以对list进行排序:
  22.  
  23. >>> sorted([36, 5, 12, 9, 21])
  24. [5, 9, 12, 21, 36]
  25. 此外,sorted()函数也是一个高阶函数,它还可以接收一个比较函数来实现自定义的排序。比如,如果要倒序排序,我们就可以自定义一个reversed_cmp函数:
  26.  
  27. def reversed_cmp(x, y):
  28. if x > y:
  29. return -1
  30. if x < y:
  31. return 1
  32. return 0
  33. 传入自定义的比较函数reversed_cmp,就可以实现倒序排序:
  34.  
  35. >>> sorted([36, 5, 12, 9, 21], reversed_cmp)
  36. [36, 21, 12, 9, 5]

简单说说生成器,迭代器,装饰器是什么,都有哪些作用?

  1. 迭代器;任何对象,如果它实现了next方法和iter方法,就是迭代器。
    next方法要么返回迭代中的下一项,要么返回一个stapIteration异常,iter方法要返回一个迭代器对象,而它本身就是一个迭代器对象,所有返回自己本身。
  2. 作用:像我们提供一个中间人即迭代器帮助我们迭代遍历使用
  3. for循环其实就实现了迭代器的功能,在遍历liststringdicttuple这些容器时,在 for语句对容器对象调用的iter()方法返回一个定义next()方法的迭代器对象,
    它在函数中逐个访问容器内的元素,nextiter都是python内置函数。
  4.  
  5. 生成器:生成器是一种特殊的迭代器,在函数中有yield关键字就可以说是生成器。
  6. 怎么用:调用next(),就会返回yield后面的值,生成器挂起,再次使用next就从上次停止的位置继续执行。
  7. 作用:延迟计算,一次返回一个结果。当我们需要结果的时候才会调用,而不是一次返回所有的结果。 也就是说,它不会一次生成所有的结果,
    这对于大数据量处理,将会非常有用。
  8. 创建方法:1.把列表生成式的[ ]改为()就是一个简单的列表生成器
  9. 2.使用yield关键字
  10.  
  11. 生成器和迭代器的区别:生成器能做到迭代器能做到的所有事,因为自动创建iter方法和next方法,显的比较简洁,高效。
    使用生成器表达式比列表解析要节省内存(前者是需要的时候才调用next返回一个值,后者直接返回一个列表),自动抛出StopIteration异常
  12.  
  13. 装饰器:在不改变已存在的对象的功能情况下添加额外的功能
  14. def set_fun(func):
  15.  
  16. call_fun(*arge,**kwargs):
  17. reurn func(*arge,**kwargs)
  18.  
  19. return call_fun
  20. 作用:引用日志,函数执行预计时间,权限校验,缓存等

Python中,如何将字符串转化为整型?

  1. def to_int(str):
  2. try:
  3. int(str)
  4. return int(str)
  5. except ValueError: #报类型错误,说明不是整型的
  6. try:
  7. float(str) #用这个来验证,是不是浮点字符串
  8. return int(float(str))
  9. except ValueError: #如果报错,说明即不是浮点,也不是int字符串。 是一个真正的字符串
  10. return False

TCP 三次握手和四次挥手,请分别直接写出来

客户端向服务端发送一个请求, syn -----服务端返回一个 应答 ack+syn  -----客户端收到后返回一个确认 ack

客户端向服务器发送一个关闭连接请求 fin  m----服务端应答返回ack m+1---服务端返回一个fin n ----客户端收到后发一个确认---ack n+1

HTTP常见的状态码有哪些?都是什么含义?

  1. 200 - 请求成功
  2. 301 - 资源(网页等)被永久转移到其它URL
  3. 404 - 请求的资源(网页等)不存在
  4. 500 - 内部服务器错误

webdriver的核心原理是什么?

  1. 1.测试人员运行脚本,由于客户端脚本(java, python, ruby)不能直接与浏览器通信,这时候webdriver启动了一个remote-WebService当做一个翻译器,
    它可以把客户端代码翻译成浏览器可以识别的代码(比如js)。webdriver 通过浏览器监听这个端口。
    2.客户端(也就是测试脚本)创建1session
    在该session中通过http请求向WebService发送restful的请求,WebService翻译成浏览器懂得脚本传给浏览器,
    3.浏览器把执行的结果返回给WebService,WebService把返回的结果做了一些封装(一般都是json格式),
    然后返回给client,根据返回值就能判断对浏览器的操作是不是执行成功
  2.  
  3. 总结: webdriver就是基于Http 协议来进行底层的客户端与服务端通信的。

appium是什么?主要用来做什么的?它的核心原理是什么?

略,appium client   appium server   bootstrap.js/bootstrap.jar

selenium1和selenium2的区别是什么,为何要抛弃selenium1?它有什么缺陷?

常见的元素定位方法有哪些?

by  id,classname, name ,xpath,linktext 等等

直接手写一个冒泡排序和快速排序,时间复杂度是多少?空间复杂度是多少?是否稳定?

  1. //时间复杂度:O(n²) 空间复杂度:空间复杂度为O(1) 典型的用时间换空间的算法
    public class poup{
  2. int[] arr={6,3,8,2,9,1};
  3.     System.out.println("排序前数组为:");
  4.     for(int num:arr){
  5.       System.out.print(num+" ");
  6.     }
  7.     for(int i=0;i<arr.length-1;i++){//外层循环控制排序趟数
  8.       for(int j=0;j<arr.length-1-i;j++){//内层循环控制每一趟排序多少次
  9.         if(arr[j]>arr[j+1]){
  10.           int temp=arr[j];
  11.           arr[j]=arr[j+1];
  12.           arr[j+1]=temp;
  13.         }
  14.       }
  15.     }
  16.     System.out.println();
  17.     System.out.println("排序后的数组为:");
  18.     for(int num:arr){
  19.       System.out.print(num+" ");
  20.     }
  21.   }
  22. }

如何查询Linux后台日志,直接写出命令

cat demo.log

more demo.log

// 查询包含关键字`123456`且包含`aa`的日志内容

grep "123456" demo.log | grep "aa"

如何查看当前进程?

netstat

Dockerfile是什么?如何去创建一个Dockerfile?

  1. Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
  2.  
  3.   此处以定制 nginx 镜像为例,使用 Dockerfile 来定制。
  4.  
  5.   在一个空白目录中,建立一个文本文件,并命名为 Dockerfile
  6.  
  7. $ mkdir mynginx
  8. $ cd mynginx
  9. $ touch Dockerfile
  10.  
  11. 其内容为:
  12.  
  13. FROM nginx
  14. RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
  15.  
  16. 这个 Dockerfile 很简单,一共就两行。涉及到了两条指令, FROM RUN

Python有没有垃圾回收机制?它又是通过什么来的?

Python中的垃圾回收是以引用计数为主,分代收集为辅。引用计数的缺陷是循环引用的问题。

https://www.cnblogs.com/pinganzi/p/6646742.html

熟悉TESTNG,那请说一下TESTNG的用法?

略, 大致是testsuite,testcase,  testng.xml , 基本注解, listener(Listener包括ISuiteListenerITestListenerIInvokedMethodListener,他们可以在suite级别、test级别和test method一些执行点执行一些自定义操作,如打印日志。因)

熟悉JAVA,那请直接手写一个单例模式?

  1. // 饱汉
  2. // UnThreadSafe
  3. public class Singleton1 {
  4. private static Singleton1 singleton = null;
  5. private Singleton1() {
  6. }
  7. public static Singleton1 getInstance() {
  8. if (singleton == null) {
  9. singleton = new Singleton1();
  10. }
  11. return singleton;
  12. }
  13. }

数据库增删改查,手写SQL

略, 注意join , group by , having, count(ll)

redis是做什么用的?elasticsearch是什么?做什么用的?

  1. Redis是一个开源的keyvalue型数据库,支持stringlistsetzsethash类型数据。对这些数据的操作都是原子性的,redus为了保证效率会定期持久化数据。
  2. 使用场景:
  3.  
  4. 1.配合关系型数据库做高速缓存
  5.  
  6. 2.缓存高频次访问的数据,降低数据库io
  7.  
  8. 3.分布式架构,做session共享
  9.  
  10. 4.可以持久化特定数据。
  11.  
  12. 5.利用zset类型可以存储排行榜
  13.  
  14. 6.利用list的自然时间排序存储最新n个数据
  15.  
  16. ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
    Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,
    能够达到实时搜索,稳定,可靠,快速,安装使用方便。

接口测试怎么做的?如果存在接口依赖关系,怎么做?

略, 注意http/https接口,get/post, 参数的差异(json, url等等) 写一个传参函数,将需要传递的参数存储起来供下一条接口使用

元祖和列表的区别是什么?

元祖 tuple是有序列表 初始化之后,不能更改,元祖转换为列表:tuple-->list  list(tuple)

列表list

函数:len()、append()、remove()移除列表中某个值的第一个匹配项、insert()、pop()、sort()、del、list()、reverse()、index()从列表中找出某个值第一个匹配项的索引位置、count()统计某个元素在列表中出现的次数、extend()在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

删除:del list1[0]

Python中,arg和*kwarg分别代表什么含义,都有哪些作用?

https://www.jianshu.com/p/e0d4705e8293

当不确定函数传递多少个参数的时候,使用*arg, **kwarg

  • *arg会把多出来的位置参数转化为tuple
  • **kwarg会把关键字参数转化为dict

写过爬虫,那请说一下常见的反爬机制有哪些?如果是动态加载的页面,看不到数据,如何去进行爬取?

加入图片识别 ,使用代理,更新IP; 使用cookie登陆

一般动态加载的数据都以json形式存储,在Filter里填json过滤,可以更加快速地寻找到想要的文件,但不是所有的网站都适用

高级测试岗位面试题---MARK的更多相关文章

  1. 上海洋码头(www.ymatou.com)急招技术人才(职位:互联网软件开发工程师,.NET网站架构师,Web前端开发工程师,高级测试工程师,产品经理)

    对公司招聘职位有兴趣的童鞋可以把简历发送到zhangzhiqiang@ymatou.com,我们HR会快速给你答复. 互联网软件开发工程师 岗位职责: 1.参与洋码头各个平台(www.ymatou.c ...

  2. [原创] 上海招聘高级测试工程师(性能测试/自动化测试/App测试),长期有效

    [原创] 上海招聘高级测试工程师(性能测试/自动化测试/App测试方向),长期有效 高级测试工程师(性能/自动化方向) 1.负责性能测试计划,性能需求分析,性能测试方案和用例设计,搭建性能测试环境,执 ...

  3. 【转】测试开发工程师必备软硬能力&高级测试开发工程师需要具备什么能力?

    对于测试的基本知识,可以查看软件测试相关书籍 对于在公司成为一位优秀的测试开发工程师,我觉得下面这篇文章涉及到的是我们需要的,稍微进行改动https://blog.csdn.net/sinat_210 ...

  4. 高级测试工程师面试必问面试基础整理——python基础(一)(首发公众号:子安之路)

    现在深圳市场行情,高级测试工程师因为都需要对编程语言有较高的要求,但是大部分又没有python笔试机试题,所以面试必问python基础,这里我整理一下python基本概念,陆续收集到面试中python ...

  5. 功能测试很low?不能升级到高级测试工程师?

    功能测试很low?不能升级到高级测试工程师? 功能测试很low?功能测试很简单?功能测试就是黑盒测试?功能测试没有技术含量?功能测试工资低?只会功能测试没有竞争力?功能测试这活初中生都可以干?功能测试 ...

  6. Go测试,功能测试,性能测试,测试辅助,go test 工具,高级测试,IO相关测试,黑盒测试,HTTP测试,进程测试

    go命令教程: http://wiki.jikexueyuan.com/project/go-command-tutorial/0.5.html Go测试 第一个测试 “Hello Test!” 首先 ...

  7. 测试基础面试题 + SQL 面试题(选择题有部分答案,难度:低)

    测试基础面试题 + SQL 面试题(选择题有部分答案,难度:低) 答案: .A .C .C .A .A .D

  8. Java岗位面试题分享:jvm+分布式+消息队列+协议(已拿offer)

    个人近期面试情况 今年二月以来,我的面试除了一个用友的,基本其他都被毙了,可以说是非常残酷的.其中有很多自己觉得还面的不错的岗位,比如百度.跟谁学.好未来等公司.说实话,打击比较大. 情况基本上是从三 ...

  9. 一次测试岗位针对Java和接口的面试题

    1.post和get的区别? 1. get是从服务器上获取数据,post是向服务器传送数据.2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在UR ...

随机推荐

  1. Linux下安装FTP服务(Ubuntu)

    在Ubuntu 14.04 上安装 FTP 服务 第一步>>更新库 linuxidc@linuxidc:~$ sudo apt-get update 第二步>>采用如下命令安装 ...

  2. js 简单算法

    1. 嵌套数组打平并且去重 ,,,,,,,,[,,,,[,,]]]; var obj = {};//去重标识 function test(data) { var newArr = []; for ( ...

  3. visio交叉线不凸起

    使用visio作图时,经常会遇到交叉线在相交时会形成一个弯曲弓形,这有时十分影响视图效果.可以采用下面的方法消除弓形. 1.visio2003:只需要选中该交叉线,选择“格式”->“行为”,在打 ...

  4. 多媒体基础知识之PCM数据《 转》

    多媒体基础知识之PCM数据 1.什么是PCM音频数据 PCM(Pulse Code Modulation)也被称为脉冲编码调制.PCM音频数据是未经压缩的音频采样数据裸流,它是由模拟信号经过采样.量化 ...

  5. ABAP-折叠窗口

    1.测试 2.代码 *&---------------------------------------------------------------------* *& Report ...

  6. Python 百分号字符串拼接

    # %s可以接收一切 %d只能接收数字 msg = 'i am %s my hobby is %s' %('lhf','alex') print msg msg2 = 'i am %s my hobb ...

  7. Runloop原理

    简单的说,runloop是一个事件循环的机制,同时能够保活线程.iOS中每个线程都对应一个runloop,主线程的runloop默认开启,其他线程的runloop默认关闭,线程与runloop是一一对 ...

  8. windows7 安装虚拟机,xsheel连接不上的问题,记录一下

    安装了好久,一直连接不上...,原来是网络没开..重新安装设置就可以了!!!记录一下

  9. Erlang Error Records

    1.No match of right hand value ... Erlang变量名需要以大写开头.

  10. Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter

    在上一篇文章中Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream介绍了缓冲流中的字节流,而这一篇着重介绍缓冲流中字符流Buffered ...