Java工程师常见面试题集锦(十)互联网人必看!(附答案及视频教程,持续更新)

时间:2019-02-19
本文章向大家介绍Java工程师常见面试题集锦(十)互联网人必看!(附答案及视频教程,持续更新),主要包括Java工程师常见面试题集锦(十)互联网人必看!(附答案及视频教程,持续更新)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

名词新解:猿宵节,是程序猿通宵赶代码的中国传统节日。

在此佳节来临之际,恭祝所有程序猿节日快乐!代码千万行,BUG无一行;需求全满足,发际线齐眉。

Java面试题更新至第十集啦,十全十美,好嗨哟~

Java工程师常见面试题集锦(一)互联网人必看!https://blog.csdn.net/CSDNedu/article/details/85602533

Java工程师常见面试题集锦(二)互联网人必看!https://blog.csdn.net/CSDNedu/article/details/86138938

Java工程师常见面试题集锦(三)互联网人必看!https://blog.csdn.net/CSDNedu/article/details/86471513

Java工程师常见面试题集锦(四)互联网人必看!https://blog.csdn.net/CSDNedu/article/details/86525565

Java工程师常见面试题集锦(五)互联网人必看!https://blog.csdn.net/CSDNedu/article/details/86591005

如果觉得文字学习较慢,也可以跟着老师一起视频学习:

Java面试题视频学习链接:https://edu.csdn.net/course/detail/10533

91.JSP 中动态 INCLUDE 与静态 INCLUDE 的区别?

动态 INCLUDE用jsp:include动作实现 <jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并 且可以带参数;

静态 INCLUDE 用 include 伪码实现,它不会检查所含文件的变化, 适用于包含静态页面<%@ include file="included.htm" %>

92.JSP有哪些内置对象?作用分别是什么?

JSP 共有以下 9 种基本内置组件(可与 ASP 的 6 种内部组件相对应):

request:用户端请求,此请求会包含来自 GET/POST 请求的参数;

response:网页传回用户端的回应;

pageContext:网页的属性是在这里管理;

session:与请求有关的会话期;

application:servlet 正在执行的内容;

out:用来传送回应的输出;

config:servlet 的构架部件;

page:JSP 网页本身;

exception:针对错误网页,未捕捉的例外。

93. get 和 post 的区别?

Form 中的 get 和 post 方法,在数据传输过程中分别对应了 HTTP 协议中的 GET 和 POST 方法。

二者主要区别如下:

1)Get 是用来从服务器上获得数据,而 Post 是用来向服务器上传递数据;

2)Get 将表单中数据按照 variable=value 的形式,添加到 action 所指向的 URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post 是将表单中的数据放在form 的数据体中,按照变量和值相对应的方式,传递到action 所指向 URL;

3)Get 是不安全的,因为在传输过程,数据被放在请求的 URL 中;Post 的 所有操作对用户来说都是不可见的;

4)Get 传输的数据量小,这主要是因为受 URL 长度限制;而 Post 可以传输 大量的数据,所以在上传文件只能使用 Post;

5)Get限制Form表单的数据集必须为ASCII字符,而 Post支持整个 ISO10646 字符集;

6)Get 是 Form 的默认方法。

94.JSP 的四种范围?

1)page 是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作) 表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面

2.)request 是代表与 Web 客户机发出的一个请求相关的对象和属性。一个 请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动 作的关系)

3)session 是代表与用于某个 Web 客户机的一个用户体验相关的对象和属 性。一个 Web 会话可以也经常会跨越多个客户机请求

4)application 是代表与整个 Web 应用程序相关的对象和属性。这实质上 是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域。 

95.JavaScript的优缺点和内置对象

1)优点:简单易用,与 Java 有类似的语法,可以使用任何文本编辑工具编 写,只需要浏览器就可执行程序,并且事先不用编译,逐行执行,无需进行严格 的变量声明,而且内置大量现成对象,编写少量程序可以完成目标;

2)缺点:不适合开发大型应用程序;

3)Javascript 有 11 种内置对象: Array、String、Date、Math、Boolean、Number、 Function、Global、Error、RegExp、Object

Java工程师常见面试题集锦(六)互联网人必看!https://blog.csdn.net/CSDNedu/article/details/86638413

Java工程师常见面试题集锦(七)互联网人必看!https://blog.csdn.net/CSDNedu/article/details/86674007

Java工程师常见面试题集锦(八)互联网人必看!https://blog.csdn.net/CSDNedu/article/details/86700843

Java工程师常见面试题集锦(九)互联网人必看!https://blog.csdn.net/CSDNedu/article/details/87448437

如果觉得文字学习较慢,也可以跟着老师一起视频学习:

Java面试题视频学习链接:https://edu.csdn.net/course/detail/10533

96. 使用Spring框架能带来哪些好处?

下面列举了一些使用Spring框架带来的主要好处:

Dependency Injection(DI) 方法使得构造器和JavaBean properties文件中的依赖关系一目了然。

与EJB容器相比较,IoC容器更加趋向于轻量级。这样一来IoC容器在有限的内存和CPU资源的情况下进行应用程序的开发和发布就变得十分有利。

Spring并没有闭门造车,Spring利用了已有的技术比如ORM框架、logging框架、J2EE、Quartz和JDK Timer,以及其他视图技术。

Spring框架是按照模块的形式来组织的。由包和类的编号就可以看出其所属的模块,开发者仅仅需要选用他们需要的模块即可。

要测试一项用Spring开发的应用程序十分简单,因为测试相关的环境代码都已经囊括在框架中了。更加简单的是,利用JavaBean形式的POJO类,可以很方便的利用依赖注入来写入测试数据。

Spring的Web框架亦是一个精心设计的Web MVC框架,为开发者们在web框架的选择上提供了一个除了主流框架比如Struts、过度设计的、不流行web框架的以外的有力选项。

Spring提供了一个便捷的事务管理接口,适用于小型的本地事物处理(比如在单DB的环境下)和复杂的共同事物处理(比如利用JTA的复杂DB环境)。

97.请解释下Spring框架中的IOC?

Spring中的 org.springframework.beans 包和 org.springframework.context包构成了Spring框架IoC容器的基础。

BeanFactory 接口提供了一个先进的配置机制,使得任何类型的对象的配置成为可能。ApplicationContex接口对BeanFactory(是一个子接口)进行了扩展,在BeanFactory的基础上添加了其他功能,比如与Spring的AOP更容易集成,也提供了处理message resource的机制(用于国际化)、事件传播以及应用层的特别配置,比如针对Web应用的WebApplicationContext。

org.springframework.beans.factory.BeanFactory 是Spring IoC容器的具体实现,用来包装和管理前面提到的各种bean。BeanFactory接口是Spring IoC 容器的核心接口。

98.如何用基于XML配置的方式配置Spring?

在Spring框架中,依赖和服务需要在专门的配置文件来实现,我常用的XML格式的配置文件。这些配置文件的格式通常用<beans>开头,然后一系列的bean定义和专门的应用配置选项组成。

SpringXML配置的主要目的时候是使所有的Spring组件都可以用xml文件的形式来进行配置。这意味着不会出现其他的Spring配置类型(比如声明的方式或基于Java Class的配置方式)

Spring的XML配置方式是使用被Spring命名空间的所支持的一系列的XML标签来实现的。Spring有以下主要的命名空间:context、beans、jdbc、tx、aop、mvc和aso。

<beans>      <!-- JSON Support -->
<bean name="viewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver"/> 
<bean name="jsonTemplate" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate"/>  
</beans>

 下面这个web.xml仅仅配置了DispatcherServlet,这件最简单的配置便能满足应用程序配置运行时组件的需求。

<web-app>   
<display-name>Archetype Created Web Application</display-name>
<servlet>         
<servlet-name>spring</servlet-name>             
<servlet-class>                 org.springframework.web.servlet.DispatcherServlet             
</servlet-class>         
<load-on-startup>1</load-on-startup>     
</servlet>      
<servlet-mapping>        
<servlet-name>spring</servlet-name>         
<url-pattern>/</url-pattern>     
</servlet-mapping>  
</web-app>

98.Spring框架中的单例Beans是线程安全的么?

Spring框架并没有对单例bean进行任何多线程的封装处理。关于单例bean的线程安全和并发问题需要开发者自行去搞定。但实际上,大部分的Spring bean并没有可变的状态(比如Serview类和DAO类),所以在某种程度上说Spring的单例bean是线程安全的。如果你的bean有多种状态的话(比如 View Model 对象),就需要自行保证线程安全。

最浅显的解决办法就是将多态bean的作用域由“singleton”变更为“prototype”。

99.简单的谈一下SpringMVC的工作流程?

流程

1)用户发送请求至前端控制器DispatcherServlet

2)DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3)处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4)DispatcherServlet调用HandlerAdapter处理器适配器

5)HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

6)Controller执行完成返回ModelAndView

7)HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet

8)DispatcherServlet将ModelAndView传给ViewReslover视图解析器

9)ViewReslover解析后返回具体View

10)DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

11)DispatcherServlet响应用户

100.SpringMVC与Struts2的主要区别?

1)springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过虑器。

2)springmvc是基于方法开发,传递参数是通过方法形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。

3)Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将request对象内容进行解析成方法形参,将响应数据和页面封装成ModelAndView对象,最后又将模型数据通过request对象传输到页面。 Jsp视图解析器默认使用jstl。

如果觉得文字学习较慢,也可以跟着老师一起视频学习:

Java面试题视频学习链接:https://edu.csdn.net/course/detail/10533

 添加学习小助手,备注“Java”进入学习群