Ajax系列面试题总结

时间:2019-05-12 16:32:59下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《Ajax系列面试题总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《Ajax系列面试题总结》。

第一篇:Ajax系列面试题总结

Ajax系列面试题总结:

1、Ajax 是什么? 如何创建一个Ajax?

Ajax并不算是一种新的技术,全称是asychronous javascript and xml,可以说是已有技术的组合,主要用来实现客户端与服务器端的异步通信效果,实现页面的局部刷新,早期的浏览器并不能原生支持ajax,可以使用隐藏帧(iframe)方式变相实现异步效果,后来的浏览器提供了对ajax的原生支持

使用ajax原生方式发送请求主要通过XMLHttpRequest(标准浏览器)、ActiveXObject(IE浏览器)对象实现异步通信效果 基本步骤:

var xhr =null;//创建对象 if(window.XMLHttpRequest){ xhr = new XMLHttpRequest();}else{ xhr = new ActiveXObject(“Microsoft.XMLHTTP”);} xhr.open(“方式”,”地址”,”标志位”);//初始化请求

xhr.setRequestHeader(“”,””);//设置http头信息 xhr.onreadystatechange =function(){}//指定回调函数 xhr.send();//发送请求

js框架(jQuery/EXTJS等)提供的ajax API对原生的ajax进行了封装,熟悉了基础理论,再学习别的框架就会得心应手,好多都是换汤不换药的内容

2、同步和异步的区别? 同步:阻塞的

-张三叫李四去吃饭,李四一直忙得不停,张三一直等着,直到李四忙完两个人一块去吃饭 =浏览器向服务器请求数据,服务器比较忙,浏览器一直等着(页面白屏),直到服务器返回数据,浏览器才能显示页面

异步:非阻塞的

-张三叫李四去吃饭,李四在忙,张三说了一声然后自己就去吃饭了,李四忙完后自己去吃 =浏览器向服务器请求数据,服务器比较忙,浏览器可以自如的干原来的事情(显示页面),服务器返回数据的时候通知浏览器一声,浏览器把返回的数据再渲染到页面,局部更新

3、如何解决跨域问题? 理解跨域的概念:协议、域名、端口都相同才同域,否则都是跨域

出于安全考虑,服务器不允许ajax跨域获取数据,但是可以跨域获取文件内容,所以基于这一点,可以动态创建script标签,使用标签的src属性访问js文件的形式获取js脚本,并且这个js脚本中的内容是函数调用,该函数调用的参数是服务器返回的数据,为了获取这里的参数数据,需要事先在页面中定义回调函数,在回调函数中处理服务器返回的数据,这就是解决跨域问题的主流解决方案

4、页面编码和被请求的资源编码如果不一致如何处理?

对于ajax请求传递的参数,如果是get请求方式,参数如果传递中文,在有些浏览器会乱码,不同的浏览器对参数编码的处理方式不同,所以对于get请求的参数需要使用

encodeURIComponent函数对参数进行编码处理,后台开发语言都有相应的解码api。对于post请求不需要进行编码

5、简述ajax 的过程。

1.创建XMLHttpRequest对象,也就是创建一个异步调用对象

2.创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息 3.设置响应HTTP请求状态变化的函数 4.发送HTTP请求

5.获取异步调用返回的数据

6.使用JavaScript和DOM实现局部刷新

6、阐述一下异步加载。

1.异步加载的方案: 动态插入 script 标签 2.通过 ajax 去获取 js 代码,然后通过 eval 执行 3.script 标签上添加 defer 或者 async 属性 4.创建并插入 iframe,让它异步执行 js

7、请解释一下 JavaScript 的同源策略。

同源策略是客户端脚本(尤其是Javascript)的重要的安全度量标准。它最早出自Netscape Navigator2.0,其目的是防止某个文档或脚本从多个不同源装载。所谓同源指的是:协议,域名,端口相同,同源策略是一种安全协议,指一段脚本只能读取来自同一来源的窗口和文档的属性。

8、GET和POST的区别,何时使用POST?

GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符,有的浏览器是8000个字符

POST:一般用于修改服务器上的资源,对所发送的信息没有限制

在以下情况中,请使用 POST 请求:

1.无法使用缓存文件(更新服务器上的文件或数据库)2.向服务器发送大量数据(POST 没有数据量限制)

3.发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

9、ajax 是什么?ajax 的交互模型?同步和异步的区别?如何解决跨域问题? 1.通过异步模式,提升了用户体验

2.优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用 3.Ajax在客户端运行,承担了一部分本来由服务器承担的工作,减少了大用户量下的服务器负载。

10、Ajax的最大的特点是什么。

Ajax可以实现异步通信效果,实现页面局部刷新,带来更好的用户体验;按需获取数据,节约带宽资源;

11、ajax的缺点

1、ajax不支持浏览器back按钮。

2、安全问题 AJAX暴露了与服务器交互的细节。

3、对搜索引擎的支持比较弱。

4、破坏了程序的异常机制。

12、ajax请求的时候get 和post方式的区别

get一般用来进行查询操作,url地址有长度限制,请求的参数都暴露在url地址当中,如果传递中文参数,需要自己进行编码操作,安全性较低。

post请求方式主要用来提交数据,没有数据长度的限制,提交的数据内容存在于http请求体中,数据不会暴漏在url地址中。

13、解释jsonp的原理,以及为什么不是真正的ajax

Jsonp并不是一种数据格式,而json是一种数据格式,jsonp是用来解决跨域获取数据的一种解决方案,具体是通过动态创建script标签,然后通过标签的src属性获取js文件中的js脚本,该脚本的内容是一个函数调用,参数就是服务器返回的数据,为了处理这些返回的数据,需要事先在页面定义好回调函数,本质上使用的并不是ajax技术

14、什么是Ajax和JSON,它们的优缺点。

Ajax是全称是asynchronous JavaScript andXML,即异步JavaScript和xml,用于在Web页面中实现异步数据交互,实现页面局部刷新。

优点:可以使得页面不重载全部内容的情况下加载局部内容,降低数据传输量,避免用户不断刷新或者跳转页面,提高用户体验

缺点:对搜索引擎不友好;要实现ajax下的前后退功能成本较大;可能造成请求数的增加跨域问题限制;

JSON是一种轻量级的数据交换格式,ECMA的一个子集

优点:轻量级、易于人的阅读和编写,便于机器(JavaScript)解析,支持复合数据类型(数组、对象、字符串、数字)

15、http常见的状态码有那些?分别代表是什么意思?

200资源(网页等)被永久转移到其它URL 404内部服务器错误

16、一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?

分为4个步骤:

1.当发送一个 URL 请求时,不管这个 URL 是 Web 页面的 URL 还是 Web 页面上每个资源的 URL,浏览器都会开启一个线程来处理这个请求,同时在远程 DNS 服务器上启动一个 DNS 查询。这能使浏览器获得请求对应的 IP 地址。

2.浏览器与远程 Web 服务器通过 TCP 三次握手协商来建立一个 TCP/IP 连接。该握手包括一个同步报文,一个同步-应答报文和一个应答报文,这三个报文在 浏览器和服务器之间传递。该握手首先由客户端尝试建立起通信,而后服务器应答并接受客户端的请求,最后由客户端发出该请求已经被接受的报文。

3.一旦 TCP/IP 连接建立,浏览器会通过该连接向远程服务器发送 HTTP 的 GET 请求。远程服务器找到资源并使用 HTTP 响应返回该资源,值为 200 的 HTTP 响应状态表示一个正确的响应。

4.此时,Web 服务器提供资源服务,客户端开始下载资源。

17、ajax请求的时候get 和post方式的区别

get一般用来进行查询操作,url地址有长度限制,请求的参数都暴露在url地址当中,如果传递中文参数,需要自己进行编码操作,安全性较低。

post请求方式主要用来提交数据,没有数据长度的限制,提交的数据内容存在于http请求体中,数据不会暴漏在url地址中。

18、ajax请求时,如何解释json数据

使用eval()或者JSON.parse()鉴于安全性考虑,推荐使用JSON.parse()更靠谱,对数据的安全性更好。

第二篇:面试题总结

SSH面试题总结

题目1:Hibernate工作原理及为什么要用?

原理:

hibernate,通过对jdbc进行封装,对 java类和 关系数据库进行mapping,实现了对关系数据库的面向对象方式的操作,改变了传统的jdbc + sql操作数据的方式,从而使开发人员可以话更多精力进行对象方面的开发

1.读取并解析配置文件

2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory 为什么要用:

1.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

2.Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作

3.hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。

题目2: 什么是Hibernate延迟加载

延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另外在Hibernate3中还提供了对属性的延迟加载。

题目3:Hibernate中类之间的关联关系有几种(如:一对多、多对多的关系)

many-to-one、one-to-many、many-to-many、one-to-one

题目4: 说下Hibernate的缓存机制

一、hibernate一级缓存

(1)hibernate支持两个级别的缓存,默认只支持一级缓存;(2)每个Session内部自带一个一级缓存;

(3)某个Session被关闭时,其对应的一级缓存自动清除;

二、hibernate二级缓存

(1)二级缓存独立于session,默认不开启; 题目5: Hibernate的查询方式 本地SQL查询、Criteria、Hql

题目6: 如何优化Hibernate? 1.使用双向一对多关联,不使用单向一对多 2.不用一对一,用多对一取代 3.配置对象缓存,不使用集合缓存

题目7: Struts工作机制?为什么要使用Struts? 工作机制:

Struts的工作流程: 在web应用启动时就会加载初始化ActionServlet,ActionServlet从 struts-config.xml文件中读取配置信息,把它们存放到各种配置对象 当ActionServlet接收到一个客户请求时,将执行如下流程.-(1)检索和用户请求匹配的ActionMapping实例,如果不存在就返回请求路径无效信息;-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;-(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的 Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;-(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给 ActionForward对象指向的JSP组件;-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;

为什么要用:

1.JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱。2.基于Struts开发的应用: 不用再考虑公共问题 专心在业务实现上

结构统一,易于学习、维护 新手也可写出好程序

题目10:为什么要用spring Spring是一个轻量级的IOC和AOP框架。

IOC(控制反转)意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转

AOP(面向切面),它将那些影响多个类的行为封装到可重用的模块中,面向对象是把问题从同类事物中抽象出来,面向切面是把问题从不同类问题中抽象出来。

1.hibernate中get()与load()区别

请注意如果没有匹配的数据库记录,load()方法可能抛出无法恢复的异常(unrecoverable exception)。如果类的映射使用了代理(proxy),load()方法会返回一个未初始化的代理,直到你调用该代理的某方法时才会去访问数据库。若你希望在某对象中创建一个指向另一个对象的关联,又不想在从数据库中装载该对象时同时装载相关联的那个对象,那么这种操作方式就用得上的了。如果为相应类映射关系设置了batch-size,那么使用这种操作方式允许多个对象被一批装载(因为返回的是代理,无需从数据库中抓取所有对象的数据)。如果你不确定是否有匹配的行存在,应该使用get()方法,它会立刻访问数据库,如果没有对应的行,会返回null。

17.[Hibernate题目]判断题:使用save/persist一个对象时,便立即向数据库发送执行insert sql语句?

1)persist把一个瞬态的实例持久化,但是并“不保证”标识符被立刻填入到持久化实例中,标识符的填入可能被推迟到flush的时间。

2)persist“保证”当它在一个transaction外部被调用的时候并不触发一个Sql Insert,这个功能是很有用的。

3)save会立即执行Sql insert,不管是不是在transaction内部还是外部.18.[Hibernate题目]:指出一下代码哪里错误使用了Hibernate。

背景简介:Board是一个实体类,id是它的主键,name和description是他的两个属性。BoardDao是Board实体的数据访问对象,BoardBo是业务对象,用户提交变更Board对象的请求,由Struts的BoardAction接收,调用BoardBo处理。HibernateUtil.currentSession()用于返回当前请求的Session对象。//数据访问层代码:BoardDao.java

publicBoardloadBoard(Longid){

Sessionsession=HibernateUtil.currentSession();

returnsession.load(Board.class,id);

}

publicvoidupdateBoard(Boardboard){

Sessionsession=HibernateUtil.currentSession();

session.update(board);

}

//业务对象层代码:BoardBo.java

privateBoardDaoboardDao;

publicvoidupdateBoard(Longid,Stringname,Stringdescription){

Boardboard=boardDao.loadBoard(id);

board.setName(name);

board.setDescription(description);

boardDao.updateBoard(board);

}

//Web控制器代码:BoardAction.java

privateBoardBoBoardBo;

publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse)throwsException{

Stringid=request.getParameter(“id”);

Stringname=request.getParameter(“name”);

Stringdescription=request.getParameter(“description”);

boardBo.updateBoard(id,name,description);

returnmapping.findForward(“update-success”);

}

6.public void updateBoard(Board board){ 7.Session session = HibernateUtil.currentSession();Transaction t=session.beginTransaction();8.session.update(board);t.commit();9.}

简单叙述一下Spring中BeanFactory与ApplicationContext的差别 使用BeanFactory从xml配置文件加载bean: importorg.springframework.beans.factory.xml.XmlBeanFactory;importorg.springframework.core.io.FileSystemResource;

publicclassXmlConfigWithBeanFactory{

publicstaticvoidmain(String[]args){ XmlBeanFactoryfactory=newXmlBeanFactory(newFileSystemResource(“build/beans.xml”));} } 使用ApplicationConText从xml配置文件加载bean: publicclassXmlConfigWithApplication{

publicstaticvoidmain(String[]args){ ApplicationContextapplication=newClassPathXmlApplicationContext(beans.xml“));application.getBean(”BeanName“);} } 简而言之,BeanFactory提供了配置框架和基本的功能,而 ApplicationContext为它增加了更强的功能,这些功能中的一些或许更加接近J2EE并且围绕企业级应用。一般来说,ApplicationContext是 BeanFactory的完全超集,任何BeanFactory功能和行为的描述也同样被认为适用于ApplicationContext 相对于BeanFactory而言,ApplicationContext 提供了以下扩展功能.(a)国际化支持(b)资源访问

(c)事件传播(d)多实例加载

2.写一段程序,使用springAPI读取classpath下的一个xml文件,并解析(1)Resource resource=new ClassPathResource(”appcontext.xml“);BeanFactory factory=new XmlBeanFactory(resource);

(2)ClassPathXmlApplicationContext appcontext=new ClassPathXmlApplicationContext(”appcontext.xml“);BeanFactory factory=(BeanFactory)appcontext;

4.说说在hibernate中使用Integer做映射和使用int做映射之间有什么差别 Integer code和int code;的区别: Integer是对象.code = null;对象可以为空.int 是普通类型, 不可能 = null.根据你的数据库code是可以空的, 故应该映射成Integer.你没理由hbm.xml里写Integer, 类里却写int

(1)使用Spring如何简化了Hibernate编码?

通过org.springframework.orm.hibernate3.support.HibernateDaoSupport类支持数据库操作,且封装了事务.public class AccountDAO extends HibernateDaoSupport implements IAccountDAO{

(2)Spring如何与Struts集成?

(3)如何使用Spring2.0实现声明式事务?

(4)依赖注入的好处是? 程序可扩展性更强;利于并行开发;

(5)Spring怎么实现依赖注入?

(6)“面向方面编程”的好处是? 将程序中涉及的公共问题集中解决

(7)和SQL相比,HQL有哪些特点?

HQL是面向对象的查询语言。select Fw表示查询Fw对象

(8)如何配置单向多对一关联?

(9)如何配置单向一对多关联?

(10)如何配置双向一对多关联?

第三篇:公务员面试题(总结)

(1)政策理解型。比如,“如何理解科学发展观?”“如何理解和谐社会?”“谈谈你对以人为本的认识”等。这类问题与国家大政方针有关,要考生对国家大政方针熟知并能结合报考职位流利地表达。(2)名言警句型。例如:“有人说失败是失败之母,也有人说失败是成功之母,你如何理解,为什么?”这类问题首先要正确诠释名言警句的含义,然后说明这句话在现实生活中的意义,再联系职位情况,说明对公务员工作的指导意义。

[HTH]答题步骤[HT]

第一步:解题。可以从题干中的关键词开始解释,也可以从整体上理解句义。 第二步:理论分析。

第三步:联系公务员工作实际。

综合分析能力,其实是综合和分析两个部分,综合是指考生在面对一个问题的时候,分析、表达能不能涉及到事务的各个部分或者各个特征,从而将这些每一个局部联合成整体。而分析相对与综合来说一个更加细节的问题,比如说,某一件事情的影响,我们能想到有利和不利的两个方面。这就是综合前面的把握,而分析,就是要求我们将每一个层面进行更加细致的理解。如果是有利的一方面,有哪一些,不利的又有哪一些。

衡量综合分析能力有下面三个标准:1是否能对事物进行宏观方面的总体思考;2能否对事物进行微观的各个组成部分的思考;3能够将整体和局部,不同的局部之间进行有效联系。

一、答题要点

此类题型这类题目信息量大,可分为有标题的和无标题的两大类。解答这类题目需要我们要有极强的观察归纳能力。应掌握以下几个原则:

1首先考生要领会故事,寓言或者漫画所蕴含的意思,要先点题,并用语言将其表达出来。 2后面的步骤和普通的综合分析题型差别不大,要分析问题并提出对策(可同时进行)。 3考生要注重联系故事,寓言和漫画中的实际内容。

[BT2]

二、答题套路

[BT3](一)可得出具体寓意的漫画

帽子:这是一幅非常有趣的漫画,但是其反映出来的道理却是非常深刻的,对此我有以下几点看法。 首先:阐释漫画的具体含义,什么代表什么,什么代表什么,整个漫画的含义是什么 其次:在生活中举具体的例子说明这个道理

第三:这个道理对于我们的生活和工作具有很大的借鉴意义,那就是„。 鞋子:从这幅简单的漫画中可以得出如此深刻的道理, [BT3]

(二)一时得不出寓意的漫画

帽子:这是一幅非常有趣的漫画,可以从多个角度去理解这幅漫画,对此,我有以下几点看法。 首先:这幅漫画画的是**,其可以想象成**,也就是** 其次:还可以从另一个角度去思考这幅漫画,那就是***

第三:这些道理对我们平时的生活和工作有很大的启迪意义。

鞋子:总而言之,强调你最后认为比较好的那个含义和它的现实意义。

故事、寓言、漫画等题近些年在公务员考试中出现的频率越来越高。此类的综合分析与别的题目的差别就是它们并没有采用直接的语言将意思表达出来。如漫画,我们都将之成为会说话的图画。一副漫画中有很多细节,反映了一个或者几个深刻的社会问题,需要考生首先将这些材料进行加工,领会到其中的意思,然后再进行回答。

漫画的表达往往是非常简洁而寓意深刻的,我们要善于借助画面提供的要素,充分想像作者省略的内容,要使静止的画面动起来,要使单调的画面充实起来,比如让人物或动物说话,开展心理活动,使景物具有色彩,使环境具有象征意味。要实现合理的想像,必须明确作者采取了哪些表现手法。我们知道,漫画常见的表现手法有对比、比拟、夸张等,将抽象的道理借助生活中常见的形象加以表现。

如下图,大家了解这副漫画说的是未成年人进入网吧。几个任务关系分别问小孩,网吧老板,和老人,通过这些信息考生就能继承用语言表述了。而故事、寓言也是一样,考生要将故事和寓言所蕴含的事故,或者它们所反映的问题用语言表达出来。故事,寓言和漫画甚至比一般的综合分析题更加轻易,因为在材料中往往有很多信息是能直接被考生利用起来了。只是需要考生在审题的时候更加细致。 〖TPt1.tif,BP#〗

尽管我国多次开展有声势、有力度的网吧专项整治,网吧管理逐步规范,但是许多网吧仍在接纳未成年人,城市未成年人泡网吧现象依然严重。为限制未成年人进入网吧,国家有关部委再次发出禁令,从2005年12月16日起,网吧服务营业场所必须使用实名登记卡。但是,在北京、天津的一些网吧门前,虽然都挂着文化部门统一制作的“严禁未成年人入内”的牌子,但仍有背着书包、穿着学生服装的学生自由出入网吧

第四篇:SSH总结面试题

张国良编辑

SSH面试题

版本1.0

1.struts1与struts2的区别 :

1、两者之间目前只有名字是一样的。

2、struts1是通过继承来实现相关机制的。而struts2是通过接口方式来实现的。

3、在struts2中没有了ActionForm使用Action来代替原来struts1中的ActionForm和Action两者的功能。

4、Struts2比Struts1更加容易进行单元测试

5、线程安全

2.hibernate与iBATIS的区别

hibernate和ibatis都是持久层的ORM框架,hibernate是全自动化的,而ibatis是半自动化的。

为什么这样说呢?因为hibernate把我们要用到的增、删、改的SQL语句都封装了,我们不需要再自己手动写,直接调用即可,所以称它全自动。而对于ibatis,所有的SQL语句都要我们自己来手写,所以称它为半自动化的框架,就等于是一个O/R Mapping 解决方案.有了这框架,只要配置下映射文件,就不需要手写sql语句了.Hibernate是全自动化的,可以说O/R做的相当全面了.iBateis和Hibernate相比,iBatis最大的特点就是小巧,上手很快。如果你不需要太多复杂的功能,iBatis是能满足你的要求又足 够灵活的最简单的解决方案

3、hibernate的优化(项目)

1.使用双向一对多关联,不使用单向一对多

2.灵活使用单向一对多关联

3.不用一对一,用多对一取代

4.配置对象缓存,不使用集合缓存

5.一对多集合使用Bag,多对多集合使用Set

6.继承类使用显式多态

7.表字段要少,表关联不要怕多,有二级缓存撑腰

4、hibernate中session与sessionfactory的联系,分别什么时候用

sessionFactory、session都是由hibernate框架生成的,其中sessionFactory包括了数据库配置和映射关系等资源,一个项目中只能生成一个sessionFactory实例。因此sessionFactory被设计成线程安全的。session是对对象进行操作并映射至对应的数据库表中的,它由sessionFactory生成,不支持多线程并发,因此它是非线程安全的。

5、hibernate中get和load的区别

1、它们都用来根据主键,查找相应的记录

2、load和get方法对缓存的应用不同,其中load和get都可以使用session层的缓存,但是对于load可以应用二级缓存,而get无法使用

抛异常Null

张国良编辑

注意:criteria也是绑定session的,即随着session的产生而产生,随着session的消亡而消亡。如果想重用criteria对象,必须使用DetechedCriteria对象,实现criteria和session进行分离。

7、在项目中用hibernateORM框架与传统jdbc比较有什么优点

延迟加载:

延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另外在Hibernate3中还提供了对属性的延迟加载。

hibernate中lazy的使用

hibernate中lazy的使用(2008-09-12 13:57:47)

标签:杂谈分类:hibernate

hibernate中lazy的使用

lazy,延迟加载

Lazy的有效期:只有在session打开的时候才有效;session关闭后lazy就没效了。

lazy策略可以用在:

* 标签上:可以取值true/false

*

标签上,可以取值true/false,这个特性需要类增强

* /等集合上,可以取值为true/false/extra

* /等标签上,可以取值false/proxy/no-proxy

一、概念:即两者之间存在关联关系,那么在加载主对象的时候,对副对象的加载处理,是延迟或立即,比如说公司(主)-》部门(副).二、分析

1.立即检索

实现方法:将属性的lazy设为false,即不延迟加载.注解是@fetch = FetchType.EAGER.检索方式:加载主对象的同时加载副对象信息,反之亦然.优点:即使当前session关闭,处于游离状态,也能获取到关联对象.缺点:执行的SQL太多,增加数据库压力,还可能加载一些不需要的对象,即浪费时间,又浪费缓存控件.优先使用场合:

a.在业务或程序中,需要立即访问关联对象时可以使用.b.使用二级缓存.2.延迟检索

实现方法:将属性的lazy设为true,即延迟加载.注解是@fetch = FetchType.LAZY.检索方式:不立即检索与之关联的对象,但是会为关联对象创建一个代理对象,这个代理对象只初始化一个OID,只有这个代理对象的属性被访问时,才初始化该代理对象.优点,缺点:与立即检索相反.优先使用场合:

a.一对多或多对多的关联使用.b.在程序中不需要立即访问或者该关联的对象不需要访问的时候.什么时候用延迟加载

例如:银行开户,一个人可以开多个帐户,一个帐户只能属于一个人,所以在用户类里包含一个帐户的集合,帐户类里包含一个用户类型,他们之间是一对多的关系.如过你在查询的时候,通过用户查询是,如果只想查到用户就用(hibernate)默认的延迟加载,这样效率也高,如果你想把该用户的的所有帐户都一同查出来,那就需要立即加载了,这样一来如果一个用户对应的帐户比较多的话,他的效率是很低的.设置加载方式一般有两种,一种是通过映射文件(lazy=false),另一种是通过程序的方式来实现的也很简单.Struts2工作流程:

Struts2:

(1)客户端提交一个HttpServletRequest请求(.action或JSP页面)。

(2)请求被提交到一系列Filter过滤器,如ActionCleanUp和FilterDispatcher等。

(3)FilterDispatcher是Struts2控制器的核心,它通常是过滤器链中的最后一个过滤器。

(4)请求发到FilterDispatcher后,FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个Request(一般根据URL后缀是否为.action来判断)。

(5)如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求交到ActioProxy,由其进行处理。

(6)ActionProxy通过Configuration Manager(它会访问struts.xml)询问框架的配置文件,找到需要调用的Action类。

(7)ActionProxy创建一个ActionInvocation实例,而ActionInvocation通过代理模式调用Action,(在调用之前会根据配置文

第五篇:Unity3d面试题总结

本人总结的一些Unity3d高频面试题目,希望可以帮助到大家。限于个人水平有限,只附上一些参考答案。

======================================= 数据结构和算法很重要,图形学也很重要!大的游戏公司很看重个人基础、综合能力; 小公司看你实际工作能力,看你的Demo。

高频问答的问题: 一.什么是渲染管道?

是指在显示器上为了显示出图像而经过的一系列必要操作。渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。主要步骤有:

本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化。

二.如何优化内存? 有很多种方式,例如 1.压缩自带类库;

2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;

3.释放AssetBundle占用的资源; 4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小; 5.使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab)。

三、动态加载资源的方式?(有时候也问区别,具体请百度)1.Resources.Load();2.AssetBundle

四、什么是协同程序?

在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。换句话说,开启协程就是开启一个线程。可以用来控制运动、序列以及对象的行为。

五、你用过哪些插件?

(最好多熟悉几个插件,问的时候好回答)====== 1.使用Unity3d实现2d游戏,有几种方式? 1.使用本身的GUI;

2.把摄像机的Projection(投影)值调为Orthographic(正交投影),不考虑z轴;

3.使用2d插件,如:2DToolKit;

2.Unity3d中的碰撞器和触发器的区别?

碰撞器有碰撞的效果,IsTrigger=false,可以调用OnCollisionEnter/Stay/Exit函数;

触发器没有碰撞效果,IsTrigger=true,可以调用OnTriggerEnter/Stay/Exit函数。

3.物体发生碰撞的必要条件

两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。

4.CharacterController和Rigidbody的区别?

CharacterController自带胶囊碰撞器,里面包含有刚体的属性; Rigidbody就是刚体,使物体带有刚体的特征。

5.在物体发生碰撞的整个过程中,有几个阶段,分别列出对应的函数 三个阶段

1.OnCollisionEnter 2.OnCollisionStay 3.OnCollisionExit

6.Unity3d的物理引擎中,有几种施加力的方式,分别描述出来 rigidbody.AddForce/AddForceAtPosition,都在rigidbody系列函数中。7.什么叫做链条关节?

Hinge Joint,可以模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,但是达到固定距离后就会产生拉力。

8.物体自身旋转使用的函数? Transform.Rotate()

9.物体围绕某点旋转使用的函数? Transform.RotateAround()

10.Unity3d提供了一个用于保存和读取数据的类(PlayerPrefs),请列出保存和读取整形数据的函数 PlayerPrefs.SetInt()

11.Unity3d提供了几种光源类型,分别是哪几种? 四种。

平行光:Directional Light 聚光灯:Spot Light

12.Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。

点光源:Point Light 区域光源:Area Light

PlayerPrefs.GetInt()Awake——>Start——>Update——>FixedUpdate——>LateUpdate——>OnGUI——>Reset——>OnDisable——>OnDestroy

13.物理更新一般放在哪个系统函数里?

FixedUpdate,每固定帧绘制时执行一次,和Update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。

14.移动摄像机的动作放在哪个系统函数中,为什么放在这个函数中?

LateUpdate,在每帧执行完毕调用,它是在所有Update结束后才调,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是在所有Update操作完才跟进摄像机,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。

15.当游戏中需要频繁创建一个物体时,我们需要怎样做能够节省内存?

使用预制物体对象Prefab,然后复制创建。

16.在场景中放置多个Camera并同时处于活动状态会发生什么? 游戏界面可以看到很多摄像机的混合。

17.请描述Prefab的作用,并描述如何在移动设备的环境下恰当的使用它?

Prefab在实例化的时候用到,主要用于经常会用到的物体,属性方便修改。

18.如何销毁一个UnityEngine.Object及其子类? 使用Destroy()方法;

19.请简述Unity3d下如何安全的在不同工程间迁移asset数据,请列举出三种方法?

1.可以把assets目录和Library目录一起迁移 2.导出包

3.用Unity带的assets Server功能

20.请描述游戏动画有哪几种,以及其原理?

主要有关节动画、骨骼动画、单一网格模型动画(关键帧动画)。关节动画:把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活,Quake2中使用这种动画;

骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,有关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观;

单一网格模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。

21.请描述为什么Unity3d中会发生在组件上出现数据丢失的情况 一般是组件上绑定的物体对象被删除了

22.alpha blend工作原理

Alpha Blend 实现透明效果,不过只能针对某块区域进行alpha操作,透明度可设。

23.写出光照计算中的diffuse的计算公式

diffuse = Kd x colorLight x max(N*L,0);Kd 漫反射系数、colorLight 光的颜色、N 单位法线向量、L 由点指向光源的单位向量、其中N与L点乘,如果结果小于等于0,则漫反射为0。

24.Lod是什么,优缺点是什么?

LOD(Level of detail)多层次细节,是最常用的游戏优化技术。它按照模型的位置和重要程度决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。

25.两种阴影判断的方法、工作原理。

26.Vertex Shader是什么,怎么计算? 顶点着色器

27.MipMap是什么,作用?

MipMapping:在三维计算机图形的贴图渲染中有常用的技术,为加快渲染进度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为MipMap。

28.机试:二选一

1.用代码实现第三角色控制器 2.实现吊机吊物体的功能

29.反向旋转动画的方法是什么?

30.碰撞检测需要物体具备什么属性?

31.获取、增加、删除组件的命令分别是什么? 获取:GetComponent 增加:AddComponent 删除:Destroy

32.Animation.CrossFade命令作用是:(C)A.动画放大 B.动画转换 C.动画的淡入为其他动画

33.Application.loadLevel命令为:(A)A.加载关卡 B.异步加载关卡 C.加载动作

34.调试记录到控制台的命令是什么? Debug.Log();

35.编辑器类存放路径是什么?

工程目录下的Assets/Editor文件夹下。

36.使用原生GUI创建一个可以拖动的窗口命令是什么? GUI.DragWindow();

37.localPosition与Position的使用区别?

localPosition:自身位置,相对于父级的变换的位置。Position:在世界坐标transform的位置

38.意义连线 Mathf.Round Mathf.Clamp Mathf.Lerp

插值 四舍五入 限制

39.写一个计时器工具,从整点开始计时,格式为:00:00:00

40.写出Animation的五个方法

41.怎么拿到一个对象上脚本的方法 GameObject.GetComponent<>();

42.上机题:用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放(用一个Cube即可)。

43.请简述向量的点乘,向量的叉乘以及向量归一化的几何意义? 点乘的几何意义是:计算两个向量之间的夹角,以及在某一方向上的投影;

叉乘的几何意义是:创建垂直于平面,三角形,或者多边形的向量;

:http://blog.sina.com.cn/s/blog_9283b6f601017hfw.html

下载Ajax系列面试题总结word格式文档
下载Ajax系列面试题总结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    房地产面试题总结

    1 .在决定这一职位聘用什么人时,你认为那些资格是最重要的? 答:我认为21世纪对企业提出了一些真正的挑战,如果是招聘者的话,不管什么职位,我会考略以下几个方面:既可以决策......

    社区面试题总结

    请说下你为什么想要进社区工作? 答:我将主要从以下几个方面回答这个问题.首先,从社会发展的角度来说,科学发展观的思想告诉我们,社会主义和谐社会的核心是社会的安定有序。社区是......

    Java面试题总结

    二、Get和Post的区别 1.get是从服务器上获取数据,post是向服务器传送数据, 2.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。 3.get安全性非......

    ETC 面试题总结

    ETC 面试 ETC 面试 ......................................................................................... 1 一、 测试 ..............................................

    面试题总结(推荐5篇)

    1、你简单介绍一下自己? 我叫李洋,25岁,毕业于天津城市职业学院,大专学历。我曾获得过计算机一级证书,会计从业资格证书。我是一个兴趣广泛,乐观向上的人,两年前我参加了“天津市公......

    人事面试题总结更新

    人事方面的面试题 注:1、首先明确公司招人的目的:能为公司创造价值(有胜任这份工作的能力)和稳定的人,所以在回答面试问题的时候要突出这两点。 2、人事问题没有标准答案,合理即可......

    2011年卫生系统面试题总结

    一,你在值班时,手里已经有很多事务,护士长又交给你一件重要的事。你怎么办? 参考答案:作为护士难免会遇到这样的情况,这就要求我们想方设法,克服困难,按时保质地完成任务。 1、应该......

    struts2面试题(自己总结)

    Struts2面试题 1、struts2工作流程 Struts 2框架本身大致可以分为3个部分: 核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。 核心控制器Filte......