面试宝典:性能测试经典面试题(二)
yuyutoo 2024-10-15 16:58 2 浏览 0 评论
2021性能测试经典面试题及答案二,上一期我们公布了性能测试经典面试题的第一部分,本期我们继续更新性能测试经典面试题的第二部分。
二十六:通常有哪些方法可以减少资源的大小
通过可以使用以下方法来减少资源的大小:
- gzip压缩
- js混淆
- css压缩
- 图片压缩
二十七:为什么使用外联CSS或JavaScript, 而不使用内联的
外联CSS或JavaScript的优点
- 如果JavaScript和CSS被多个页面调用时,这样修改更方便,只要修改一个文件就可以。
- 分离HTML、CSS和Javascript可以更容易操纵它们,方便协同工作。
- 外置Javascript文件可以被浏览器缓存。
二十八:如何减少HTTP请求
减少HTTP请求通常有以下方法:
- 内联图片
- CSS Sprites
- 合并脚本与样式
- 图上映射
二十九:为什么JavaScript建议放在底部
将JavaScripte放在底部的目的是防止JavaScript禁止浏览器并行下载的功能。
一般来浏览器都有并行下载组件的功能
01、FireFox设置并发下载的方法:
在URL地址中输入about:config进行设置参数界面
02、有以下三个参数是可以用来设置下载组件
- network.http.max-connections:表示最大连接数
- network.http.keep-alive.timeout:表示保持长连接的超时时间
- network.http.max-persistent-connections-per-server:表示支持的最大并发连接数,默认值为6。
03、chrome设置并发下载的方法:
- 在URL地址中输入chrome://flags/进行设置参数界面
- Parallel downloading选项用于设置是否开始并行下载
- 常见浏览器支持并行下载组件的值
三十:为什么将CSS放在顶部
将CSS放在顶部的优点如下:
- 第一:可以让用户知道系统没有崩溃,只是正在为他或她解决问题;
- 第二:它们指出了用户大概还需要等多久可以加载完成,以便用户能够在漫长的等待中做些其它的事情;
- 第三:能给用户提供一些可以看的东西,使用得等待不再是那么无聊。
三十一:如何避免避免重定向
尽量减少重定向方法如下:
删除并非绝续需要的重定向
目录后面带上斜扛
- http://example.com/foo/表示目录。
- http://example.com/foo表示文件。
重定向不仅仅是对HTML文件在发现重定向时不仅仅是HTML文件会发现重定向,对JS、CSS等其它的组件也可能发现重定向检查旧的重定向有时一些旧的重定向还存在着,没有被删除,这种情况也会影响性能删除不需要的重定向清理重定向链。
三十二:如何减少DOM节点数
DOM(HTML Document object Model)是专门适用于HTML/XHTML的文档对象模型,定义了访问和操作HTML文档的标准方法,通常我们也可以将HTML DOM理解为网页的API。HTML DOM将网页中的各个元素都看作为对象,这样可以让网页中的元素被计算机语言获取或者编辑。
HTML DOM树
如果需要对元素的属性进行修改,那么javascript就必须对这个结构树进行遍历,如果这个结构的节点越多,那么遍历的时间就会越长。所以正常情况下我们希望这个DOM节点尽量少,这样可以节约遍历的时间。
使用以下命令可以获取到DOM节点数:
document.getElementsByTagName('*').1 length
减少DOM数的方法通常有以下几种:
- 避免不正确地使用服务器控件。
- 减少不必要的页面内容。
- 如果数据量大,可以考虑分页,或者按需加载。
- 最小化DOM深度。
三十三:HTTP协议接口性能使用的函数
web_submit_data函数和web_custom_request函数
三十四:什么是Apache虚拟主机
虚拟主机部分包含网站名称、文档根目录、目录索引、服务器管理电子邮件、错误日志文件位置等信息。ServerAdmin webmaster@dummy-host.example.comDocumentRoot /www/docs/dummy-host.example.comServerName dummy-host.example.comErrorLog logs/dummy-host.example.com-error_logCustomLog logs/dummy-host.example.com-access_log common
三十五:什么是Apache中的MPM
- MPM:Multi-Processing Module(多通路处理模块)MPM处理的模式有很多种:prefork MPM、worker MPM、BeOS MPM、NetWare MPM、OS/2MPM、WinNT MPM 类UNIX常用的模块有三种:prefork 、worker 、event
- 三十六:Apache中Worker MPM与Prefork MPM区别
worker模块工作原理
prefork工作原理
三十七:MPM模块调优常见的相关参数有哪些
MPM模块常见的相关参数包括:
MaxSpareServers、MinSpareServers、ServerLimit、StartServers、ThreadsPerChild、MaxConnectionsPerChild 、MaxRequestWorkers、ListenBackLog、ListenCoresBucketsRatio、MaxMemFree和ReceiveBufferSize。
三十八:Apache中限制上传指令
LimitRequestBody指令用于限制上传字节数的大小
LimitRequestBody 100000
三十九:如何监控Apache服务器
使用status和apachetop来监控apache服务器
四十:Apache调优常见的方法
01、运行时的配置主要涉及到的相关模块为:
mod_dir、mpm_common、mod_status,
02、涉及到的相关指令为:
AllowOverride、HostnameLookups、DirectoryIndex、EnableMMAP、EnableSendfile、KeepAliveTimeout、MaxSpareServers、MinSpareServers、Options、StartServers。
03、编译时的配置主要涉及到的设置有:
MPM配置、模块、原子操作、mod_status、多socket性况下串行accept、单socket性况下串行accept、延迟关闭、Scoreboard文件和DYNAMIC_MODULE_LIMIT。
四十一:Tomcat内置Web容器名称是什么
Tomcat中内置Web容器的名称是Catalina,它位于bin目录中。Catalina用于加载所有与HTTP相关的请求,可以实例化GET()和POST()方法的对象。
四十二:Tomcat连接类型
Tomcat主要有两种连接类型:
a、HTTP连接器:HTTP连接器拥有可以修改的属性,以确定它的工作方式和访问功能,如重定向和代理转发。
b、AJP连接器:AJP连接器遵循A JP协议代替HTTP,但工作方式与HTTP连接器相同。它们通过插件技术mod_jk在Apache Tomcat中实现。
四十三:Tomcat是否可对对经常查看的文件设置缓存
是的,有可能通过使用Mod_file_cache模块来实现
四十四:Tomcat中默认会话超时时间是多少
默认是30min
四十五:什么是Jasper
Jasper是Tomcat JSP的引擎,它将JSP文件作为servlet传递给Java代码进行编译。随着运行时间的推移,它会检测JSP文件中的所有更改并经常重新编译它们。Jasper也是Java服务器页面处理程序,它在内部处理必要的编译。
四十六:Tomcat中如何配置多个虚拟主机
在server.xml文件中添加以下代码
在Catalina下面创建一个ROOT.xml文件,并添加以下代码path="/"docBase="www/deploy/mywebapp.war"reloadable="true" antiJARLocking="true">
将war文件放入${catalina.home}/www/deploy中
四十七:Tomcat Connector运行模式
Tomcat Connector有三种运行模式:
bio(blocking I/O)、nio(non-blocking I/O)和APR Connector在处理HTTP请求时,会使用不同的protocol。
不同的Tomcat版本支持的protocol不同,其中最典型的protocol包括BIO、NIO和APR(Tomcat7中支持这3种,Tomcat8增加了对NIO2的支持,而到了Tomcat8.5和Tomcat9.0,则去掉了对BIO的支持)。
BIO是Blocking IO,顾名思义是阻塞的IO;NIO是Non-blocking IO,则是非阻塞的IO。而APR是Apache Portable Runtime,是Apache可移植运行库,利用本地库可以实现高可扩展性、高性能;Apr是在Tomcat上运行高并发应用的首选模式,但是需要安装apr、apr-utils、tomcat-native等包。
在以下代码中可以设置Connector运行模式:
org.apache.coyote.http11.Http11Protocol:BIOorg.apache.coyote.http11.Http11NioProtocol:NIOorg.apache.coyote.http11.Http11Nio2Protocol:NIO2org.apache.coyote.http11.Http11AprProtocol:APRprotocol="org.apache.coyote.http11.Http11NioProtocol"connectionTimeout="20000"redirectPort="8443maxThreads=“500”minSpareThreads=“100”maxSpareThreads=“200”acceptCount="200"enableLookups="false"/>
四十八:Tomcat如何监控
可以使用status或第三方式工具,如probe进行监控
四十九:Tomcat线程池如何设置
Tomcat线程池有如下参数:
- maxThreads, 最大线程数,tomcat能创建来处理请求的最大线程数
- maxSpareTHreads, 最大空闲线程数,在最大空闲时间内活跃过,但现在处于空闲,若空闲时间大于最大空闲时 间,则回收,小于则继续存活,等待被调度。
- minSpareTHreads,最小空闲线程数,无论如何都会存活的最小线程数acceptCount, 最大等待队列数 ,请求并发大于tomcat线程池的处理能力,则被放入等待队列等待被处理。
- maxIdleTime, 最大空闲时间,超过这个空闲时间,且线程数大于最小空闲数的,都会被回收port="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"acceptCount="1000"/>
五十:JVM内存模型
- 程序计数器:程序计数器是一块很小的内存空间,它是线程私有的,可以认作为当前线程的行号指示器。
- Java栈(虚拟机栈):同计数器也为线程私有,生命周期与相同,就是我们平时说的栈,栈描述的是Java方法执行的内存模型。
- 本地方法栈:本地方法栈是与虚拟机栈发挥的作用十分相似,区别是虚拟机栈执行的是Java方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的native方法服务,可能底层调用的c或者c++,我们打开jdk安装目录可以看到也有很多用c编写的文件,可能就是native方法所调用的c代码。
- 堆:对于大多数应用来说,堆是java虚拟机管理内存最大的一块内存区域,因为堆存放的对象是线程共享的,所以多线程的时候也需要同步机制。
- 方法区:方法区同堆一样,是所有线程共享的内存区域,为了区分堆,又被称为非堆。用于存储已被虚拟机加载的类信息、常量、静态变量,如static修饰的变量加载类的时候就被加载到方法区中。
本期的性能测试面试题以及答案的第二部分就到这里,下期继续更新第三部分。
相关推荐
- jQuery VS AngularJS 你更钟爱哪个?
-
在这一次的Web开发教程中,我会尽力解答有关于jQuery和AngularJS的两个非常常见的问题,即jQuery和AngularJS之间的区别是什么?也就是说jQueryVSAngularJS?...
- Jquery实时校验,指定长度的「负小数」,小数位未满末尾补0
-
在可以输入【负小数】的输入框获取到焦点时,移除千位分隔符,在输入数据时,实时校验输入内容是否正确,失去焦点后,添加千位分隔符格式化数字。同时小数位未满时末尾补0。HTML代码...
- 如何在pbootCMS前台调用自定义表单?pbootCMS自定义调用代码示例
-
要在pbootCMS前台调用自定义表单,您需要在后台创建表单并为其添加字段,然后在前台模板文件中添加相关代码,如提交按钮和表单验证代码。您还可以自定义表单数据的存储位置、添加文件上传字段、日期选择器、...
- 编程技巧:Jquery实时验证,指定长度的「负小数」
-
为了保障【负小数】的正确性,做成了通过Jquery,在用户端,实时验证指定长度的【负小数】的方法。HTML代码<inputtype="text"class="forc...
- 一篇文章带你用jquery mobile设计颜色拾取器
-
【一、项目背景】现实生活中,我们经常会遇到配色的问题,这个时候去百度一下RGB表。而RGB表只提供相对于的颜色的RGB值而没有可以验证的模块。我们可以通过jquerymobile去设计颜色的拾取器...
- 编程技巧:Jquery实时验证,指定长度的「正小数」
-
为了保障【正小数】的正确性,做成了通过Jquery,在用户端,实时验证指定长度的【正小数】的方法。HTML做成方法<inputtype="text"class="fo...
- jquery.validate检查数组全部验证
-
问题:html中有多个name[],每个参数都要进行验证是否为空,这个时候直接用required:true话,不能全部验证,只要这个数组中有一个有值就可以通过的。解决方法使用addmethod...
- Vue进阶(幺叁肆):npm查看包版本信息
-
第一种方式npmviewjqueryversions这种方式可以查看npm服务器上所有的...
- layui中使用lay-verify进行条件校验
-
一、layui的校验很简单,主要有以下步骤:1.在form表单内加上class="layui-form"2.在提交按钮上加上lay-submit3.在想要校验的标签,加上lay-...
- jQuery是什么?如何使用? jquery是什么功能组件
-
jQuery于2006年1月由JohnResig在BarCampNYC首次发布。它目前由TimmyWilson领导,并由一组开发人员维护。jQuery是一个JavaScript库,它简化了客户...
- django框架的表单form的理解和用法-9
-
表单呈现...
- jquery对上传文件的检测判断 jquery实现文件上传
-
总体思路:在前端使用jquery对上传文件做部分初步的判断,验证通过的文件利用ajaxFileUpload上传到服务器端,并将文件的存储路径保存到数据库。<asp:FileUploadI...
- Nodejs之MEAN栈开发(四)-- form验证及图片上传
-
这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能。开始之前需要源码同学可以先在git上fork:https://github.com/stoneniqiu/R...
- 大数据开发基础之JAVA jquery 大数据java实战
-
上一篇我们讲解了JAVAscript的基础知识、特点及基本语法以及组成及基本用途,本期就给大家带来了JAVAweb的第二个知识点jquery,大数据开发基础之JAVAjquery,这是本篇文章的主要...
- 推荐四个开源的jQuery可视化表单设计器
-
jquery开源在线表单拖拉设计器formBuilder(推荐)jQueryformBuilder是一个开源的WEB在线html表单设计器,开发人员可以通过拖拉实现一个可视化的表单。支持表单常用控件...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)