软件测试面试题汇总(三)

作者: 乘风破浪的姐姐 | 来源:发表于2018-07-13 16:37 被阅读134次
    1、get和post区别

    https://blog.csdn.net/q179886903/article/details/52741327

    2、Post传递的参数有哪些

    https://blog.csdn.net/yuanjw2014/article/details/52792338

    3、maven有什么作用
      最常用的maven相关功能大概以下几种: 
          a、 管理jar依赖 
          b、 构建项目(打包、编译等) 
          c、 发布项目(共享、上传至服务器,供他人使用)
    

    Maven用配置文件的方式对项目的描述、名称、版本号、项目依赖等等信息进行描述
    Maven利用“约定大于配置”的思想,使项目构建省去很多复杂的配置。 Maven提供了仓库的概念,使依赖于其他的项目和第三方的组件放入仓库进行管理

    4、maven打包命令及插件,可以打哪种类型的包

    maven管理构建时,可以将项目打成 jar、war、zip、tar.gz等
    打包命令:
    jar :mvn clean install -Dmaven.test.skip=true
    说明:clean是清除之前的jar包,install是打包到本地(如果用deploy,是打包到远程仓库),-Dmaven.test.skip=true是忽略测试代码;
    war:mvn clean package -Dmaven.test.skip=true
    tar.gz : mvn package -DskipTests (使用到test-assembly.xml,在pom.xml文件中使用maven-assembly-plugin插件引用test-assembly.xml)

    5、springmvc是做什么的

    springMVC是spring的一个后续产品,其实就是spring在原有基础上,又提供了web应用的MVC模块,可以简单的把springMVC理解为是spring的一个模块(类似AOP,IOC这样的模块)


    image.png
    6、为什么要使用springMVC和spring

    https://blog.csdn.net/Melod_bc/article/details/53414900

    7、spring的IOC和AOP如何使用

    http://www.cnblogs.com/zmmi/p/7922186.html

    8、接口,类,抽象类的区别

    抽象类和接口的对比


    image.png

    抽象类和普通类
    普通类可以去实例化调用;抽象类不能被实例化,因为它是存在于一种概念而不非具体。
    普通类和抽象类都可以被继承,但是抽象类被继承后子类必须重写继承的方法,除非自类也是抽象类。

    9、字符串拼接使用哪种方法效率高

    字符串拼接的三种方法
    ① 加号
    String str = "My name is ";
    str = str + "JTZen9";
    这种方法,编译器对字符串的加号做了优化,它会使用StringBuilder的append方法进行追加,而它最终通过toString方法转换成String字符串。
    相当于 str = new StringBuilder(str).append(“JTZen9”).toString();
    它与纯粹地使用StringBuilder的append方法是不同的:
    每趟循环都会创建一个StringBuilder对象
    每次执行完毕都会调用toString方法将其转换为字符串
    所以,就耗费时间长
    ② concat方法
    String str = "My name is ";
    str = str.concat("JTZen9");
    如果循环追加的话,每次concat操作都会创建一个新的String对象,就耗费时间
    ③ StringBuilder(或StringBuffer)的append方法
    StringBuffer str = new StringBuffer("My name is ");
    str.append("JTZen9");
    如果循环追加的话,整个append方法都在做字符数组的处理,加长,拷贝等,这些都是基本的数据处理,整个方法内并没有生成对象。只是最后toString返回一个对象而已。所以耗费时间短。
    总结:
    a、String类本身是final类型,字符串拼接时,会使用StringBuffer,并调用append,之后再调用toString方法。而StringBuffer转换成String时,开销相当大。中间不仅创立了临时对象StringBuffer,还每次完后再要转成String。
    b、在做字符串连接时,String类的concat方法优于+号。 ( String += ) 与 ( String = String + ) 相率相当。
    c、而 StringBuilder的出现就是用来替换StringBuffer的,但不适宜于多线程编程。StringBuilder 在单线程编程情况下应优先于StringBuffer使用,而在多线程编程时则应使用StringBuffer,不宜使用StringBuilder 。
    d、单线程情况下做字符串连接,StringBuilder.append 与 StringBuffer.append 效率相当。
    所以,在进行单线程大量数据拼接时候两者皆可,进行多线程拼接数据使用 StringBuffer 保证线程安全 。

    10、static的作用范围

    定义全局静态变量 :在全局变量前面加上关键字static,该全局变量变成了全局静态变量。全局静态变量有以下特点:
    (1)在全局数据区内分配内存
    (2)如果没有初始化,其默认值为0
    (3)该变量在本文件内从定义开始到文件结束可见

    定义局部静态变量:在局部静态变量前面加上关键字static,该局部变量便成了静态局部变量。静态局部变量有以下特点:
    (1)该变量在全局数据区分配内存
    (2)如果不显示初始化,那么将被隐式初始化为0
    (3)它始终驻留在全局数据区,直到程序运行结束
    (4)其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。

    定义静态方法:在方法的返回类型加上static关键字,方法即被定义成静态方法。静态方法有以下特点:
    (1)静态方法只能在本源文件中使用

    对于一个完整的程序,在内存中的分布情况如下图:
    代码区 、全局数据区 、堆区 、栈区
    由new产生的动态数据存放在堆区
    方法内部的变量存放在栈区。方法的变量一般会随着方法的退出而释放空间,
    静态数据(静态全局变量、函数内部的静态局部变量)存放在全局数据区。全局数据区的数据并不会因为方法的退出而释放空间。

    11、Linux 修改文件权限,用户权限分几个组,文件有哪些权限,查看日志命令,查看日志文件中错误信息命令,查看、结束进程命令

    ps 正在运行的某个进程的状态
    ps -ef 查看所有的进程
    ps -ef | grep 2868 查看pid为2868的进程

    kill 结束某一进程
    kill 2868 结束pid为2868的进程
    kill -9 2868 强制结束pid为2868的进程
    Linux 常用命令

    12、如果数据库占cpu过高,如何解决

    1)进入mysql的安装所在服务器(linux),输入命令:mysql -u root -p
    2)用root用户进入mysql管理,输入密码
    3)查找负荷最重的 SQL 语句,输入命令:mysql:show processlist
    输出结果显示了有哪些线程在运行
    4)优化负荷最重的sql
    5)针对连接超时的sql优化,可以先查看连接超时秒数
    输入命令:SHOW GLOBAL VARIABLES LIKE 'wait_timeout';
    设置超时时间30秒,如果某个连接超时,会被mysql自然终止。
    SET GLOBAL wait_timeout=30;

    13、sql:查询某个表中有多少条数据,分组使用哪个关键字

    语句:select count(*) from tablename
    分组查询:SELECT deptno, AVG(sal), MAX(sal) FROM emp GROUP by deptno HAVING AVG(sal) < 2000;
    https://blog.csdn.net/guishufuhao/article/details/52404148

    14、sql,表的关联使用哪个关键字,join...on是left join 还是right join ? left...join 与 right...join有什么区别?

    left join(左联接) ,返回包括左表中的所有记录和右表中联结字段相等的记录
    right join(右联接) ,返回包括右表中的所有记录和左表中联结字段相等的记录
    inner join(等值连接) ,只返回两个表中联结字段相等的行

    15、ssh框架中,各部分分别做什么用

    https://blog.csdn.net/qq_34781336/article/details/79296050

    16、Springboot和Spring有什么区别和联系

    SpringBoot 是基于Spring4的条件注册的一套快速开发整合包
    Spring框架需要进行大量的配置,SpringBoot实现了自动配置,降低了spring项目搭建的复杂度。
    不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序.
    Springboot和Spring框架紧密结合用于提升Spring开发者体验的工具。同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),SpringBoot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box),大部分的Spring Boot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。
    springboot的简单应用:http://blog.51cto.com/zero01/2095040

    17、list接口中哪个类修改,删除比较方便

    ArrayList数组列表:
    新增数据时,当空间不足时,重新申请一个双倍空间的数组,然后将原来数组中的内容,拷贝到新的数组中,然后将新的值添加进去。过程繁琐。
    删除数据是中间内容时,需要将后续的内容向前拷贝转移。过程繁琐。
    查询数据时,连续的内存空间,直接按照索引值即可查到。过程简单。
    LikedList 链表:
    新增数据时,链表不会存在空间不足的情况,每当添加一个数据项时,都会创建一个节点,然后设置节点的。前后连接,设置节点的值。过程简单。
    删除中间节点时,只需要将前后节点的引用重新赋值即可。过程简单。
    查询,需要从第一个节点,逐个的往后查询,最终到达目标索引。过程繁琐。
    链表由于要维护前后的连接,所以占用的空间比较大
    结论:
    ArrayList方便查询,占用空间小。LinkedList方便添加删除等修改操作,占用空间大。
    对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。
    对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。新增在末尾就是ArrayList比LinkedList快,如果在最前面就是LinkedList比ArrayList快
    若只对单条数据插入或删除,ArrayList的速度反而优于LinkedList。但若是批量随机的插入删除数据,LinkedList的速度大大优于ArrayList. 因为ArrayList每插入一条数据,要移动插入点及之后的所有数据

    18、selenium自动化,如何管理case

    testng

    19 、如何规范小开发公司的测试流程?

    https://www.zhihu.com/question/33406353

    相关文章

      网友评论

        本文标题:软件测试面试题汇总(三)

        本文链接:https://www.haomeiwen.com/subject/zebcpftx.html