”)
39、Js是否有trim方法? 没有如何做?
没有trim方法;
正则表达式写去掉前后空格方法:必须会写:
function trimStr(str){
return str.replace(/(^s*)|(s*$)/g,“");}
40、js如何判断某个字段数据类型?
(1)通过赋值,看赋值是什么类型的(2)typeOf方法判断
41、js面向对象写法你懂么?(只是了解,开发用过jquery框架,js面向对象不太了了解)
42、JSP指令有哪些?(说出:include和forword即可)JSP中的动作元素包括:include、forward、useBean、getProperty、setProperty、plugin、param。
1.include动作
标签用来包含一个静态或者动态的文件。
2.forward动作
标签用来重定向一个静态HTML文件、JSP文件或者是一个程序段。
3.useBean动作
标签用来在JSP页面中创建一个Bean实例,并指定其名称和作用范围。
4.getProperty动作
标签用来获取Bean的属性值(在此之前必须用创建它),并将之转化为一个字符串,然后将其插入到输出的页面中。
5.setProperty动作
标签表示用来设置Bean中的属性值。
6.plugin动作
标签用于在浏览器中播放或显示一个对象(典型为applet和Bean),这种显示需要在浏览器上安装Java插件。当JSP文件被编译后送往浏览器时,元素将会根据浏览器的版本替换成或者元素。
7.param动作
标签用来传递参数,必须与forward、include及plugin动作配合使用
43、什么是js的闭包?(类似函数嵌套函数的使用,描述一个例子即可)
function a(){ var i=0;function b(){
alert(++i);} return b;} 使用时如下: var c = a();c();
44、Js继承用过么?(回答:没有,只用过jquery框架即可)
45、Jquery用过继承吗?没有(只了解jquery中$.fn.extend函数,它用于重写jquery中封装的某些方法的,也可以写自定义的插件,相当于继承)
46、有一个iframe,当前页面如何选他页面中iframe里面的某个标签?
document.frames[0].getElementById(“iframe页面中元素id属性值”)iframe如何获取外层页面对象?
在iframe所在页面中,写js代码:window.parent.document.getElementById(“”)
47、开发中什么时候使用StringBuilder,什么时候使用StringBuffer?
StringBuilder线程安全,效率低;(如果同一时间内,只允许一个线程使用字符串追加操作,此时考虑用StringBuilder因为该类中append方法加入了锁关键词)
StringBuffer线程不安全,效率高;(如果同一时间内,允许多个线程共同访问并使用拼接字符串操作,此时可以考虑使用StringBuffer)
48、Iframe和frame区别?
Iframe是嵌套在某个页面中的,iframe包含的页面是独立的窗体; Frameset是将页面拆分几个部分,每个页面不是独立的窗体;
49、HTTP的长连接和短连接?
长连接:client方与server方先建立连接,连接建立后不断开,然后再进行报文发送和 6 接收。这种方式下由于通讯连接一直存在。此种方式常用于P2P通信。
短连接:Client方与server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此方式常用于一点对多点通讯。C/S通信。
50、说出你用过jquery的那些属性?那些方法(10-20个)?事件?
属性和方法:attr(“”)
removeAttr(“”)val(“”)、get()、ready()、addClass(“”)、css()Remove()、parent()/children()/ find(“”)/removeClass(“”)/ show()/hide()/ next()/ First()last()append()html()
text()/ before()after()/bind()/ toggle()/
Index
offset().pageX offset().pageY $.ajax()
$.each()
$.trim(“”)$.serialize()
/foucs()/
事件:click(function(){})
Mouseover mouseout dbclick mousemove
focus blur
51、说一下jquery的选择器?
按照id找: $(“#”)
按照class属性找: $(“.”)按照标签名找: $(标签名)
表示过滤的:
:parent
:selected :checked :hidden :visible :not :first :last :eq :lt :gt :even :odd :text :checkbox :input :radio
方法: find(“”)
parent(“”)get(下标)
children(“”)next(“”)
52、什么是ajax? 为什么用ajax? Jquery如何实现ajax? Ajax 可以传输哪些数据格式的数据?
(1)ajax是利用js中XMLHttpRequest对象,实现客户端与服务器端无刷新页面,异步交互数据的技术;可以实现局部刷新;
(2)使用ajax可以实现局部刷新,使用json格式传输数据实现异步效率高,并可以实现页面动画效果;
(3)$.ajax()$.post()$.get()$.load()$.getJson()(4)xml/json/text/script/jsonp、html
53、$.ajax()方法参数有哪些?
url:设置请求路径、type:设置提交方式、data:向后台服务器传输数据,格式为&属性=值&属性=值或者{属性:值,属性:值} dataType:指定客户端接收响应数据的格式,有xml/json/text/script/jsonp、html Success:回调函数,指定响应成功后指定的回调函数; error:指定服务器响应失败后指定的回调函数
54、$.ajax()如果实现发送同步请求?
async:属性这只为false
55、说一下等你对Hibernate的了解/理解?
Hibernate是开源的持久层框架,也是ORM映射关系模型框架,通过对象操作表,底层是封装了jdbc。它使用了Session一级缓存和二级缓存SessionFactory来减轻对服务器压力,处理表关系时如果关系复杂,针对表关系负责的项目不考虑使用Hibernate,Hibernate有自带的HQL语句查询以及相关的QBE、QBC等查询方式,采用了预编译sql;
53、你说一下对Hibernate的缓存的理解?
一级缓存:session缓存,针对对象查询起作用,默认的不可被卸载,查询时先访问session缓存,然后如果没有数据在访问数据库,然后获取数据,session缓存也更新,对数据库数据进行增删改时session缓存同时被更新;
二级缓存:sessionFactory需要配置,二级缓存中存放的是主键列,查询时如果配置二级缓存了,先访问二级缓存,如果有id,此时从一级缓存拿数据,如果没有,访问数据库,然后将id放入二级缓存,数据放入一级缓存,即缓存更新;
二级缓存被一级缓存共享,并且list查询针对query缓存(前提是配置二级缓存)起作用,iterate方法查询针对一级缓存起作用,前提是配置二级缓存才能开到效果,他发送n+1条sql;
54、Hibernate数据持久化时的有几种状态?
瞬时:数据封装到对象中,在执行save或者delete或者update方法之前的状态;
持久化: 事务提交后,数据真正保存到数据库;
游离:事务提交后,数据有session脱管;
55、Hibernate的表关系如何配置的?(自己看看关联关系配置:一对多,多对一,多对多,)
56、Hibernate 中inverse 和 cascade区别?
Inverse 表示反转,配置双向关联关系时,某一方设置为true表示关联关系的控制由对方维护,自身放弃该权利,该权利被扭转了;
Cascade表示何时建立这种关联关系,有很多值,常用的是all、saveoOrupdate等
57、Hibernate 中openSession和getCurrentSession区别?
openSession表示开启一个新的session,必须手动关闭
getCurrentSession 方法获取session表示该session绑定当前线程,事务提交,session自动关闭;
58、Hibernate中load和get方法区别?
Load方法支持懒加载(延迟加载),查询无数据时,报异常为ObjectNotFoundException,返回代理对象
Get方法查询不支持懒加载,查询数据时无数据的话返回 null。
59、Hibernate和mybatis区别?
Hibernate 处理表关系时繁琐,数据量大时查询速度慢,他的缓存只是为了减少对服务器压力并非是为了查询速度; 因此银行项目不会使用Hibernate,表关系复杂的项目不会使用Hibernate;
Mybatis 好处在于也可以设置缓存、他将查询sql集中了,好处是便于维护sql、Mybatis’整合spring可以通过接口编程,可以不写实现类,方便效率便于开发;也有构建工具;
60、Mybatis与ibatis区别或者关系?
Mybatis是ibatis3,是ibatis的升级版;
Ibatis老师没讲可以说你没用过;你就说自己只用过mybatis就行; 61、简要说一下struts2流程?
客户端发送请求,经过struts2的过滤器,该过滤器看是否要走struts2框架,如果走,此时会由相关容器经过拦截器,进入action类中,进入指定方法处理业务逻辑,然后响应该客户端,经过拦截器指定返回result,客户端获取响应结果; 62、Struts2 和Struts1区别?
Struts1可以说你没用过:但是了解它和struts2区别:
Struts1 继承机制实现的,采用了大量继承,继承关系过多,封装了servlet
Struts2 是webWork框架后身,struts2 采用了了struts1的xml封装配置优点;实际上跟struts1 没什么关系;
63、Struts2 中如何防止重复提交表单?Token 标签实现 64、Struts2中result返回的数据类型有哪些? Result 标签的type属性值有哪些(还可以这么问: 如何进行客户端服务器端跳转)?
(老师总结的,这样记简单)Struts2中result标签中type属性值:
1、redirect:用于客户端跳转,只能跳页面;
2、redirectAction:客户端跳转,跳转Action(获取不到前一个action中的数据-后一个action并不能共享到前一个action中数据)
3、chain:服务端跳转,跳转Action;(前一个action中数据,该action都能拿到)
4、stream:返回结果为流;
5、dispatcher :默认值;表示服务端跳转;只能跳转页面;
65、自己看看struts2如何实现ajax的,必须看看!
66、Spring:为什么用Srping框架? 用它有何好处?
Spring 核心是IOC,使用spring可以实现程序的解耦,实现高内聚低耦合;
使用Spring可以使用IOC核心机制,实现解耦,AOP实现Hibernate事务管理,采用动态代理形式,将事务注入并管理session。
同时spring提供了MVC框架,以及权限操作框架和定时器等功能; 67、Spring:什么是IOC、AOP?
IOC是Spring的核心,控制翻转; 表示原来使用对象需要new实例化,等同于主动获取对象,现在使用spring,spirng可以事先将类实例化好,然后配置类和类依赖关系,注入指定的对象,此时,将主动获取对象的权利,通过spring扭转了,由spring实例化对象并主动给对方;
AOP:是pring中采用动态代理实现的机制,该面向切面编程的思想,可以很方便管理 Hibernate事务,将需要事务的类认为是切面,需要事务的方法认为是切点,然后将事务切入(注入即DI);
如果让你通俗点讲解:就切西瓜的例子;
68、spring注解你用过吗?(用过,记住 @repository注入dao的,@service注入service层的@controller控制层、@resource 注入bean)
69、Spring 是如何注入的?(意思不是问你如何配置bean和bean之间关系-装配)
1、接口注入、2构造方法注入、3、set方法注入 70、Spring 是如何进行bean的装配的?
1、property按照bean的id进行手动装配
2、按照bean标签 class属性,进行按照类型自动装配,但是需要在beans标签中设置;
3、按照名称进行自动装配,即字段名跟id名字一致,即可自动匹配; 71、Spring对事务的管理?
Spring有声明式事务,即以前我们讲的那种,最基本的那个(再说一下AOP对Hibernate事务操作过程);
可以采用JTA事务,分布式事务管理;(自己再看看这的资料)72、什么是事务?为什么要用事务?
事务是数据库端一组指定单元,要么都执行要么都不执行,数据恢复原始状态;
即:n条sql认为是一组,要么都执行,如果有一条错误,失败,那么都不执行,数据恢复原来状态;
使用事务是为了保证数据完整性一致性;例如:批量删除,批量修改等操作; 73、事务的特性有哪些?事务隔离级别有哪些?
原子性-多个sql是一组单元、9 一致性-要么都执行要么都不执行、持久性-事务一旦提交,不可以混滚、隔离性-事务与事务之间不互相影响干扰;
隔离级别:(重点要给对方用白话解释要举例说明)
(1)丢失更新:撤销一个事务时,如果另一个事务也要commit还没有commit,此时如果有一个事务突然rollback,此时会导致前面数据丢失,即也被回滚;(有人说事务是有隔离性的,这里跟它没关系,是指你一个人操作,在执行多个update或者insert,你前面没commit,这里直接rollback,会影响前面所有没提交的数据)
(2)脏读:就是一个事务读到另一个事务已经提交的数据;
(意思就是说你A事务提交前,在另一个事务B进行了查询,查询的数据结果不是数据库真正存在的数据,此时就是脏读-即读出来的就是脏数据)
(3)不可重复读:意思是A事务查询数据,查询结果正好是B事务提交前的更新结果,然后当B提交事务,此时数据库数据真的变了;此时A在读取数据,跟上一次数据不同,此时就是不可重复读;
(4)覆盖更新:就是不可重复读的特例:就是一个事务覆盖了另一个事务已经提交的更新;
意思是A事务要更新数据,此时B也更新这条记录,那么此时A当更新时,发现自己的数据已经被B更新啦;
74、什么是Json(开发时,项目中数据如何进行交互的?回家ajax以及json内容),请你手写一下他的格式?
{username:”abcdefg”,pwd:”123”}
[{username:””,pwd:””},{username:””,pwd:””},{username:””,pwd:””}] 75、什么是DOM?
文本对象模型
76、Tomcat如何修改端口号?如何解决乱码问题?如何部署项目?
(1)修改tomcat 服务器conf文件夹中server.xml(2)(记住黄色部分选中字体,会给对方讲即可,不必全记住配置)
1.直接把项目导出war包,放到Tomcat安装目录的webapps目录中,这是最简单的一种Tomcat项目部署的方法,也是初学者最常用的方法。
2.在tomcat安装目录中找conf文件夹,配置server.xml,在和 之间插入context标签配置。path=”/hello“
docBase=”F:eclipse3.2workspacehelloWebRoot“
debug=”0“
privileged=”true“>
其中,docBase为设置项目的路径。
3.在tomcat安装目录中找conf文件夹,在Catalinalocalhost(此处需要注意目录的大小写)目录下新建一个XML文件,任意命名,设置context标签的配置。
path=”/hello“
docBase=”D:eclipse3.2workspacehelloWebRoot“
debug=”0“
privileged=”true“>
(3)乱码解决可以通过:过滤器转码、new String 转码、修改服务器默认编码格式 77、tomcat和jboss和weblogic区别 :自己看看
78、spring配置中scope的意义?或者说如何实现bean的单例或非单例模式
(有时候问:spring的bean是默认是单例的还是非单例模式?如果不是怎么修改?如何是,如何变为非单例模式?)
默认是单例模式:即scope=singleton 非单例设置为: scope=prototype 除了上面属性值还有:session、request、globalSession 79、什么是B/S 什么是C/S
B/S 浏览器服务器
C/S 客户端服务器(需要本地安装的,跟浏览器无关的都是)
80、过滤器和拦截器区别?
过滤器filter: 用于过滤客户端向服务器端发送的请求,对于服务器端与服务器端跳转无法过滤到;
拦截器interceptor:是struts2中的,是属于struts2核心机制,用于拦截action,进入action中方法之前拦截,在action对客户端做出响应之前进行拦截; 81、开发中你用过哪些设计模式?
工厂模式、单例模式、代理模式(service层静态代理)82、手写一下单例模式?单例模式实现方式有几种?
(1)例如:
public class Test{
Private static TestDao dao;
Public static TestDao getInstance(){
dao=new TestDaoImpl();
}
}(2)使用静态初始化快实现:
static TestDao dao
static{
dao=new TestDaoImpl();
} 83、JavaBean是什么?
JavaBean是一种特殊的java类,里面有构造方法以及set和get方法,其他没了;
即该类中有无参构造方法、set和get方法、以及实现了Serializable接口;
83、你项目中如何实现的分页操作?(强调的是mysql或者oracle分页语句)
有时候也问是否是n+1(点一页查询一次,不是所有都查询出来再分页)分页?
Mysql:分页语句:select * from emp limit 1 and 10
Oracle: select * from(select rownum r ,emp.* from emp)a where a.r between 1 and 10
84、Map遍历方法,让你写效率高的那种:注意:使用Entry;
例如:
Map obj=...;数据源
//以下是遍历map集合最效率的方法,笔试题面试题
Set> set= obj.entrySet();Iterator> ite=set.iterator();while(ite.hasNext()){ Map.Entry e=ite.next();System.out.print(e.getKey()+”:“+e.getValue()+”:");11
}
85、Tomcat日志级别?
7种: waring>>info>> config>>fine>>finer>>finest
86、Eclipse和MyEclipse工具区别?
Eclipse 免费的,没有集成那么多插件;
MyEclipse 是收费的,继承了很多插件;
87、什么是POI?(老师讲过解析Excel表格或者word文档用过它)
它是Apache 下的开放资源库,用于解析Excel、Word等文档使用;
88、你对JS掌握的如何?说一下js中内置对象有哪些?
String对象:处理所有的字符串操作
Math对象:处理所有的数学运算
Date对象:处理日期和时间的存储、转化和表达
Array对象:提供一个数组的模型、存储大量有序的数据
Event对象,处理事件使用的对象
89、JS中window和document 有何区别?作用范围又有何不同?
Window是窗体对象,document是文本对项; 其中window包含document,Window作用范围比document大; 90、
Java 软件工程师面试笔试题.txt﹃根网线''尽赚了多少人的青春い有时候感动的就是身边微不足道的小事。﹎破碎不是最残酷的 最残酷的是踩着这些碎片却假装不疼痛 固执的寻找﹎将来就算我遇见再怎么完美的人,都有一个缺点,他不是你,_____下辈子要做男生,娶一个像我这样的女生。
一、你对MVC的理解,MVC有什么优缺点?结合Struts,说明在一个Web应用如何去使用? 答:
MVC设计模式(应用观察者模式的框架模式)
M: Model(Business process layer),模型,操作数据的业务处理层,并独立于表现层(Independent of presentation)。
V: View(Presentation layer),视图,通过客户端数据类型显示数据,并回显模型层的执行结果。
C: Controller(Control layer),控制器,也就是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图
MVC框架的一种实现模型 模型二(Servlet-centric):
JSP+Servlet+JavaBean,以控制为核心,JSP只负责显示和收集数据,Sevlet,连接视图和模型,将视图层数据,发送给模型层,JavaBean,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这种MVC的实现模式。
StrutsMVC框架(Web application frameworks)
Struts是使用MVC的实现模式二来实现的,也就是以控制器为核心。
Struts提供了一些组件使用MVC开发应用程序:
Model:Struts没有提供model类。这个商业逻辑必须由Web应用程序的开发者以JavaBean或EJB的形式提供
View:Struts提供了action form创建form bean, 用于在controller和view间传输数据。此外,Struts提供了自定义JSP标签库,辅助开发者用JSP创建交互式的以表单为基础的应用程序,应用程序资源文件保留了一些文本常量和错误消息,可转变为其它语言,可用于JSP中。
Controller:Struts提供了一个核心的控制器ActionServlet,通过这个核心的控制器来调用其他用户注册了的自定义的控制器Action,自定义Action需要符合Struts的自定义Action规范,还需要在struts-config.xml的特定配置文件中进行配置,接收JSP输入字段形成Action form,然后调用一个Action控制器。Action控制器中提供了model的逻辑接口。
二、什么是WebService? 答:
WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。WebService实现不同语言间的调用,是依托于一个标准,webservice是需要遵守WSDL(web服务定义语言)/SOAP(简单请求协议)规范的。WebService=WSDL+SOAP+UDDI(webservice的注册)
Soap是由Soap的part和0个或多个附件组成,一般只有part,在part中有Envelope和Body。
Web Service是通过提供标准的协议和接口,可以让不同的程序集成的一种SOA架构。Web Service的优点
(1)可以让异构的程序相互访问(跨平台)
(2)松耦合
(3)基于标准协议(通用语言,允许其他程序访问)Web Service的基本原理
(1)Service Provider采用WSDL描述服务
(2)Service Provider 采用UDDI将服务的描述文件发布到UDDI服务器(Register server)
(3)Service Requestor在UDDI服务器上查询并 获取WSDL文件
(4)Service requestor将请求绑定到SOAP,并访问相应的服务。
三、什么是中间件?
中间件就是程序中可织入的,可重用的,与业务逻辑无关的各种组件。
中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。
在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
分类:数据访问中间件,远程调用中间件,消息中间件,交易中间件,对象中间件。
举例:
1,RMI(Remote Method Invocations, 远程调用)
2,Load Balancing(负载均衡,将访问负荷分散到各个服务器中)
3,Transparent Fail-over(透明的故障切换)
4,Clustering(集群,用多个小的服务器代替大型机)
5,Back-end-Integration(后端集成,用现有的、新开发的系统如何去集成遗留的系统)
6,Transaction事务(全局/局部)全局事务(分布式事务)局部事务(在同一数据库联接内的事务)
7,Dynamic Redeployment(动态重新部署,在不停止原系统的情况下,部署新的系统)
8,System Management(系统管理)
9,Threading(多线程处理)
10,Message-oriented Middleware面向消息的中间件(异步的调用编程)
11,Component Life Cycle(组件的生命周期管理)
12,Resource pooling(资源池)
13,Security(安全)
14,Caching(缓存)
四、什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处? 答:(1)Presentation layer(表示层)
(1)表示逻辑(生成界面代码)
(2)接收请求
(3)处理业务层抛出的异常
(4)负责规则验证(数据格式,数据非空等)
(5)流程控制
(2)Service layer(服务层/业务层)
(1)封装业务逻辑处理,并且对外暴露接口
(2)负责事务,安全等服务
(3)Persistence layer(持久层)
(1)封装数据访问的逻辑,暴露接口
(2)提供方便的数据访问的方案(查询语言,API,映射机制等)Domain layer(域层)
(1)业务对象以及业务关系的表示
(2)处理简单的业务逻辑
(3)域层的对象可以穿越表示层,业务层,持久层
软件分层结构使得代码维护非常方便,设计明确,各层独立,专注自己擅长的领域。
五、什么是OOP?OOP相对于面向过程编程有哪些优点?
OOP,Object-Oriented Programming,面向对象编程不同于面向过程编程:
(1)OOP关注对象和角色,也就是事物的本质
1)OOP把客观世界中的对象抽象成对应的类;
2)通过类构造实例;
3)通过依赖、继承、实现等形式建立对象间的通信关系
(2)OOP易于扩展,增加或改变业务的功能,无需大幅改动改变源代码
(3)OOP易于建模,OOP就是软件架构师在计算机高级语言中对客观世界的抽象和再现,人们可以很好地理解和建立起计算机中的抽象模型
六、谈谈Overload和Override的区别。
答:
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
七、谈谈HashMap和Hashtable的区别。答:
HashMap是轻量级的(线程不安全的,效率高的)集合,Hashtable是重量级的(线程安全的,效率低的)集合。
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。
Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。
八、请问abstract class和interface有什么区别?
答:
1)接口没有任何的实现,而抽象类它可以有部分的实现也可以没有;
2)如果需要复用或者共享部分代码,应该用抽象类而不是接口;
3)继承无法解决类型的转换问题,接口就是为了解决这一问题而产生的(Java的单继承是接口产生的根本原因)接口是一种抽象的第三方规范,跟对象没什么直接关系。
九、请问软件开发中的设计模式你会使用哪些?
答:我熟悉的设计模式有单例模式,DAO模式,模板方法,工厂模式,委托代理模式,MVC模式等。
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
Singleton模式一般形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
十、类的核心特性有哪些?
类具有封装性、继承性和多态性。
封装性:
类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中方法的实现细节。
继承性:
类的继承性提供从已存在的类创建新类的机制,继承(inheritance)使一个新类自动拥有被继承类(父类)的全部成员。
多态性:
类的多态性提供类中方法执行的多样性,多态性有两种表现形式:重载和覆盖。
十一、请问类与对象有什么区别?
类
类就是某一种事物的一般性的集合体,是相同或相似的各个事物共同特性的一种抽象。
对象
在面向对象概念中,对象(Object)是类的实例(instance)。对象与类的关系就像变量与数据类型的关系一样。
十二、写出生产者消费者模型的实现
十三、用软件工程和Java来叙述购物车(shopping cart)系统实现
十四、文件系统的几个类:FileInputStream、FileOutputStream、FileReader、FileWriter的区别
十五、请写出Java API中最常用的五个包,并且各举两个类加以说明。
十六、请问你在“电信运营支撑系统”中遇到了哪些问题?你是怎么解决的?做这个项目你最大的收获是什么?
十七、请说出几个常用的异常类
答:NullpointException(空指针异常)
ClassNotFoundException(类找不到异常)
ClassCastException(类型转换异常)
IllegalArgumentException(非法参数异常)
ArithmeticException(算术异常)
NumberFormatException(数据格式异常)
IndexOutOfBoundsException(数组下标越界异常)
IllegalStateException(非法语句异常)
十八、什么是进程和线程?两者的区别是什么?
十九、请简要描述一下你做的ShoppingCart项目。
二十、请问网络7层协议,tcp/ip4 层协议是什么?
二十一、Java面向对象的四大特点
二十二、public,private,protected,default访问权限(可见性)
答:
public:全局可见
protected:继承体系结构之间可见
default(或不写):同包可见
private:本类可见。
二十二、public,private,protected,default访问权限(可见性)
答:
public:全局可见
protected:继承体系结构之间可见
default(或不写):同包可见
private:本类可见。
二十三、名词解释
CRM
[Customer Relationship Management, 客户关系管理] ERP
[Enterprise Resource Planning, 企业资源规划] OSS
[Operation Support System, 运营支撑系统] BSS
[Business Support System, 数据定义语言] BOSS
[Business Operation Support System, 数据定义语言] OA
[Office Automatization, 办公自动化] HTTP OOP SOA GUI DDL
[Data Definition Language, 数据定义语言] DML
[Data Manipulation Language, 数据操作语言]
WYSIWYG
所见即所得 [What You See is What You Get] CMP CMT B2B C2C B2C IDE DOM
Client/Server CMM ORM MIS MVC
MVC是Model-View-Controller的简写。“Model” 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现),“View” 是应用的表示面(由JSP页面产生),“Controller” 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
OLE
CORBA
CORBA 标准是公共对象请求代理结构(Common Object Request Broker Architecture),由对象管理组织(Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。其目的为:
用不同的程序设计语言书写
在不同的进程中运行
为不同的操作系统开发。
UML
UML,标准建模语言,包含用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图等。
XML CMMI JRE J2EE
J2EE是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。
JDK AOP OO
Container W3C JMS
Domain POJO JVM JNDI JTA SOAP
[Simple Object Access Protocol,简单对象访问协议] WSDL JDO
JDO是Java对象持久化的新的规范,为Java Data Object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。
TDD DAO IoC
[Inversion of Control, 控制反转] RMI DNS
[Internet Domain Name System, 因特网域名系统] URL URI
二十四、数据库连接池的工作机制
二十五、互联网提供哪些服务?
二十六、请写出JSP的几个隐含内置对象
答:JSP中隐含内置对象
名称 类型
request javax.servlet.http.HttpServletRequest request
response javax.servlet.http.HttpServletResponse
注释和范围 response page javax.lang.Object page
Exception java.lang.Throwable page
pageContext javax.servlet.jsp.PageContext page
session javax.servlet.http.HttpSession session
application javax.servlet.ServletContext ServletContext out javax.servlet.jsp.JspWriter OutputStream
config javax.servlet.ServletConfig ServletConfig
JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):
request 用户端请求,此请求会包含来自GET/POST请求的参数
response 网页传回用户端的回应
page JSP 网页本身
exception 针对错误网页,未捕捉的例外
pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application servlet 正在执行的内容
out 用来传送回应的输出
config Servlet的构架部件
二十七、请你谈谈SSH整合
答:SSH:
Struts(表示层)+Spring(业务层)+Hibernate(持久层)
Struts:
Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。
在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发。(View:沿用JSP,HTTP,Form,Tag,Resourse ;Controller:ActionServlet,struts-config.xml,Action)
Hibernate:
Hibernate是一个持久层框架,它只负责与关系数据库的操作。
Spring:
Spring是一个业务层框架,是一个整合的框架,能够很好地黏合表示层与持久层。
二十八、应用服务器与Web Server的区别
二十九、Java Servlet API中forward()与redirect()的区别
答:
前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
三
十、写一个简单的C/S结构程序,Java 的通信编程,编程题(或问答),用JAVA SOCKET编程,读服务器几个字符,再写入本地显示?
答:Server端程序: package test;import java.net.*;import java.io.*;
public class Server { private ServerSocket ss;private Socket socket;private BufferedReader in;private PrintWriter out;public Server(){ try { ss=new ServerSocket(10000);while(true){ socket = ss.accept();String RemoteIP = socket.getInetAddress().getHostAddress();String RemotePort = “:”+socket.getLocalPort();System.out.println(“A client come in!IP:”+RemoteIP+RemotePort);in = new BufferedReader(new
InputStreamReader(socket.getInputStream()));String line = in.readLine();System.out.println(“Cleint send is :” + line);out = new PrintWriter(socket.getOutputStream(),true);out.println(“Your Message Received!”);out.close();in.close();socket.close();} }catch(IOException e){ out.println(“wrong”);} } public static void main(String[] args){ new Server();} };Client端程序: package test;import java.io.*;import java.net.*;
public class Client { Socket socket;BufferedReader in;PrintWriter out;public Client(){ try { System.out.println(“Try to Connect to 127.0.0.1:10000”);socket = new Socket(“127.0.0.1”,10000);System.out.println(“The Server Connected!”);System.out.println(“Please enter some Character:”);BufferedReader line = new BufferedReader(new
InputStreamReader(System.in));out = new PrintWriter(socket.getOutputStream(),true);out.println(line.readLine());in = new BufferedReader(new InputStreamReader(socket.getInputStream()));System.out.println(in.readLine());out.close();in.close();socket.close();}catch(IOException e){ out.println(“Wrong”);} } public static void main(String[] args){ new Client();} };
Java程序员笔试题
说明:该份题目要求在1小时内答完
1、工厂方法模式和抽象工厂模式的区别
2、jsp/servlet 中 forward, include, reDirect 之间的区别
3、JSP中的两种include包含指令的区别与用法
4、ArrayList和Vector的区别,HashMap和Hashtable及HashSet的区别?
5、请说明在实际应用中,java.sql 包中的Statement和PreparedStatement有何区别?
6、如何遍历一个集合(collection),并在屏幕上打印出集合中的每个元素public void printStr
(Collection cols){
}
7、写一个方法,实现字符串的反转,例如:输入abc,输出cba
PublicString reverseStr(String str){
//代码
}
8、输入为整数数组,请写出如下的排序算法,使得数组data里面存储的数字随数组脚标的增大而依
次增大,即越小的数字存储的位置越靠前
Public void sort(int[]data){
}
9、用户在JSP: input.jsp中输入姓名和手机号码,点”Done”按钮来提交请求到一个/ 6
servlet:test.java。test.java将输入的姓名和手机号码存储在文件store.txt里。
请写出input.jsp, test.java的程序源码,并在input.jsp和test.java中分别通过js和java代码对输入进行校验,如果1)姓名项没有填写或者输入的长度超过了20个字符2)手机号码项没有填写,或者输入了非数字的字符或者输入的长度不是13位,则返回input.jsp,并给出相应的错误提示。
10、有若干条有关城市的信息,每条包括如下属性:ID(唯一递增的序列),CITY(城市名称),DESC(城市说明),要求设计一套数据结构及算法使得1)所有登陆系统的用户均能使用这些城市信息2)能够根据城市ID 号或名称获得城市的其他信息3)如果从该数据结构中找不到合适的城市信息,可以往该数据结构中添加新的城市信息,但相同的城市(ID号或名称有任意一个相同均认为是同一城市)在数据结构中只能有一条记录 4)如任一条城市信息,超过两个小时没有被使用(查询)则需自动将其删除
pubic class CityCache{
}
11、读下面一段程序,写出运行结果
----
pubicclassBaseClass{
static{
System.out.println(“aaaaa”);/ 6
}
BaseClass(){
System.out.println(“11111”);
}
}
publicclassDerivedClass
extendsBaseClass{
static{
System.out.println(“bbbbb”);
}
DerivedClass(){
System.out.println(“22222”);
}
}
publicclassStartRun {
public static void main(String[ ] args){
DerivedClasssdc 1 = newDerivedClass();
dc1 = newDerivedClass();
}
}
12、请写出符合要求的sql 语句(假定数据库为Oracle)。/ 6
现有数据表a,建表语句如下:
create table a(bm char(4),——编码
mc varchar2(20)——名称)
表中数据如下
bmmc
11111111
11121111
11131111
11141111
要求1:用一条sql语句实现对表a中数据的复制,即达到如下的结果(2)bmmc
11111111
11121111
11131111
11141111
11111111
11121111
11131111
11141111/ 6
要求2:请删除表中重复的记录(bm和mc都相同的记录为重复记录)
13、classStack {
LinkedListlist = new LinkedList()
public synchronized void push(Objectx){
synchronized(list){
list.addLast(x);
notify();
}
}
public synchronized Object pop(){
synchronized(list){
if(list.size()<=0)
wait();
return list.removeLast();
}
}/ 6
}
请问上面这个类中有什么错误?应该怎么解决?14、15、请写出MSSQL、ServerMysql和ORACE实现分页算法的sql语句。UNIX和网络基础,依次写出完成下列的操作命令,最好有常用参数的简单说明
1)如何显示当前的IP配置信息
2)查看当前目录
3)拷贝文件或目录
4)移动文件或目录
5)删除文件或目录
6)切换用户
7)修改文件或目录的权限
8)查看日志文件的最后1行
9)查看系统内存、CPU的使用状况
10)查看系统正在运行的和apache相关的进程/ 6
深圳市九城恩科软件技术有限公司
java程序员笔试题
JAVA 程序员笔试题
时间:30分钟
试题一:
简单描述一下什么是事务管理,事务管理中有哪些语句?
姓名:
试题二:
跳出当前循环的关键词是什么?继续本次循环的关键词是什么?
试题三:
在JSP页面源代码中写 “${flag}”是代表什么意思?
试题四:
请写出最少五种设计模式的名称。
试题五:
请写出Eclipse 中下列功能的快捷键: 删除当前行: 注释当前行:
代码助手完成一些代码的插入: 打开类型: 打开资源:
试题六:
什么情况下Eclipse不编译生成Class文件?
深圳市九城恩科软件技术有限公司
java程序员笔试题
试题七:
public static void main(String[] args){
int i=3,j=16;do{ if(++i>=j--)continue;}while(i<9);System.out.println(“i=”+i+“;j=”+j);} 这段程序运行后输出的结果是什么?
试题八:
public class One {
} public class Two extends One {
} protected void printA(){System.out.println(“two A”);} private void printB(){System.out.println(“two B”);} public static void main(String[] args){ Two t = new Two();t.printAB();} protected void printA(){System.out.println(“one A”);} private void printB(){System.out.println(“one B”);} protected void printAB(){printA();printB();} 这段程序运行后输出的结果是什么?
试题九:
有一个表 “表A” 中包含 “姓名”,“成绩”两个字段,请写一个SQL语句查询出“成绩”大于60分的,“姓名”有重复的人的名字
试题十:
请写一个方法实现:传入的一个大于10位的字符串,把字符串的最后两位移动到字符串的第4位后面。