首页 > 编程语言 > 详细

Java面试题(二)

时间:2019-03-08 00:51:24      阅读:149      评论:0      收藏:0      [点我收藏+]

Java面试题(二)

1.POST和GET有何异同?

首先POST和GET都是在客户端和服务端进行请求-响应的两种方法,它们具体的区别有以下几点:

1.当数据被回退或数据刷新时,GET请求是无害的,而POST请求则会重新提交数据

2.GET请求的数据会被缓存,而POST请求则不会

3.GET请求的数据会在url地址栏中显示出来,而POST请求则不会显示

4.GET请求的数据会保存在浏览器的历史记录中,而POST不会保存

5.GET请求对数据是有长度限制的,url长度不超过2048个字符,而POST请求无限制

6.POST相比较于GET更安全,因为参数不会被保存在历史记录中或web的服务器日志中,而GET发送的数据是url的一部分,无保密性可言

7.GET请求对数据类型是有限制的,只允许使用ASCII字符,而POST则无限制

2.ArrayList和LinkedList有什么相同点地方,有什么不同的地方?

1.ArrayList底层是基于数组来实现的,而LinkedList底层是基于双向循环链表结构实现的

2.对于数据的访问get和set,ArrayList要优于LinkedList,因为LinkedList要移动指针

3.对于数据的增加add和删除remove,LinkedList要优于ArrayList,因为ArrayList要移动数据

4.ArrayList和LinkedList都是线程不安全的

5.ArrayList和LinkedList都是List接口的实现类,都实现了List所以方法,只是实现的方式不同

3.网络通信中为什么要三次握手,四次挥手?

1.第一次握手时,Client什么信息都不能确认,而Server接收到Client的信息能够确认对方发送是正常的,其他不能确认。

2.第二次握手,Client接收到Server发送的信息,确认自己发送正常,接收正常,确认对方发送正常,接收正常;而Server则能确认对方发送正常,自己接收正常,其他不能确认。

3.第三次握手,Client能够确认自己和对方发送,接收均正常,而Server也能够确认自己和对方接收发送都正常。

4.第一次挥手,Clien发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

5.第二次挥手,Server收到FIN后,发送一个ACK给Client,Server进入CLOSE_WAIT状态。

6.第三次挥手,Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

7.第四次挥手,Client收到FIN后,Client进入TIME_WAIT状态,发送ACK给Server,Server进入CLOSED状态,完成四次挥手。

4.Session和Cookie的作用是什么,有什么区别?

1.Cookie是在客户端记录信息确认用户身份,而Session则是在服务器端录信息确认用户身份

2.Cookies的存储限制了数据的量,只允许4KB,且一般浏览器都限制一个站点最多保存20个Cookie,而Session无限制

3.Cookie相对于Session是不安全的,因为别人可以通过本地Cookie获取用户信息

4.Session数据是存储在服务器端的,当访问量增多时,会占用过多资源,影响服务器的性能

5.你如何理解Spring框架中的IOC(控制反转),具体的是现实什么?

? IOC是inversion of control的简称,即控制反转,它是Spring框架的核心思想之一。所谓IOC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。简单来说,就是所有的类都会被Spring框架统一管理,当你用到某个类时,Spring就自会把你所需要的东西交给你,同时也会把你交给需要你的其他类或对象。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。

? IOC是通过DI(依赖注入)来具体实现的,即由容器动态的将某个依赖关系注入到组件中。通过依赖注入,我们只需要通过简单的配置,无需任何代码就可以指定目标需要的资源,实现自身业务逻辑,而不需要关注具体的资源来自何处,由谁实现的。

? 所以说,控制反转IoC(Inversion of Control)是创建对象的控制权进行转移,以前创建对象的主动权和创建时机是由自己把控的,而现在这种权力转移到第三方,比如转移交给了IoC容器,它就是一个专门用来创建对象的工厂,你要什么对象,它就给你什么对象,有了 IoC容器,依赖关系就变了,原先的依赖关系就没了,它们都依赖IoC容器了,通过IoC容器来建立它们之间的关系。

6.Spring框架组的AOP(面向切面编程)思想是如何实现的,说说你的理解?

? AOP即面向切面编程,是编程中的一个重要思想。spring用代理类包裹切面,把他们织入到Spring管理的bean中。也就是说代理类伪装成目标类,它会截取对目标类中方法的调用,让调用者对目标类的调用都先变成调用伪装类,伪装类中就先执行了切面,再把调用转发给真正的目标bean。Spring中AOP代理由Spring的IOC容器负责生成、管理,其依赖关系也由IOC容器负责管理。

AOP的核心概念:

通知(Advice)

连接点(JoinPoint)

切入点(Pointcut)

切面(Aspect)

引入(Introduction)

目标(target)

代理(Proxy)

织入(Weaving)

面向切面编程在spring中主要表现:

1.面向切面编程提供声明式事务管理

2.spring支持用户自定义的切面

7.Ajax的作用的什么,是怎样实现的?

ajax 主要是实现页面和 web 服务器之间数据的异步传输,是一种创建交互式网页应用的网页开发技术。

具体的实现步骤为:

  1. 创建XMLHttpRequest对象,也就是创建一个异步调用对象.
  2. 创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息.
  3. 设置响应HTTP请求状态变化的函数.
  4. 发送HTTP请求.
  5. 获取异步调用返回的数据.
  6. 使用JavaScript和DOM实现局部刷新.

8.Mybatis框架中是如何实现对数据库的操作的?

? MyBatis是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatement、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

9.说出一些Spring,SpringMVC,Mybatis三大框架的常用注解,并说出它们的作用?

Spring:

@Controller:一般用于表现层的注解

@Service:一般用于业务层的注解

@Repository:一般用于持久层的注解

@Component:把资源让Spring 来管理。相当于在 xml 中配置一个 bean

@Autowired:自动按照类型注入。当使用注解注入属性时, set 方法可以省略

@Value:注入基本数据类型和 String 类型数据的

@Bean:该注解只能写在方法上,表明使用此方法创建一个对象,并且放入 spring 容器

@Aspect:表示当前类是一个切面类

@Before:前置通知

@Afterreturning:后置通知

@After:最终通知

@Around:环绕通知

@Pointcut:切入点

SpringMVC:

@RequestMapping:用于建立请求 URL 和处理请求方法之间的对应关系。请求路径

@RequestParam:把请求中指定名称的参数给控制器中的形参赋值

@RequestBody:用于获取请求体内容。直接使用得到是 key=value&key=value…结构的数据。实现将 controller 方法返回对象转换为 json 响应给客户端

@PathVaribale:用于绑定 url 中的占位符

Mybatis:

@Insert:实现新增

@Update:实现更新

@Delete:实现删除

@Select:实现查询

@Result:实现结果集封装

@Results:可以与@Result 一起使用,封装多个结果集

@ResultMap:实现引用@Results 定义的封装

@One:实现一对一结果集封装

@Many:实现一对多结果集封装

10.你是如何理解Http的?

? HTTP(HyperText Transfer Protocol)协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口是80。

HTTP的特点:

1.HTTP协议是无状态的,就是说每次HTTP请求都是独立的,任何两个请求之间没有什么必然的联系。但是在实际应用当中并不是完全这样的,引入了Cookie和Session机制来关联请求。

2.HTTP可以多次请求,在客户端请求网页时多数情况下并不是一次请求就能成功的,服务端首先是响应HTML页面,然后浏览器收到响应之后发现HTML页面还引用了其他的资源,例如,CSS,JS文件,图片等等,还会自动发送HTTP请求这些需要的资源。现在的HTTP版本支持管道机制,可以同时请求和响应多个请求,大大提高了效率。

3.基于TCP协议,HTTP协议目的是规定客户端和服务端数据传输的格式和数据交互行为,并不负责数据传输的细节。底层是基于TCP实现的。现在使用的版本当中是默认持久连接的,也就是多次HTTP请求使用一个TCP连接。

11.Http还有那些请求方法,具体作用是什么?

1.HEAD:与GET相同,但只返回HTTP的报头,不返回文档的主体

2.DETELE:删除指定的资源

3.PUT:上传指定的url表示

4.OPTIONS:返回服务器支持的HTTP方法

5.CONNECT:把请求连接转换的透明的TCP/IP通道

12.Spring有哪些优点?

1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦

2.可以使用容易提供的众多服务,如事务管理,消息服务等

3.容器提供单例模式支持

4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能

5.容器提供了众多的辅助类,能加快应用的开发

6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等

7.spring属于低侵入式设计,代码的污染极低

8.独立于各种应用服务器

9.spring的DI机制降低了业务对象替换的复杂性

Java面试题(二)

原文:https://www.cnblogs.com/y-u-p/p/10493394.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!