Java常用面试题之JavaWeb篇(十五)


148AJAX有哪些优点和缺点?

	优点:
	1、最大的一点是页面无刷新,用户的体验非常好。
	2、使用异步方式与服务器通信,具有更加迅速的响应能力。
	3、可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,
	节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请
	求,和响应对服务器造成的负担。
	4、基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。
	缺点:
	1、ajax不支持浏览器back按钮。
	2、安全问题 AJAX暴露了与服务器交互的细节。
	3、对搜索引擎的支持比较弱。
	4、破坏了程序的异常机制。
	5、不容易调试

149AJAX应用和传统Web应用有什么不同?

	在传统的Javascript编程中,如果想得到服务器端数据库或文件上的信息,或者发送客户端信息到服务器,需要
	建立一个HTML form然后GET或者POST数据到服务器端。用户需要点击”Submit”按钮来发送或者接受数据信息,
	然后等待服务器响应请求,页面重新加载。
	因为服务器每次都会返回一个新的页面, 所以传统的web应用有可能很慢而且用户交互不友好。
	使用AJAX技术, 就可以使Javascript通过XMLHttpRequest对象直接与服务器进行交互。
	通过HTTP Request, 一个web页面可以发送一个请求到web服务器并且接受web服务器返回的信息(不用重新加
	载页面),展示给用户的还是同一个页面,用户感觉页面刷新,也看不到到Javascript后台进行的发送请求和接
	受响应,体验非常好
        
150,Ajax的实现流程是怎样的?

	(1)创建XMLHttpRequest对象,也就是创建一个异步调用对象.
	(2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息.
	(3)设置响应HTTP请求状态变化的函数.
	(4)发送HTTP请求.
	(5)获取异步调用返回的数据.
	(6)使用JavaScript和DOM实现局部刷新.
	具体一点:
	1,创建XNLHttpRequest对象
	(不考虑ie)XMLHttpRequest request = new XMLHttprequest();
	2,创建新的Http请求
	XMLHttprequest.open(method,url,flag,name,password);
	3,设置响应Http请求变化的函数
	XMLHttprequest.onreadystatechange=getData;
	function getData(){
    
    
		if(XMLHttprequest.readyState==4){
    
    
				获取数据
		}
	}
	4,发送http请求
			XMLHttprequest.send(data)5,获取异步调用返回的对象
		,function(data){
    
    
		//异步提交后,交互成功,返回的data便是异步调用返回的对象,该对象是一个string类型的
	}
	6,使用js、DOM实现局部刷新
	myDiv.innerHTML=''这是刷新后的数据''
	
151,简单说一下数据库的三范式?

	第一范式:数据库表的每一个字段都是不可分割的
	第二范式:数据库表中的非主属性只依赖于主键
	第三范式:不存在非主属性对关键字的传递函数依赖关系
        
152,Java集合框架是什么?说出一些集合框架的优点?

	每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。
	随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使
	用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。
	集合框架的部分优点如下:
	(1)使用核心集合类降低开发成本,而非实现我们自己的集合类。
	(2)随着使用经过严格测试的集合框架类,代码质量会得到提高。
	(3)通过使用JDK附带的集合类,可以降低代码维护成本。
	(4)复用性和可操作性

153,Java集合框架的基础接口有哪些?

	Collection为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java平台不提供这个接口
	任何直接的实现。
	Set是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合,就如一副牌。
	List是一个有序集合,可以包含重复元素。你可以通过它的索引来访问任何元素。List更像长度动态变换的
	数组。
	Map是一个将key映射到value的对象.一个Map不能包含重复的key:每个key最多只能映射一个value。
	一些其它的接口有Queue、Dequeue、SortedSet、SortedMap和ListIterator
 
154,集合框架中的泛型有什么优点?

	Java1.5引入了泛型,所有的集合接口和实现都大量地使用它。泛型允许我们为集合提供一个可以容纳的对象类
	型。
	因此,如果你添加其它类型的任何元素,它会在编译时报错。这避免了在运行时出现ClassCastException,因
	为你将会在编译时得到报错信息。
	泛型也使得代码整洁,我们不需要使用显式转换和instanceOf操作符。它也给运行时带来好处,因为不会产生
	类型检查的字节码指令
        
155,Enumeration和Iterator接口的区别?

	Enumeration的速度是Iterator的两倍,也使用更少的内存。Enumeration是非常基础的,也满足了基础的需要。
	但是,与Enumeration相比,Iterator更加安全,因为当一个集合正在被遍历的时候,它会阻止其它线程去修改
	集合。
	迭代器取代了Java集合框架中的Enumeration。迭代器允许调用者从集合中移除元素,而Enumeration不能做到。
	为了使它的功能更加清晰,迭代器方法名已经经过改善
        
156,Iterater和ListIterator之间有什么区别?

	1,我们可以使用Iterator来遍历Set和List集合,而ListIterator只能遍历List。
	2,Iterator只可以向前遍历,而LIstIterator可以双向遍历。
	3,ListIterator从Iterator接口继承,然后添加了一些额外的功能,比如添加一个元素、替换一个元素、获取
	前面或后面元素的索引位置

157,我们如何对一组对象进行排序?

	如果我们需要对一个对象数组进行排序,我们可以使用Arrays.sort()方法。如果我们需要排序一个对象列表,
	我们可以使用Collection.sort()方法。
	两个类都有用于自然排序(使用Comparable)或基于标准的排序(使用Comparator)的重载方法sort()。
	Collections内部使用数组排序方法,所有它们两者都有相同的性能,只是Collections需要花时间将列表转换
	为数组
        
158,与Java集合框架相关的有哪些最好的实践?

	1,根据需要选择正确的集合类型。比如,如果指定了大小,我们会选用Array而非ArrayList。如果我们想根据
	插入顺序遍历一个Map,我们需要使用TreeMap。如果我们不想重复,我们应该使用Set。
	2,一些集合类允许指定初始容量,所以如果我们能够估计到存储元素的数量,我们可以使用它,就避免了重新
	哈希或大小调整。
	3,基于接口编程,而非基于实现编程,它允许我们后来轻易地改变实现。
	4,总是使用类型安全的泛型,避免在运行时出现ClassCastException。
	5,使用JDK提供的不可变类作为Map的key,可以避免自己实现hashCode()和equals()6,尽可能使用Collections工具类,或者获取只读、同步或空的集合,而非编写自己的实现。它将会提供代码
	重用性,它有着更好的稳定性和可维护性
        
159,什么是事务?

	事务是恢复和并发控制的基本单位
	事务的四个基本特征
	原子性,一致性,隔离性,持久性
	原子性和一致性差不多,意思是要么全部成功,要么就失败
	一致性是说,从一个一致性状态到另一个一致性状态
	隔离性是说一个事务执行的过程中不能被另一个事务干扰
	持久性也就是事务一旦提交,他对数据库中数据的改变就应该是永久的,不能变的

160,说说你开发中遇到过什么难题啊?怎么解决的?

	因人而异,根据自己的实际项目开发过程中遇到的问题,作一下总结

上一篇: Java常用面试题之Java泛型篇(十四)
下一篇: Java常用面试题之并发篇(十六)

猜你喜欢

转载自blog.csdn.net/Mr_TXQ/article/details/109048318