16道超详细JavaWeb面试题整理-阿里云开发者社区

开发者社区> 面试一点通> 正文

16道超详细JavaWeb面试题整理

简介: 本节小编整理了16道JavaWeb常考的面试题,面试前看一看,或许可以让您在学习 JavaWeb上少走许多弯路,也希望助您拿下心仪offer!

本节小编整理了16道JavaWeb常考的面试题,面试前看一看,或许可以让您在学习 JavaWeb上少走许多弯路,也希望助您拿下心仪offer!

1.ajax问题

Ajax所带来的好处是进行了更加丰富的页面处理操作,但是随之而来很多的人也开始思考ajax的问题(往往都是设计失败的问题)。

image.png

它的安全隐患是可以通过这样的操作来实现的,以上是第一步。随着后续的发展,人们开始研究跨域访问,所以产生了jsonp,如果想要进行jsonp的处理双方需要进行协商,例如:一定要传过去一些标记,而后一定要返回一些内容。后面继续发展就有了Rest架构,这一点在SpringCloud上发挥到了极致(SpringSecurity支持),所以这个时候的安全性基本上已经可以解决了。

2.Cookie问题

在JSP的开发之中,Cookie的用处就是由服务器端设置到客户端的数据。所有的用户提交都会将Cookie发送到服务器端上,服务器端是利用Cookie来区分不同的连接用户的,Session是离不开Cookie的。
如果现在有些数据希望就保留在客户端上,那么就可以使用Cookie来进行处理操作,假设“免登录”设置。
对于Cookie的操作现在已经被WEB存储取代了不少,如果要想通过服务器端取得这些数据,那么就需要通过Ajax处理了,而Ajax处理之中也会将客户端的所有Cookie发送给服务器端。
Cookie的操作对象:request、response。

3.如何实现H5的离线缓存?

HTML5更多的情况下它为了更加方便的进行数据的处理,提供有一个本地存储的概念,而这个本地存储的概念是不可能用于大数据量的。因为浏览器与操作系统之间是有安全机制存在的,通过浏览器保存的数据都是非常小的数据。
Android或IOS的缓存呢?它是有一个APP,可以直接操作本地的存储功能。本地存储的操作要比Cookie更加方便,Cooike本身有无可替代的作用。
HTML5的唯一核心功能:WebSocket最好用。

4.JavaWeb与Android的数据交互怎么做?

关键问题在于:一个系统的架构如何可以满足WEB开发以及Android项目开发,这个的核心问题就是json。

image.png

这是最初的架构,现在不怎么使用了。利用json作为整个控制层的回应,这样就相当于实现了一个restful的架构设计方式,而后包括SpringMVC也支持restful实现风格。利用这样的架构,让你整个系统设计没有那么复杂,就算有太多的客户端,在整个处理上,流程也是完全一样的。

5.JavaScript验证

对于整个的Java学习一定是需要按照层次来进行划分的,如果要想简单划分:
(1)显示层:有美工设计、有前端开发;
(2)控制层:看不见长相的,这叫内涵,就好比红绿灯一样;
(3)业务层(数据层):看不见长相的,这叫内涵。
在实际开发过程中,必须要对JS的表单验证进行重点掌握。
范例:表单一定是正常编写

image.png

范例:样式一定由美工设计

image.png

范例:JS的验证一定要自己动态设置,根据ID取得内容

image.png
image.png
image.png
image.png

6.消息服务作用

如果说现在正常的一个项目,那么肯定使用的就是MVC架构,整体的结构:
*显示层—控制层—业务层—数据层。
如果说有人觉得某些数据发送可能在移动设备上;

image.png

消息服务接收指定设备发送来的字符串,格式一定是由开发者定义好的,而后将这些字符串的数据保存在数据库或文件之中。

7.JQuery实现包含处理

在JSP页面里面有一个功能:jsp:include,而这个语句的特征可以直接进行动态页面包含,这个语句还有一个最大的特点是可以直接包含进来WEB-INF下的页面文件。
如果要是在普通的html页面上实现这样的包含处理就只能够利用JQuery提供的函数完成:

image.png

这一操作指的是将指定的内容直接进行加载,这种加载里面是利用Ajax完成的,也就是说如果你现在没有服务器,以上的代码是无法使用的。它可以包含静态资源也可以包含动态处理完成的结果(html代码)。
使用此类操作有一个前提,你需要设置好basePath的路径。

8.JSON包导入

JSON的开发包的导入在Maven里面比较麻烦

image.png

如果按照Maven的官方处理原则来讲,肯定采用以上的处理模式,但以上的模式是无法使用的,因为这里面缺少了一个JDK支持版本问题:

image.png

一定要加上“classifier”配置,否则无法进行JSON的导入。

9.JSON与XML的区别

如果按照时间发展进度来讲,在很长一段时间内使用的都是xml,而这几年开发都会使用json,原因如下:
(1)json数据量要远远小于xml数据量,例如:假如现在要描述一个人的信息,包括姓名、年龄、性别、多个兴趣,那么分别使用两种文件结构描述:
XML:

image.png

JSON:

image.png

可以发现JSON的体积更小,而XML最大的败笔出现在它的要求,这种要求体现在所有的XML文件必须有根节点,所有的节点必须完结;
(2)生成模式上:所有的信息都可以通过字符串的拼凑模式完成,但是这种做法难度太高,往往会使用一些处理类;
— XML文件生成(DOM DOM4J JDOM):操作过程及其复杂;
— JSON生成:JSONObject、JSONArray,互相设置个关系就解决了;
(3)在数据处理上:
— JSON的处理更加直白,直接使用key的名称访问即可,用一个eval()函数就可以处理了;
— XML:继续复杂的DOM解析;
现在的开发之中,如果是新的项目已经不建议继续使用xml进行数据的交互处理了,可以处理的模式都建议使用json,因为体积小,处理简单。
XML并不是没有用处了,实际上使用XML做为一些软件的配置文件出现会比较合适一些,JSON已经被大量应用到Rest服务上。

10.Nginx实现原理,以及为什么可以承载高访问量?

Nginx首要的功能是进行一个转发,也就是说Nginx会有一个负载均衡算法,利用这个负载均衡的算法,可以直接连接或称为代理更多的WEBServer,而且Nginx主要工作在网络层,所以它对网络的处理速度会比较快。
Nginx里面可以承担许多的开发模块,这样如果使用了缓存模块,那么就减少了网络传输,从而得到了性能的优化。

11.Nginx和Apache比较优势是什么?

Nginx的配置比Apache更加简单,采用的算法也比Apache更好。Apache的市场份额越来越小。

12.Rest与Dubbo的不同

Rest的实现技术有一个Jersey,Jersey更多的形式还是类似于传统的WebService,不过它比WebService强的地方是其直接支持JSON数据返回。
而Dubbo开发框架最大的本质在于:是一种RPC调用模式,而且全部的内部使用了一些自己的封装机制进行处理,调用处直接通过ZooKeeper引用远程接口,就可以直接获取接口实现类的对象使用,到那时这个接口的实现子类的具体细节客户端看不见。
Rest与Dubbo相似点:客户端完全不需要关心子类的实现;
Rest与Dubbo不同点:Rest使用JSON,而Dubbo需要采用自己的方式来封装。

13.Storm

Storm是流式计算框架,这些与大数据的开发有关。

image.png

Storm需要在Linux之中进行编译。

14.Tomcat项目部署

Tomcat在进行项目发布的时候实际上有两种做法:
(1)直接将*.war文件上传到tomcat/webapps目录之中,这样tomcat启动之后会进行该war文件的解压缩,这样就可以实现项目的自动部署操作;
(2)以虚拟目录的形式来进行配置,要去修改server.xml文件。
严格来讲在实际的项目开发之中都应该设置虚拟目录,因为Tomcat只是一个软件,而真正的项目代码有可能放到其它磁盘之中,这样为了处理方便,就可以通过虚拟目录的形式进行操作处理。

15.WEB调试

如果要进行WEB的调试处理,就直接在内部启动Tomcat,一定不可能在外部启动,随后的调试模式和之前Java调试是没有任何区别的,也是一个单步的跳入,以及一个单步跳过。
范例:定义数学计算类

image.png

范例:定义一个Servlet程序类

image.png
image.png
image.png

范例:定义一个表单

image.png

范例:定义show.jsp页面

image.png

一定要保证你的Tomcat为内部启动。
通过表单进行访问,而后会进入到调试模式,在调试模式下面就根据之前的配置一步步完成就行了。
但是对于WEB的开发,一般是不会有人去关注WEB的Debug,因为所有的开发之中业务层一定要单独测试完整,Junit测试一定要做到位。

16.分页问题

从实际开发来讲,分页的操作实际分为两个组成部分:
(1)第一部分:分页的控制操作,核心就是控制currentPage(当前页、cp参数名称)、lineSize(每页显示的长度、Is参数名称)
(2)第二部分:数据的显示;
对于分页的控制而言,必须要保证被包含的分页工具页面可以正常使用,这里面就得考虑第一次页面执行的时候,因为第一次页面执行有可能有设置任何的参数就直接进行了点击。

image.png

如果你能将这个cp控制好,那么对于分页就可以非常轻松的实现了,后面只需要结合相应的SQL语句就可以驱动整个分页的处理操作。

更多专业知识,面试技巧就在面试一点通,持续更新中……
感谢浏览~
本内容来源于阿里云大学-Java面试技巧

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

帮你拿下好工作

官方博客
链接