1、maven有什么作用?

最常用的maven相关功能大概以下几种:

a、 管理jar依赖

b、 构建项目(打包、编译等)

c、 发布项目(共享、上传至服务器,供他人使用)

Maven用配置文件的方式对项目的描述、名称、版本号、项目依赖等等信息进行描述。

Maven利用“约定大于配置”的思想,使项目构建省去很多复杂的配置。Maven提供了仓库的概念,使依赖于其他的项目和第三方的组件放入仓库进行管理。

2、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)

3、springmvc是做什么的?

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

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

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

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

字符串拼接的三种方法

① 加号

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 保证线程安全 。

6、static的作用范围

定义全局静态变量 :在全局变量前面加上关键字static,该全局变量变成了全局静态变量。

全局静态变量有以下特点:

(1)在全局数据区内分配内存
(2)如果没有初始化,其默认值为0
(3)该变量在本文件内从定义开始到文件结束可见

定义局部静态变量:在局部静态变量前面加上关键字static,该局部变量便成了静态局部变量。

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

定义静态方法:在方法的返回类型加上static关键字,方法即被定义成静态方法。

静态方法有以下特点:

静态方法只能在本源文件中使用由new产生的动态数据存放在堆区

方法内部的变量存放在栈区。

方法的变量一般会随着方法的退出而释放空间,

静态数据(静态全局变量、函数内部的静态局部变量)存放在全局数据区。

全局数据区的数据并不会因为方法的退出而释放空间。

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

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

kill 结束某一进程
kill 2868 结束pid为2868的进程
kill -9 2868 强制结束pid为2868的进程

8、如果数据库占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;

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

语句:select count(*) from tablename

分组查询:SELECT deptno, AVG(sal), MAX(sal) FROM emp GROUP by deptno HAVING AVG(sal) < 2000;

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

left join(左联接) ,返回包括左表中的所有记录和右表中联结字段相等的记录

right join(右联接) ,返回包括右表中的所有记录和左表中联结字段相等的记录

inner join(等值连接) ,只返回两个表中联结字段相等的行

11、Springboot和Spring有什么区别和联系?

SpringBoot 是基于Spring4的条件注册的一套快速开发整合包

Spring框架需要进行大量的配置,SpringBoot实现了自动配置,降低了spring项目搭建的复杂度。不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。

Springboot和Spring框架紧密结合用于提升Spring开发者体验的工具。同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),SpringBoot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box),大部分的Spring Boot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。

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

ArrayList数组列表:

新增数据时,当空间不足时,重新申请一个双倍空间的数组,然后将原来数组中的内容,拷贝到新的数组中,然后将新的值添加进去。过程繁琐。

删除数据是中间内容时,需要将后续的内容向前拷贝转移。过程繁琐。

查询数据时,连续的内存空间,直接按照索引值即可查到。过程简单。

LikedList 链表:

新增数据时,链表不会存在空间不足的情况,每当添加一个数据项时,都会创建一个节点,然后设置节点的。前后连接,设置节点的值。过程简单。

删除中间节点时,只需要将前后节点的引用重新赋值即可。过程简单。

查询,需要从第一个节点,逐个的往后查询,最终到达目标索引。过程繁琐。

链表由于要维护前后的连接,所以占用的空间比较大

结论:

ArrayList方便查询,占用空间小。LinkedList方便添加删除等修改操作,占用空间大。

对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。

对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。新增在末尾就是ArrayList比LinkedList快,如果在最前面就是LinkedList比ArrayList快。

若只对单条数据插入或删除,ArrayList的速度反而优于LinkedList。但若是批量随机的插入删除数据,LinkedList的速度大大优于ArrayList. 因为ArrayList每插入一条数据,要移动插入点及之后的所有数据。

13、Jmeter结构体系及运行原理?

把Jmeter的结构体系拆分为三维空间,如图:

X1~X5****:是负载模拟的一个过程,使用这些组件来完成负载的模拟;
X1:选择协议,模拟用户请求,检查服务器响应是否正确,然后收集结果信息;
X2:完善测试脚本部分,包括参数化,关联等;
X3:控制测试脚本业务逻辑;
X4:集合点,模拟用户并发;
X5:用户数,一个线程代表一个用户;
Y1****:可以理解为选择协议,包含负载模拟部分,负责模拟用户请求;
Y2****:可以理解为检查点,结果验证部分,负责验证结果正确性;
Z****:可以理解为监控器,负责结果的收集,监听器不仅可以放在线程组之内,也可以放在线程组之外;

Jmeter运行原理:

Jmeter基本原理是建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过断言来验证结果的正确性,可以通过监听来记录测试结果;

如果取样器中有参数化需求,可以通过配置元件或者前置处理器来完成;
如果取样器中有关联需求,可以通过后置处理器来完成;
如果要模拟负载场景,比如模拟多少用户,运动多长时间,可以通过线程组完成;

如果要模拟并发场景,可以通过定时器来完成;
如果要控制业务的执行逻辑,比如登录只运行一次,可以通过控制器来完成;

14、Maven和Ant 有什么区别?

同点:都是项目构建管理工具。

不同点有:

1、Maven约定了目录结构,而Ant没有。

2、Maven是申明式的,用pom.xml文件;而Ant是程序式的,构建过程需要自定义,用builder.xml.

3、Maven是有生命周期的,而Ant没有。

4、Maven内置依赖管理和Repository来实现依赖的管理和统一存储;而Ant没有。Maven第一次install的时候会把依赖的jar包和构件从远处库(又叫中央库,统一存储maven可以解释的文件资源)下载到本地库(先从本地仓库找)。Maven还可以管理传递依赖。

5、Maven配置比较简单,有很多的约定、规范、标准,可以用较少的代码干更多的事;而Ant配置比较麻烦,需要配置整个构建的过程(但Ant配置灵活)。

15、UI自动化之selenium元素定位不到问题的原因有哪几种?

1.动态id定位不到元素

2.iframe原因定位不到元素

3.不在同一个frame里边查找元素

4.xpath描述错误

5.点击速度过快 页面没有加载出来就需要点击页面上的元素

6.firefox安全性强,不允许跨域调用出现报错

16、Jenkins常用插件有哪些?

Jenkins常用插件汇总:

Build-timeout Plugin:任务构建超时插件

Naginator Plugin:任务重试插件

Build User Vars Plugin:用户变量获取插件

Build Pipeline Plugin View :Pipeline 管道流图表展示插件

Build Flow Plugin:工作流插件,支持DSL脚本定义工作流

Build Graph View Plugin:build Flow插件视图(安装后需要重新才能生效)

Multijob Plugin:多任务插件

Build-timeout Plugin:job构建超时插件

Build Timestamp Plugin :任务log时间戳插件,使得job log的每次输出前面都增加当时的时间

Parameterized Trigger Plugin:这是一个扩展型的插件,使各个job连接的时候可以传递一些job相关的信息

Join Plugin:这也是一个触发job的插件,亮点在于它触发job的条件是等待所有当前job的下游的job都完成才会发生。

Files Found Trigger:检测指定的目录,如果发现指定模式的文件则启动build。

BuildResultTrigger Plugin:根据其他的job的成功或失败来启动此build。

Publish Over SSH Plugin:通过ssh发布文件

Rebuild Plugin:重新执行插件

ws-cleanup Plugin :workspace清理插件

Cron Column Plugin: 通过定时任务例行的运行一些job

Job Configuration History Plugin:使用心得:使job具备版本管理的能力,diff和rollback功能更是非常赞

HTTP Request Plugin:使用心得:在构建前后可以通过该插件以http形式调用各种api接口实现和内部系统的联动

Periodic Backup:使用心得:备份是运维一个系统必须要保障的事情,该插件的恢复功能可能不可用,需要手工进行,好处在于可以定时备份

Job Import Plugin:使用心得:可以快速导入其他jenkins集群的已有job,需要认证的jenkins系统导入需要提供凭证才可以

Status Monitor Plugin:构建状态插件

Build Monitor View :使用心得:基于该插件可以实现dashboard功能

Build Environment Plugin:构建环境插件,可以进行构建环境比较。

FTP插件:

Monitoring:Monitoring of Jenkins

基础依赖插件:

jQuery Plugin:jQuery插件

17、内联接和外联接的区别

内连接,也被称为自然连接,只有两个表相匹配的行才能在结果集中出现。返回的结果集选取了两个表中所有相匹配的数据,舍弃了不匹配的数据。由于内连接是从结果表中删除与其他连接表中没有匹配的所有行,所以内连接可能会造成信息的丢失。内连接语法如下:

select fieldlist from table1 inner join table2.column

内连接是保证两个表中所有行都满足连接条件,而外连接则不然。外连接,不仅包含符合连接条件的行,还包含左表(左连接时)、右表(右连接时)或两个边接表(全外连接)中的所有数据行。

SQL外连接共有三种类型:左外连接(关键字为LEFT OUTER JOIN)、右外连接(关键字为RIGHT OUTER JOIN)和全外连接(关键字为FULL OUTER JOIN)。

内连接只显示符合连接条件的记录,外连接除了显示符合条件的记录外,还显示表中的记录,例如,如果使用左外连接,还显示左表中的记录。

最后: 可以关注公众号:伤心的辣条 ! 进去有许多资料共享!资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

面试被问:Selenium元素定位不到问题,如何回答?相关推荐

  1. python xpath定位打印元素_python基础教程:8种selenium元素定位的实现

    前言 selenium是一个非常厉害的爬虫利器,不,简直是神器了,它可以自动的控制浏览器,但是你得告诉浏览器,你想干嘛,爬哪里,这时候就要用到元素定位了,在HTML中都有着不同的标签和属性,selen ...

  2. java8种定位_python基础教程:8种selenium元素定位的实现

    前言 selenium是一个非常厉害的爬虫利器,不,简直是神器了,它可以自动的控制浏览器,但是你得告诉浏览器,你想干嘛,爬哪里,这时候就要用到元素定位了,在HTML中都有着不同的标签和属性,selen ...

  3. Selenium元素定位方法大全

    目录 一.背景 二.浏览器定位元素 三.Selenium元素定位代码 3.1 通过id定位 3.2 通过class定位 3.3 通过name定位 3.4 通过tagname定位 3.5 通过link_ ...

  4. 解决selenium版本过时 和 selenium - 元素定位

    # selenium模板# @Time : 2022/6/29 16:40# (1)导入selenium from selenium import webdriver from selenium.we ...

  5. 面试时,如果面试官问你怎样看待加班,应该怎么回答?

    面试时,如果面试官问你怎样看待加班,应该怎么回答? 2011-12-20 08:36 浮云401  | 来自 手机知道    |  分类:电脑/网络  |  浏览3377次 面试时,如果面试官问你怎样 ...

  6. 计算机往届生考研失败找工作,考研考了四年,一直没考上.现在找工作,面试官问起过去几年在干什么,该怎么回答啊?...

    考研考了四年,一直没考上.现在找工作,面试官问起过去几年在干什么,该怎么回答啊?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一 ...

  7. python selenium 元素定位_python3+selenium入门04-元素定位

    我们在对浏览界面做操作时,比如点击按钮,搜索框输入内容.都需要把鼠标挪过去,然后再点击,或者输入内容.在selenium操作时也是一样的.需要先对元素进行定位,然后才能进行操作.可以借助浏览器的开发者 ...

  8. CssSelector之selenium元素定位

    CssSelector是我最喜欢的元素定位方法,Selenium官网的Document里极力推荐使用CSS locator,而不是XPath来定位元素,原因是CSS locator比XPath loc ...

  9. python学习的一个定位_python学习之——selenium元素定位

    web自动化测试按步骤拆分,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告. 其中定位元素尤为关键,此篇是使用webdriver通过页面各个 ...

最新文章

  1. 安装node.js 附带node.js以及npm初步认识 设置淘宝/npm镜像 命令
  2. C#中Split函数的使用
  3. mysql-connector-net不同版本下载
  4. ElasticSearch2.3.1环境搭建哪些不为人知的坑
  5. 笔记本多硬盘win7下U盘安装Cnetos7引导问题!
  6. adb devices 里面有很多 emulator-XXXX的解决方法
  7. python列表生成器语法_python列表生产式和生成器
  8. 利用ISCSI存储技术构建IP存储网络(实战篇)
  9. 大表哥有个项目,100W预算,让我顺手做了算了......
  10. linux if 判断文件,shell中的逻辑判断,if 判断文件、目录属性,if判断的一些特殊用法...
  11. 林亦杉厦门大学计算机学院,挥别厦大,点燃未来-厦门大学计算机科学系
  12. 西游记的四种性格和生活的人
  13. 阿里云神龙团队拿下TPCx-BB排名第一的背后技术是什么?
  14. python教程10-列表的基本使用、列表增加元素、列表的改查删、列表遍历
  15. 篮球队编程题(Java)
  16. codevs3147 矩阵乘法 2 (推导小公式)
  17. Scrapy Spider中间件,你学会了吗?本篇博客有一案例
  18. 孙悟空:越风光,越可怜
  19. 【无标题】中国电信5G技术大规模天线技术
  20. 英利分布式:国内最高光伏空调3大亮点引关注

热门文章

  1. python 构造函数_Python和其他编程语言的代码对比
  2. mysql进程异常_关于MySQL-Proxy子进程异常退出BUG修复
  3. VC输出调用出错信息
  4. python查找多个关键词,在字符串列表中搜索多个关键字
  5. Excel控件 Spire.XLS系列教程(2):C# 设置现有 Excel 图表的数据标签样式
  6. 药师帮完成1.33亿美元D轮融资,投资方为老虎环球基金、H Capital和DCM...
  7. 入门系列之使用fail2ban防御SSH服务器的暴力破解攻击 1
  8. mongodb创建集合与php扩展
  9. boost boost::asio::read socket.read_some 区别
  10. ruby学习--block