2018年最新JAVA面试题总结之JavaWeb(2)
转自于:https://zhuanlan.zhihu.com/p/39522575
1、tomcat的优化方式?
回答:
Tomcat的优化我准备从三方面来说:
第一部分: 内存优化
Tomcat的默认内存配置比较低,不用说大项目,就算是小项目,并发量达到一定程度也就可能会抛出OutOfMemoryError异常,
为了解决这个问题,我们要修改JVM的一些配置,在tomcat的bin目录下的catalina配置文件中,配置Xms和Xmx,也就是
Java虚拟机初始化时堆的最小内存和最大内存,这俩值通常会配置成一样,这样GC不必再为扩展内存空间而消耗性能.
除了这两个,还可以配置XX:PermSize和XX:MaxPermSize,它们是Java虚拟机永久代大小和最大值,除了这几个参数
还可以再根据具体需要配置其他参数。
第二部分: 配置优化
配置优化,主要有三方面:
1. Connector 优化
Connector是连接器,它负责接收客户的请求,以及向客户端回送响应的消息。
默认情况下Tomcat只支持200线程访问,超过这个数量的连接将被等待甚至超时放弃,所以我们需要提高这方面的处理能力.
修改这部分配置需要修改conf下的server.xml,找到Connector 标签项,修改protocol,默认的协议类型是BIO,也就是阻塞式I/O操作,
简单项目及应用可以采用BIO.
第二种协议类型是NIO,它就是一种基于缓冲区是、并能提供非阻塞I/O操作的java API,它有更好的并发运行性能. NIO更适合后台需要耗时完成请求的操作
第三种协议类型是APR,它主要可以提高Tomcat对静态文件的处理性能.
选择哪个协议也是根据实际项目进行配置.
除了这个协议类型,还有一个非常重要的参数要改,就是maxThreads,就是当前连接器能够处理同时请求的最大数目.这个数目也并非
越大越好,它也受操作系统等硬件制约,所以这个值要根据压力测试后实际数据进行配置.
2. 线程池
使用线程池的好处在于减少了创建销毁线程的相关消耗,而且可以提高线程的使用效率。使用线程池就在Service标签中配置Executor就可以了
3. Listener
还有一个影响tomcat性能的因素是内存泄漏,我们在Server标签中配置一个JreMemoryLeakPreventionListener就可以用来预防JRE内存泄漏
第三部分: 组件优化
可以选用Tomcat Native组件,它可以让 Tomcat使用 Apache 的 APR包来处理包括文件和网络IO操作,从而提升性能及兼容性
2、http协议有哪些部分组成?
回答:1.请求部分:1)请求行:请求方式 路径 协议及版本 2)请求头:请求头中保存的是本地浏览器信息的,是发送到服务器,被服务器解析的 3)请求体:请求体中存储的是请求数据,请求方式是POST时,请求体中才有内容;
2.响应部分:1)响应行:协议及版本 状态码 状态码描述 2)响应头:包含了服务器信息以及响应内容信息,被浏览器解析的 3)响应体:存储响应数据,给一般用户看的
3、Get和Post的区别?
回答:Get请求方式:地址栏里会显示我们提交的数据(不安全),并且地址栏中支持提交少量数据,请求的数据存在请求行中;
Post请求方式:地址栏里不显示我们提交的数据信息(相对安全),可以提交大量数据,请求的数据存在请求正文中。
4、cookie和session的区别?
回答:共同点:cookie和session都是用来跟踪浏览器用户身份的会话方式;
区别:cookie数据保存在客户端,保存数据不安全且存储数据量有限;session数据保存在服务器端,保存数据安全且存储数据量大,session是基于cookie进行信息处理的;
5、什么是ajax,为什么要使用ajax?
回答:Ajax是一种创建交互式网页应用的网页开发技术;Asynchronous JavaScript and XML的缩写;
Ajax的优势:1.通过异步模式,提升了用户体验;
2.优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了宽带占用;
3.Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载;
Ajax的最大特点:可以实现局部刷新,在不更新整个页面的前提下维护数据,提升用户体验度。
注意:ajax在实际项目开发中使用率非常高(牢固掌握)。
6、浅谈你对ajax的认识?
回答:同上(第5个问题)
7、Cookie和Session以及Servlet的生命周期?
回答:1.Cookie的生命周期是累计的,从创建时,就开始计时,20分钟后,cookie生命周期结束。
2. Session的生命周期是间隔的,从创建时,开始计时如在20分钟,没有访问session,那么session生命周期被销毁;但是,如果在20分钟内(如在第19分钟时)访问过session,那么将重新计算session的生命周期。注意:关机会造成session生命周期的结束,但是对cookie没有影响。
3.init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。
service():它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个”请求”(ServletRequest)对象和一个”响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。
destroy():仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。
8、说一下你熟悉的常用linux命令?
回答:1.列出文件列表:ls
2.创建目录和移除目录:mkdir rmdir
3.用于显示文件后几行内容:tail
4.打包:tar -xvf
5.打包并压缩:tar -zcvf
6.查找字符串:grep
7.显示当前所在目录:pwd
8.创建空文件:touch
9:编辑器:vim vi
9、后台传过的json数据前台怎么接收?
回答:在前台可以使用js代码接收,也可以通过ajax接收,也有专门的前端框架接收
10、后台传过来一个集合前台怎么接收?
回答:使用el表达式或者ognl表达式,或者根据实际情况从域中取数据
2018年最新JAVA面试题总结之JavaWeb(2)的更多相关文章
- 2018年最新Java面试题及答案整理(持续完善中…)
2018年最新Java面试题及答案整理(持续完善中…) 基础篇 基本功 面向对象特征 封装,继承,多态和抽象 封装封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内 ...
- 2018年最新Java面试题及答案整理
基础篇 基本功 面向对象特征 封装,继承,多态和抽象 封装封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内部的数据.在 Java 当中,有 3 种修饰符: pub ...
- 2018年最新JAVA面试题总结之框架(4)
转自于:https://zhuanlan.zhihu.com/p/40098726 1.谈谈对spring框架的了解 ,spring有什么作用(IOC,AOP),spring的核心是什么?回答:Spr ...
- 2018年最新JAVA面试题总结之基础(1)
转自于:https://zhuanlan.zhihu.com/p/39322967 1.JAVA中能创建volatile数组吗?volatile能使得一个非原子操作变成原子操作吗? 回答: 能,Jav ...
- 2018年最新JAVA面试题总结之数据库(3)
转自于:https://zhuanlan.zhihu.com/p/39804394 1.MySQL的delete与truncate区别? 回答:delete语句执行删除的过程是每次从表中删除一行,并且 ...
- 2016最新Java笔试题集锦
更新时间:2015-08-13 来源:网络 投诉删除 [看准网(Kanzhun.com)]笔试题目频道小编搜集的范文“2016最新Java笔试题集锦”,供大家阅读参考, ...
- 最全最新java面试题系列全家桶(带答案)
最全最新java面试题系列全家桶(带答案) 置顶 2019年04月06日 22:40:28 青春季风暴 阅读数 14082 文章标签: java面试题技术栈 更多 分类专栏: 面试 版权声明:本文 ...
- 2021最新Java面试题全集-20210326版
在手撕了数千道网络流传的面试题,外加十多个不眠之夜, 终于从里面精心挑选出约500道题目, 做为大家求职.跳槽前复习准备面试使用. 一:挑选题目的原则: 常考的.常被面试问到的 题目有一定的深度和难度 ...
- 509道Java面试题解析:2020年最新Java面试题
<Java面试全解析>是我在 GitChat 发布的一门电子书,全书总共有 15 万字和 505 道 Java 面试题解析,目前来说应该是最实用和最全的 Java 面试题解析了. 我本人是 ...
随机推荐
- Comet OJ - Contest #1
A:随便怎么暴力. #include<bits/stdc++.h> using namespace std; #define ll long long #define N 25 char ...
- Java技术栈思维导图
Java技术栈思维导图 Java IO流体系 设计模式
- input密码框输入后设置显示为星号或其他样式
预览效果 核心代码 <div class="text-input" :class="right?'textinput-right':''"> < ...
- Codeforces 1108F MST Unification(最小生成树性质)
题目链接:MST Unification 题意:给定一张连通的无向带权图.存在给边权加一的操作,求最少操作数,使得最小生成树唯一. 题解:最小生成树在算法导论中有这个性质: 把一个连通无向图的生成树边 ...
- 关于vue-router 中参数传递的那些坑(params,query)
1.query方式传参和接受参数 传参 this.$router.push({ path:'/xxx' query:{ idname:id } })接收的方式:this.$route.query.id ...
- (N叉树 递归) leetcode589. N-ary Tree Preorder Traversal
Given an n-ary tree, return the preorder traversal of its nodes' values. For example, given a 3-ary ...
- k8s常用命令演示
kubectl run --image=xxx name_xx --port kubectl run --image=nginx nginx-app --port=80 kubectl expose ...
- Angular+Ionic+RSA实现后端加密前端解密功能
因业务需要,需要给android应用安装证书,通过读取证书文件内容实现某些功能的控制: 流程:后台通过publicKey对指定内容的文件进行加密,生成文件共客户下载,客户下载后选择该证书文件读取到应用 ...
- opencv中imgshow图像显示为灰色
1.图像数据类型是否正确 2.图像是否存在 3.在imgshow()语句下添加watkey();
- 2019第十二届全国大学生信息安全实践创新赛线上赛Writeup
本文章来自https://www.cnblogs.com/iAmSoScArEd/p/10780242.html 未经允许不得转载! 1.MISC-签到 下载附件后,看到readme.txt打开后提 ...