【Jsp精品源码栏目提醒】:网学会员--在 Jsp精品源码编辑为广大网友搜集整理了:联合永道java面试题 - 招聘面试绩等信息,祝愿广大网友取得需要的信息,参考学习。
设置超时:采用 HTTPclient 访问远程地址并提交数据的过程如下: 1 建立 Socket 连接 2 通过 GET/POST 方法提交数据 3 等待对方服务器应答,接收返回数据因此从上述过程看,超时会涉及 1 和 3,也就是说超时的原因主要有二:一是建立网络连接慢,二是虽然成功建立连接但是对方页面处理过慢,返回数据超时。
而这两个过程是互不覆盖的。
因此,超时就得针对这两个过程设置:client.getHttpConnectionManager.getParams.setConnectionTimeout30000// 针对连接建立时间client.getHttpConnectionManager.getParams.setSoTimeout3// 针对页面返回数据时间Servlet对于 servlet 的认识,对于 forward 和 redirect 概念 Servlet 运行在 servlet 容器中,其生命周期由容器来管理。
他的生命周期通过 servlet 接口中的 init()、service()、destory方法 1.从地址栏显示 Forward:是容器控制权的转向,是服务器请求资源,服务器直接访问目标地址的 URL把那个地址的 URL 的响应内容读取过来,发送给浏览器,浏览器不知道服务器发送的内容是从哪里来的,所以它的地址栏中还是原来的地址 Redirect 就是服务器根据逻辑啊,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,并且可以看到跳转后的链接地址。
Forward 更加高效,并且有助于隐藏实际链接2.从数据共享来说forward:转发页面和转发到的页面可以共享 request 里面的数据.redirect:不能共享数据.
jsp 和 servlet 的区别
jsp 是 servlet 技术的扩展,本质上是 servlet 的简易方式,更强调应用的外表表达。
Jsp 编译后就是“类 servlet”。
他们最主要的不同是 servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的 HTML 里分离出来。
而
JSP 的情况是 Java 和 HTML 可以组合成一个扩展名为。
Jsp 的文件。
JSP 侧重于视图,servlet 主要用于控制逻辑
Jsp 编译过程Web 容器处理
JSP 文件请求的执行过程主要包括以下 4 个部分:1. 客户端发出 Request 请求2.
JSP Container 将
JSP 转译成 Servlet 的源代码3. 将产生的 Servlet 源代码经过编译后,并加载到内存执行4. 把结果 Response响应至客户端 我先以 tomcat 中的
jsp 编译过程为例,tomcat 先将整个
jsp 页面的代码读取出来,写到 (在读取
jsp 文件时,会获取他的编码格式,先读取 pageencoding,一个新的 Java 文件中。
如果 pageencoding 没有指定,他会读取 contenttype 的编码格式,如果 contenttype 也没有指定,就会使用默认的 ISO-8859-1 编码格式) Tomcat 读取完
jsp 文件后,会将这些内容写到一个新文件中(默认 UTF-8)格式 ,然后编译 当
jsp 文件显示时,会使用 contenttype 中指定的 MIME 类型和 charset.如果 charset 没有指定, 就使用 pageEncoding 中指定的编码,如果 pageEncoding 也没有指定,就使用默认的ISO-8859-1 编码。
Jsp 和 servler 的执行性能只在第一次有差别,因为
jsp 在执行一次过后,会被编译成 servlet的类文件,即。
Class当再重复调用执行时,就直接执行第一次所产生的 servlet。
因此除了第一次,之后的
jsp 和 servlet 执行执行速度几乎相同。
servlet 的生命周期 Servlet 运行在 servlet 容器中,其生命周期由容器来管理。
他的生命周期通过 servlet 接口中的 init()、service()、destory方法 Servlet 的生命周期又包含了 4 个阶段: 1 加载和实例化:servlet 容器启动时,或者在容器检测到需要这个 servlet 来响应第一 个请求时,创建 servlet 实例。
2 初始化,初始化就是 servlet 会调用提供 init对于每一个 servlet 实例,init 只被调用 一次。
3 请求处理,Servlet 容器调用 Servlet 的 service方法对请求进行处理 4 服务终止:当容器检测到一个 Servlet 实例应该从服务中被移除的时候,容器就会 调用实例的 destroy方法,以便让该实例可以释放它所使用的资源,保存数据到持 久存储设备中。
UMLUML 类图怎么画?类与类图之间的关系。
UML 类图 用 rose 画的比较多,或者是微软的 visio 也可以。
1.关联关系:直线。
关联是一种结构化的关系,指一种对象和另一种对象有联系。
给定有关联的两个类,可以从一个类的对象得到另一个类的对象。
关联有两元关系和多元关系。
两元关系是指一种一对一的关系,多元关系是一对多或多对一的关系。
一般用实线连接有关联的同一个类或不同的两个类。
当你想要表示结构化关系时使用关联。
2.依赖关系:带箭头的虚线。
依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的事物,反之不成立。
在你想显示一个事物使用另一个事物时使用。
3.继承 /泛化:带三角箭头的实线。
泛化是父类和子类之间的关系,子类继承父类的所有结构和行为。
在子类中可以增加新的结构和行为,也可以覆写父类的行为。
4.实现:带三角箭头的虚线 5.聚合:带空心菱形的虚线 6.组合:带是新菱形的虚线设计模式设计模式,画出 prototype 设计模式老板说:“给我盖一座大楼。
”工程师说:“盖什么样的大楼呢?”老板指着身后的一座楼说:“和那个一模一样的从老板的角度来讲,他采用的就是,Prototype 模式,即原型模式。
否则,他需要再花费一些时间和工程师一点一点的探讨关于大楼的一些设计问题。
prototype 模式(原型模式),是一个使得新对象不用使用构造器来创建对象的模式 试想如果你要创建一个新对象,实际上这个对象已经创建过了,我不想再调用它的构造器来创建 那我能不能从这个已创建的对象身上“克隆”新的对象呢?呵呵,这就是 PROTOTYPE 模式,这个 已创建的对象就称为原型。
在一个图形编辑器中,每一个图形元素,如线、圆、文字等都应该支持拷贝操作,即点中图形,按下 CtrlC,再按下 CtrlV 后就会复制一个新的图形。
显然这是一种 clone 操作。
所以在每个从 Graphic 派生出的图形子类都应运用 Prototype 模式,加上 Clone 操作16.对设计模式的理解工厂模式的描述. 举例说明 XX 模式在项目中的实现过程。
每个模式都描述了一个我们在实际中不断出现的问题,然后描述该问题的解决方案的核心,通过这种方式你可以无数次使用那些已有的解决方案,无需重复相同的工作。
主要用到了MVC 的设计模式用来开发
JSP/SERVLER 的 j2ee 的相关应用。
还有简单工厂模式单例模式:单例模式作用是保证 Java 程序中,一个类 class 只有一个实例的存在SPRINGSpring mvc 是否是线程安全的Spring 的 controller 是 singleton 的,每个 request 过来,系统都会用原有的 instance 去处理,这样导致了两个结果:我们不用每次创建 controller,减少了对象创建和垃圾回收的时间。
由于只有一个 controller 的 instance,当多个线程调用它的时候,它里面的 instance 变量不是线程安全的。
Spring 相关IOC:Spring 的控制反转 IOC 降低了业务逻辑中各个类的依赖关系、 singleton bean 被标识为 singleton 时候,作用域: ( ) spring 的 IOC 容器中只会存在一个该 bean。
,prototype,每一次请求(将其注入到另一个 bean 中,或者以程序的方式调用容器的 getBean方法)都会产生一个新的 bean 实例,相当一个 new 的操作request,request 表示该针对每一次 HTTP 请求都会产生一个新的 bean,同时该 bean 仅在当前 HTTP request 内有效。
session session 作用域表示该针对每一次 HTTP 请求都会产生一个新的 bean, 该 同时 bean 仅在当前 HTTP session 内有效,applicationspring 里的 AOP:AOP:面向切面编程。
AOP 优势:1 允许开发者使用声明式企业服务,比如事务服务器、安全性服务;EJB 开发者都知道,EJB 组件能够使用 J2EE 容器提供的声明式服务,但是这些服务要借助于 EJB 容器,而 SPRING AOP 却不需要 EJB 容器,借助于 SPRING 的事务抽象框架就可以这些服务。
2 开着可以开发满足业务需求的自定义切面。
3.开发 spring aop advice 很方便。
因为这些 aop advice 只是 pojo 类,借助 SPRING 提供的proxyFactoryBean能够快速的搭建 spring AOP Advice.通知Advice:用于告知系统将有哪些新的行为。
切入点Pointcut:定义了通知应该在应用到那些连接点。
目标对象Target:被通知的对象。
代理Proxy:将通知应用到目标对象后创建的对象。
spring 里面怎么配置单例 bean以及 Bean 的注入方式spring 可以对定义的 bean 设置 scope 属性,配置单例就是把 scope 设置为 singletonbean 的注入方式:1 通过构造器注入 2 通过 setter 注入 3 通过接口注入String2.stringbuffer 和 stringbuiler 区别StringBuffer 的长度是可变的,如果经常对字符串进行操作的话,使用 StringBuffer,他是线程安全的。
StringBuilder 一般应该优先使用 stringbuilder 累,因为他支持 stringbuffer 所有的操作,还由于他不执行同步,所以速度更快3.stringbuffer 是怎么实现的c.equal 用法,复杂对象 equal 是怎么用的 (是覆盖 object 对象的 equal 没有覆盖就按 object 的 equal 来比的 object 的 equal 是答:来判断的 也就是指向同一个内存区域的就相等) equals 是比较二个对象的属性值是否相等,用于比较基本类型数值是否相等,及地址是否相等,可以这样回答复杂 OBJECT 中的 EQUAL 方法,通过多态来实现扩展自已所需要的需求equalsequals 方法对于普通的类是比较引用是否相等,和效果一样equals 方法对于基础数据类型的包装类来说,他是比较的值,对于基本数据类型的包装类来说,使用“”才是比较的引用String 这个类的 equals 方法比较特殊,它先比较引用,如果引用相等,那么返回值就是 true,如果引用不相等,那么再比较值,如果值相等,那么返回值也是 true,只有当引用和值都不相等的情况下,返回的才是 false23.final 关键字----例如:final 关键字在 java 的用法finally 和 finalize、Final:是修饰符;如果一个类被声明为 final,意味着他不再派生出新的子类,不能作为父类被继承,因此一个类不能即被声明为 abstract,又被声明为 final。
将变量和方法声明为 final,可以保证他们在使用过程中不会发生改变。
被声明的 final 变量必须在声明时,付初始值,在以后的引用过程中,只能被读取,不能被修改;被 final 声明的方法也是只能被使用,不能重载Finally:是异常处理语句中进行清理操作。
在异常处理的最后执行Finalize:方法名。
是在垃圾回收器前将对象从内存中清理出去之前,做一些清理工作STRUTS15.struts1 和 struts2 的区别?1) action 方面:1 的 action 必须继承抽象基类,而 2 不需要。
2) 线程方面:1 的 action 必须是单利而且必须是线程安全的,因为一个 action 实例就要处理所有请求,而 2 的 action 为每个请求创建一个实例所以不存在线程安全的问题 3 )formbean,获取数据:1 的 formbean 必须继承抽象基类,而且与 JavaBean 重复造成了一些重复的编写,2 就不需要 formbean, 直接包装其中,减少了重复的代码。
4.) servlet 依赖性 1 更依赖于 servletAPI。
5.Struts1 使用 jstl 表达式语言。
Struts2 支持 jstl,同时支持更加强大的 OGNL 表达是语言6. 类 型 转 换 不 一 样 : struts1 的 actionform 通 常 都 是 String 类 型 的 , 而 struts2 通 过COMMons-beanutils 实现类型转换struts 做表单验证:struts1 的标单验证一般有两种方式,一种是通过 ActionForm 的 validate 函数进行验证,另一种就是利用 validate 框架进行验证 Validate 函数验证 public ActionErrorsalidateActionMapping mapping HttpServletRequest request这个验证是 在客户端的 ActionForm 的 public ActionErrors validateActionMappingmappingHttpServletRequest request方法中进行的,该函数通过对标单进行检验,返回一个 ActionErrors 的对象,如果这个对象为空就返回到输入页面中,并通过lthtml:errors/gt标签进行错误的显示struts-config.xml:这里主要是配置了一个 Form 和一个 Action,注意 validatequottruequot这是必须的。
HIBERNATEHibernate 延迟加载延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。
Hibernate 延迟加载技术包括实体对象的延迟加载(通过将 class 的 lazy 属性设置为 true,来开启 )实体的延迟加载特性。
、集合类型的延迟加载等。
我们在一对多关联中,定义的用来容纳关联对象的Set 集合,并不是 java.util.Set 类型或其子类型,而是 net.sf.hibernate.collection.Set 类型,通过使用自定义集合类的实现,Hibernate 实现了集合类型的延迟加载。
为了对集合类型使用延迟加载,我们必须如下配置我们的实体类的关于关联的部分通过将ltsetgt元素的 lazy 属性设置为 true 来开启集合类型的延迟加载特性。
数据库13.数据库的事务,性能优化比如索引,隔离执行计划。
1.用索引提高效率2.选择最有效率的表明顺序(Oracle 解析器是按照从右到左的顺序处理 from 后的表名,from中写在最后的表最先被执行)3.Where 子句的链接顺序,Oracle 是采用自下往上的顺序解析 where 子句,根据这个原理呢,表之间的连接条件应该写在最前面,那些可以过滤掉最大数据记录的条件必须写在最后面。
4.Select 中避免使用 ,COST(基于成本)5 选择适合的 Oracle 优化器(RULE(基于规则的) ,CHOOSE(基于 )选择的) 设置默认的优化器,可以通过对 init.ora 文件中的 OPTIMIZER_MODE 蚕食的各种声明来设置6.删除重复数据7.数据进行分区8.用 TRUNCATE 代替 DELETE。
。
f.f.f.f.f.f.21.性能测试/优化22,数据库锁锁机制用于管理对共享资源的并发访问,有可能造成丢失修改、阻塞、死锁悲观锁:只用于由状态或有连接环境,也就是说,你的应用于数据库有一条连续的链接,而且至少在事务生存期中只有你一个使用这条链接。
乐观锁:所有锁定都延迟到即将执行更新之前才做。
换句话说,我们会修改屏幕上的信息而不要锁,我们很乐观,认为数据不会被其他用户修改。
锁有两种:排它锁(Exclusive locks 记 为 X 锁)和共享锁(Share locks 记为 S 锁)。
排它锁:若事务 T 对数据 D 加 X 锁,则其它任何事务都不能再对 D 加任何类型的锁,直至 T 释放 D 上的 X 锁;一般要求在修改数据前要向该数据加排它锁,所以排它锁又称为写锁。
共享锁:若事务 T 对数据 D 加 S 锁,则其它事务只能对 D 加 S 锁,而不能加 X 锁,直至 T 释放 D 上的 S 锁;一般要求在读取数据前要向该数据加共享锁,所以共享锁又称为读锁。
Java 基础知识Java 的异常分配DoGet doPost 作用域修饰符AJAX 会用哪个工具类,及其原理?s6.linux 基本命令rootlocalhost rootshutdown –h now ← 要求系统立即关机λ 指定关机时间:time 参数可指定关机的时间或设置多久时间后运行 shutdown 命令,范例如下: rootlocalhost rootshutdown now ← 立刻关机 rootlocalhost rootshutdown 5 ← 5 分钟后关机 rootlocalhost rootshutdown 10:30 ← 在 10:30 时关机 关机后自动重启:-rλ 参数设置关机后重新启动。
范例如下: rootlocalhost rootshutdown -r now ← 立刻关闭系统并重启 rootlocalhost rootshutdown -r 23:59 ← 指定在 23:59 时重启动lslist命令是非常有用的命令,用来显示当前目录中的文件和子目录列表。
配合参数的使用,能以不同的方式显示目录内容。
切换目录的 cd 命令创建目录的 mkdir 命令删除目录的 rmdir 命令cp data1.txt data2.txt 复制rm 删除目录或者文件cat 显示文件内容mv 移动文件pwd 显示当前所在文件夹7.分页怎么实现一般两种,一种是通过 Java 代码进行分页,通过 hibernate 也可以,在代码中计算,从数据库中获取当前页数据。
另一种比较常用,效率也更好,java 代码中不作分页的实现代码直观从数据库中取出数据返回到页面,数据分页功能交给数据库做,Java 代码中只做总页数的计算18Java 内存Java 把内存划分成两种:一种是栈内存,另一种是堆内存。
在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。
堆内存用来存放由 new 创建的对象和数组,在堆中分配的内存,由 Java 虚拟机的自动垃圾回收器来管理。
1.system.gc 调用后是否立即进行垃圾回收.调用 system.gc 只是告诉虚拟机要回收,但是什么时候回收是虚拟机说了算,一般等到内存快不够用了才回收。
不同的虚拟机有不同的策略8.java 什么时候可能产生内存溢出1.在数据量过于庞大;死循环;静态变量和静态方法过多;无法确定是否被引用对象2.虚拟机不回收内存3.程序运行要用到的内存大于虚拟机可以提供的最大量时就会内存溢出解决方案:1 优化代码,如果业务庞大,逻辑复杂,尽量少用全局变量的引用。
在程序使用完变量的时候释放资源让垃圾回收器回收2.增加物理内存。
修改容器的内存大小29JVM 垃圾收集,字符串拼接,java 代理9.classloader 的了解Classloader 和他的子类实现了 JVM 中类的装载,他是一个 Java 运行时系统组件。
它负责在运行时查找和装入类文件的类11.单点登录怎么实现1.首先要建立起 A 系统中用户和其他用户的关联关系并且保存、可以保存在表中或者文件系统中。
2,考虑到这些系统的之间的数据同步问题比较好的方式是找到用户在这些系统中都存在的唯一信息(比如员工号,EMAIL 地址啊,姓名啊等等),通过唯一的信息实时到各个系统中去取认证所需要的信息。
3.然后通过 URL 传参的方式,访问目标系统,为了提高安全性,要对参数进行加密。
12.处理话单怎么实现的? 采用双向队列,读文件到内存中,对实现的具体细节17Java 反射Java 反射机制,是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用他的任意一个方法。
这种动态获取信息,以及动态调用对象的属性方法的机制,叫做 Java 反射机制Java 反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类,在运行时构造任意一个类的对象,在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
19Java 文件读写14.java 的多线程?多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。
线程是在同一时间需要完成多项任务的时候被实现的。
多线程有两种实现方法,分别是继承 Thread 类与实现 Runnable 接口。
20.线程同步同步的实现方面有两种,分别是 synchronized WAIT 与 notify27java 基础概念,异常体系,hashmap 原理Java 是面向对象语言,健壮,多线程,结构中立,跨平台10.jms 和 jgroup 区别jms 即 Java 消息服务(Java Message Service)应用程序接口是一个 Java 平台中关于面向消息中间件(MOM)的 API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
Java 消息服务是一个与具体平台无关的 API。
30J2EE 的知识面,如对 JMS,webservice 的了解。
Webservice 接口流程 ? 在构建和 使用 W eb Service 时主要用到 以下几个关 键的技术 和规则: 1.XML:描述数据的 标准方法. 2.SOAP:表示信息 交换的协议. 3.W SDL:Web 服务描述语言. 4.UDDIUniversal Description Discovery and Integration:通用描 述、发现与集 成 ,它是一种独立于平台的 ,基于 XML 语言的用于 在互联网上 描述商务 的协议。
a、广告系统现在有一个广告系统,每天广告系统的访问量很大,每当用户点击一个广告时,需要记录广告的访问时间和每个 IP 每日访问次数,请给出系统优化方案?说得越多越好。
为表按照时间创建 rang 分区 然后在每个分区的时间上建索引在b、数据优化现在有一张 3000 万用户数据的积分表,每年的 1 月 1 日 0 时需要对用户积分进行清零操作,而积分数据时时更新的,在不影响当然用户.