zoukankan      html  css  js  c++  java
  • 大厂面试测试开发岗,需要准备的100道题型

    1-50题、《大厂测试开发面试50题,你能答出几道?》

    51、Web View 怎么测试?

    首先要在代码中开启webview debug
    然后输入Chrome://inspect
    然后切换driver
    获取元素控件
    如果想要在继续测试原生,则需要将driver切换回来

    52、请问你的定位策略是什么?
    web:css
    app:id

    53、请问如何实现用例失败或者异常时候需要截图?
    使用webdriver中的截图类,WebDriver有提供用于截图的TakesScreenshot类
    driver.getScreenshotAs

    54、请问如何分布式执行webdriver用例?
    方式一:利用jenkins分布式Master-slave来解决,selenium脚本不需要修改,环境部署好,可以直接跑
    方式二:利用selenium grid分布式处理,这个有介绍过点击打开链接,剩下就是把selenium grid放到jenkins里面,让jenkins去管理,这个后续一篇介绍,这种方式,driver的url要改成hud的,脚本需要稍加修改

    55、如何在脚本中执行 JavaScript 代码?
    方式一:

    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("JavaScript");
    String scriptContent = "function multiply(a,b) {return a*b;}";
    //注册脚本
    engine.eval(scriptContent);
    Invocable invocable = (Invocable) engine;
    //调用注册函数
    System.out.println(invocable.invokeFunction("multiply", 2, 3));
    

    方式二:

    //使用管道流,将输出流转为输入流
    PipedReader prd = new PipedReader();
    PipedWriter pwt = new PipedWriter(prd);
    //设置执行结果内容的输出流
    engine.getContext().setWriter(pwt);
    //js文件的路径
    String strFile = Thread.currentThread().getClass().getResource("/").getPath() + "/abc.js";
    Reader reader = new FileReader(new File(strFile));
    engine.eval(reader);
    BufferedReader br = new BufferedReader(prd);
    //开始读执行结果数据
    String str = null;
    while ((str = br.readLine()) != null && str.length() > 0) {
         System.out.println(str);
    }
    br.close();
    pwt.close();
    prd.close();
    

    56、Appium 的定位策略有哪些?
    android的定位方式:
    1.通过元素的 id 定位
    2.通过元素的 className 定位元素
    3.通过元素的 accessibility id 定位元素
    4.通过 androiduiaumator 定位元素
    5.如果选取的定位信息的值在整个界面存在多个时,可以使用 driver.findElements 方法来 定位
    6.findElementByAndroidUIAutomator
    ios的定位方式:
    1.iOSNsPredicateString
    2.iOSClassChain
    3.AccessibilityId:主要使用元素的 label 或 name 或者 value 属性进行定位
    4.className:主要使用元素的 type 属性进行定位

    57、请简述Appium的原理

    58、iOS 和 Android 的 UI 自动化的原理是什么?

    59、当定位策略都失败的时候,你该怎么做?

    80%是你元素定位的不对,那么多定位方法,一个不行换另外一个,直接不能定位,先定位父元素,再循环找子元素。一般来说XPATH都能定位到,无非是可阅读性不强。真的全部失效,请求开发帮你改个元素属性好了。

    60、UI 测试做的是 iOS 还是 Android?讲讲 iOS 的 UI 怎么测?

    61、获取 Appium 中的 content-desc 不为空的控件列表,代码不限。
    driver.find_element_by_accessibility_id('搜索或输入网址')

    62、并行运行 Appium 需要修改哪些参数
    需要改端口,多个端口
    然后在caps文件中获取多设备

    63、你如何用Selenium测试

    64、Selenium的工作原理?

    65、常见的定位方式?

    66、上传图片的几种方式?

    67、如何处理动态元素?

    找父级元素,通过父级元素查找子元素,xpath

    68、你是怎么开发测试框架的?

    69、PO模型是怎么做的?

    70、失败截图的原理是什么?

    71、你常用的命令是什么?

    72、用什么查看log?
    tail -f

    73、如何查找一个文件大小超过5M的文件
    find user -size +5000k -type f

    74、如何查看进程?
    ps -elf

    75、Linux 中查找某个文件并删除它
    find . -name '*.exe' -type f -exec rm -rf { }

    76、Linux 查询 CPU、内存的指令
    cat /proc/cpuinfo查看linux系统的CPU型号、类型以及大小
    通过greap命令根据Physical Processor ID筛选出多核CPU的信息
    cat /proc/meminfo查看linux系统内存大小的详细信息,可以查看总内存,剩余内存、可使用内存等信息。
    df -h查看linux系统各分区的使用情况
    free -m 查看linux系统内存使用量和交换区使用量

    77、使用 Shell 获取 Nginx log 中接口包含 topic 且状态码为 200 的接口平均响应时间(越严谨越好)
    cat nginx.log |grep ‘topic’ |grep ‘200’|awk -F ‘’ ‘{sum=sum+$1} END {print “sum=”,sum}’

    78、每隔 2s 获取某个进程的 CPU 和 mem 数据并保存到 csv 数据文件


    79、快排的实现 (代码实现)

    80、算数组中查找出现次数过半的数(代码实现)

    81、查找链表的倒数第三个数(代码实现)

    82、什么是面向对象编程?

    83、讲下Java多线程的使用

    84、有三个线程T1,T2,T3,怎么确保它们按顺序执行?

    85、Thread 类中的start() 和 run() 方法有什么区别
    start() 启动时用的,只调用一次
    run() 可以调用多次

    86、请写一个线程安全的单例模型
    //Initialization on Demand Holder
    public class Singleton
    {
    private static class SingletonHolder
    {
    public final static Singleton instance = new Singleton();
    }
    public static Singleton getInstance()
    {
    return SingletonHolder.instance;
    }
    }

    87、请写出冒泡排序

    88、1~9999数列中数字3出现的次数,请用递推方法解题。

    89、从一个数组中找出前4个最大的数,用最优解。

    90、写一段程序,删除字符串a中包含的字符串b,举例 输入a = “asdw”,b = “sd” 返回 字符串 “aw”,并且测试这个程序。

    91、写一个方法,把字符串转为数字,比如 str=“1234”,变成 int 1234。并且测试这个程序

    92 、A、有两个有序链表,将他们组成一个有序链表。

    93、给一个字符串,字符串里有 (){}[]“”这六个符号,设计一个算法,判断这些符号是否成对匹配,即要检验这些括号是否都是成对出现的。

    94、有两个字符串类型的数字,实现一个方法将它们进行相加,并返回相加后的数值。(要考虑数据的长度问题)

    95、Java 多线程的创建

    96、算法:二叉树的深度计算

    96、算法:一亿个无序数找出 Top 100(这个也没写好,空间复杂度高了,应该用堆排序)

    97、说下左连接和右连接
    左外连接:将左表为驱动表进行连接,结果数据包含左表全部数据,以及右表中和左表匹配的数据,左表中有,但右表中没有的数据显示null(取左边全部及右边部分数据)
    SELECT * FROM TABLE1 LEFT JOIN TABLE2 ON TABLE1.USERNAME=TABLE2.USERNAME

    右外连接:将右表为驱动表进行连接,结果数据包含右表全部数据,以及左表中和右表匹配的数据,右表中有,但左表中没有的数据显示null(取右边全部及左边部分数据)
    SELECT * FROM TABLE1 RIGHT JOIN TABLE2 ON TABLE1.USERNAME=TABLE2.USERNAME

    内连接:等值连接,返回两张表中都满足匹配条件的数据 (取两个表的交集)
    SELECT * FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.USERNAME = TABLE2.USERNAME
    SELECT * FROM TABLE1 JOIN TABLE2 ON TABLE1.USERNAME=TABLE2.USERNAME

    98、给你一张表,根据要求写sql,这个题目比较多,自己百度吧。

    99、使用sql生产10万条数据
    create table myTestTable as
    select rownum as id,
    to_char(sysdate + rownum/24/3600, 'yyyy-mm-dd hh24:mi:ss') as inc_datetime,
    trunc(dbms_random.value(0, 100)) as random_id,
    dbms_random.string('x', 20) random_string
    from dual
    connect by level <= 1000000;

    100、数据库熟吗?用过哪些数据库?索引会吗?事务了解吗?写一个SQL 查询语句:给一个字段,对其进行从大到小排序,取前十行。
    我平时的工作中会协助提高数据库的查询效率,会给数据 id 等创建索引;事务开发那边用的比较多,然后我举了 ATM 机取款的例子。SQL 语句如下
    select field from table order by field desc limit 10

    转载自:http://navo.top/FFr6Nj

    -------- THE END --------

    ????

  • 相关阅读:
    安卓:线性布局
    安卓文件的资源访问
    关于安卓的一些初步认识
    haayaGuardV0---3---手机与pc基于p2p通信
    【无中生有】---13---系统发布
    【无中生有】---12---运维与监控
    【无中生有】---11---服务器集群部署
    【无中生有】---7---分布式消息队列
    使用消息队列的 10 个理由
    【无中生有】---10---API接口日志存储设计与实现设计
  • 原文地址:https://www.cnblogs.com/finer/p/14999433.html
Copyright © 2011-2022 走看看