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”进入学习群
- 使用Buck构建Android工程
- android 实现淘宝收益图的折线
- React Native入门(三)组件的Props(属性)和State(状态)
- Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)【Dalston版】
- PNG图片压缩对比分析
- 关于M4A文件的随机访问
- (whh仅供自己参考)进行ip网络请求的步骤
- HTML中的javascript交互
- Spring Cloud构建微服务架构:分布式配置中心【Dalston版】
- [Android] Toast问题深度剖析(二)
- [Android] Toast问题深度剖析(一)
- android离线缓存技术
- 浅谈ViewModel
- Android深入理解JNI(二)类型转换、方法签名和JNIEnv
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- mskcc的vcf2maf极简解决方案代码分享
- 乘法逆元 线性递推阶乘求逆元、费马小定理、普适线性求逆元 欧拉定理结论
- 最新最全的varscan 软件找somatic mutation
- 【每周一库】- toml 一个toml文件解析库
- Rust FFI 编程 - bindgen 使用示例
- bug 回忆录(三)
- bug 回忆录(二)
- bug 回忆录(一)
- 曾经绊倒我的 “超级丑数”
- Flutter 完成全平台制霸:实现 Windows 应用支持
- 尤大 4 天前发在 GitHub 上的 vue-lit 是啥?
- 原创的20个Python自动化案例,一口一个,高效办公!
- 看完这篇Python操作PPT总结,从此使用Python玩转Office全家桶就没有压力了!
- 【Hadoop 分布式部署 三:基于Hadoop 2.x 伪分布式部署进行修改配置文件】
- DCL单例模式你不知道的秘密