Java笔试题【7】
来源:互联网 发布:java中scanner用法 编辑:程序博客网 时间:2024/06/05 06:36
一、基础问答
不能被继承的类有[Long Double Float Short Void Class Math String]
他们都被final修饰
类可以被继承[Thread ClassLoader Number Calendar
]
1.下面哪些类可以被继承?
java.lang.Thread (T)
java.lang.Number (T)
java.lang.Double (F)
java.lang.Math (F)
java.lang.Void (F)
java.lang.Class (F)
java.lang.ClassLoader (T)
2.抽象类和接口的区别
(1)接口可以被多重implements,抽象类只能被单一extends
(2)接口只有定义,抽象类可以有定义和实现
(3)接口的字段定义默认为:public staticfinal, 抽象类字段默认是"friendly"(本包可见)
3.Hashtable的原理,并说出HashMap与Hashtable的区别
HashTable的原理:通过节点的关键码确定节点的存储位置,即给定节点的关键码k,通过一定的函数关系H(散列函数),得到函数值H(k),将此值解释为该节点的存储地址.
HashMap 与Hashtable很相似,但HashMap 是非同步(unsynchronizded)和可以以null为关键码的.
4.forward和redirect的区别
forward: an internal transfer in servlet
redirect: 重定向,有2次request,第2次request将丢失第一次的attributs/parameters等
5.什么是Web容器?
实现J2EE规范中web协议的应用.该协议定义了web程序的运行时环境,包括:并发性,安全性,生命周期管理等等.
6.解释下面关于J2EE的名词
(1)JNDI:Java Naming & Directory Interface,JAVA命名目录服务.主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能.
(2)JMS:Java Message Service,JAVA消息服务.主要实现各个应用程序之间的通讯.包括点对点和广播.
(3)JTA:Java Transaction API,JAVA事务服务.提供各种分布式事务服务.应用程序只需调用其提供的接口即可.
(4)JAF: Java Action FrameWork,JAVA安全认证框架.提供一些安全控制方面的框架.让开发者通过各种部署和自定义实现自己的个性安全控制策略.
(5)RMI:Remote Method Interface,远程方法调用
7.EJB是基于哪些技术实现的?并说 出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别.
EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现.
SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件.EntityBean被用来代表应用系统中用到的数据.对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑;EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体.
Session Bean 还可以再细分为 StatefulSession Bean 与 Stateless Session Bean .这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体.Stateless SessionBean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 StatelessSession Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method.换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行.从内存方面来看, Stateful Session Bean 与 Stateless SessionBean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态.
8.XML的解析方法
Sax,DOM,JDOM
9.什么是Web Service?
Web Service就是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。
Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。
注:SOAP协议(Simple Object AccessProtocal,简单对象访问协议),它是一个用于分散和分布式环境下网络信息交换的基于XML的通讯协议。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。
优势:
(1).跨平台。
(2).SOAP协议是基于XML和HTTP这些业界的标准的,得到了所有的重要公司的支持。
(3).由于使用了SOAP,数据是以ASCII文本的方式而非二进制传输,调试很方便;并且由于这样,它的数据容易通过防火墙,不需要防火墙为了程序而单独开一个“漏洞”。
(4).此外,WebService实现的技术难度要比CORBA和DCOM小得多。
(5).要实现B2B集成,EDI比较完善与比较复杂;而用WebService则可以低成本的实现,小公司也可以用上。
(6).在C/S的程序中,WebService可以实现网页无整体刷新的与服务器打交道并取数。
缺点:
(1).WebService使用了XML对数据封装,会造成大量的数据要在网络中传输。
(2).WebService规范没有规定任何与实现相关的细节,包括对象模型、编程语言,这一点,它不如CORBA。
10.多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify
11.JSP中动态INCLUDE与静态INCLUDE的区别?
动态INCLUDE用jsp:include动作实现
它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数
静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面
二、Java编程与程序运行结果
1.Java编程,打印昨天的当前时刻
public class YesterdayCurrent{
public voidmain(String[] args){
Calendar cal= Calendar.getInstance();
cal.add(Calendar.DATE, -1);
System.out.println(cal.getTime());
}
}
2.文件读写,实现一个计数器
public intgetNum(){
int i =-1;
try{
Stringstri="";
BufferedReader in = new BufferedReader(new FileReader(f));
while((stri=in.readLine())!=null){
i = Integer.parseInt(stri.trim());
}
in.close();
}catch(Exception e){
e.printStackTrace();
}
returni;
}
更多相关面试题请参阅这里:
.Net面试题集(最全最新)
一道有趣的C#考试题目
某公司招收.net高级程序员的试卷
Google:21道能力倾向测试面试题
GOOGLE面试题
Google的面试题,你能做出多少?
据说是阿尔卡特(中国)的面试题目(C)
成为编程高手的基础素养
微软面试题——微软的智力题——三个灯泡
Java面试题汇总及c/c++面试题(最新最全)
J2EE面试题集(附答案)
Java面试题集(欢迎大家踊跃提供)
更多相关面试试题请点击左侧的相关内容主题……
public voidsetNum(){
int i =getNum();
i++;
try{
PrintWriter out=new PrintWriter(new BufferedWriter(newFileWriter(f,false)));
out.write(String.valueOf(i)); //可能是编码的原因,如果直接写入int的话,将出现java编码和windows编码的混乱,因此此处写入的是String
out.close() ;
}catch(Exception e){
e.printStackTrace();
}
}
3. 指出下面程序的运行结果:
class A{
static{
System.out.print("1");
}
public A(){
System.out.print("2");
}
}
class B extends A{
static{
System.out.print("a");
}
public B(){
System.out.print("b");
}
}
public class Hello{
publicstatic void main(String[] ars){
A ab =new B(); //执行到此处,结果: 1a2b
ab = new B(); //执行到此处,结果:1a2bab
}
}
注:类的static 代码段,可以看作是类首次加载(被虚拟机加载)执行的代码,而对于类的加载,首先要执行其基类的构造,再执行其本身的构造
4.写一个Singleton模式的例子
public class Singleton{
private static Singleton single = new Singleton();
private Singleton(){}
public Singleton getInstance(){
return single;
}
}
三、数据库
1.删除表的重复记录
如果记录完全相同才算重复记录,那么: (sql server2000下测试通过)
select distinct * into #tmpp from tid
delete from tid
insert into tid select * from #tmpp
drop table #tmpp
如果有id主键(数字,自增1的那种),那么:(sql server2000下测试通过)
delete from tableA where id not in
(select id = min(id) from tableA group by name)
2.delete from tablea & truncate table tablea的区别
truncate 语句执行速度快,占资源少,并且只记录页删除的日志;
delete 对每条记录的删除均需要记录日志
JAVA编程题
1.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
[hidden]import java.util.*;
public class bycomma{
public static String[] splitStringByComma(Stringsource){
if(source==null||source.trim().equals(""))
return null;
StringTokenizer commaToker = new StringTokenizer(source,",");
String[]result = new String[commaToker.countTokens()];
int i=0;
while(commaToker.hasMoreTokens()){
result[i] =commaToker.nextToken();
i++;
}
returnresult;
}
public static void main(String args[]){
String[] s =splitStringByComma("5,8,7,4,3,9,1");
int[] ii = new int[s.length];
for(int i = 0;i ii[i] =Integer.parseInt(s[i]);
}
Arrays.sort(ii);
//asc
for(inti=0;i System.out.println(ii[i]);
}
//desc
for(inti=(s.length-1);i>=0;i--){
System.out.println(ii[i]);
}
}
}[/hidden]
2.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。
[hidden]package test.format;
import java.text.NumberFormat;
import java.util.HashMap;
public class SimpleMoneyFormat {
public staticfinal String EMPTY = "";
public staticfinal String ZERO = "零";
public staticfinal String ONE = "壹";
public staticfinal String TWO = "贰";
public staticfinal String THREE = "叁";
public staticfinal String FOUR = "肆";
public staticfinal String FIVE = "伍";
public staticfinal String SIX = "陆";
public staticfinal String SEVEN = "柒";
public staticfinal String EIGHT = "捌";
public staticfinal String NINE = "玖";
public staticfinal String TEN = "拾";
public staticfinal String HUNDRED = "佰";
public staticfinal String THOUSAND = "仟";
public staticfinal String TEN_THOUSAND = "万";
public staticfinal String HUNDRED_MILLION = "亿";
public staticfinal String YUAN = "元";
public staticfinal String JIAO = "角";
public staticfinal String FEN = "分";
public staticfinal String DOT = ".";
private staticSimpleMoneyFormat formatter = null;
privateHashMap chineseNumberMap = new HashMap();
privateHashMap chineseMoneyPattern = new HashMap();
privateNumberFormat numberFormat = NumberFormat.getInstance();
privateSimpleMoneyFormat() {
numberFormat.setMaximumFractionDigits(4);
numberFormat.setMinimumFractionDigits(2);
numberFormat.setGroupingUsed(false);
chineseNumberMap.put("0", ZERO);
chineseNumberMap.put("1", ONE);
chineseNumberMap.put("2", TWO);
chineseNumberMap.put("3", THREE);
chineseNumberMap.put("4", FOUR);
chineseNumberMap.put("5", FIVE);
chineseNumberMap.put("6", SIX);
chineseNumberMap.put("7", SEVEN);
chineseNumberMap.put("8", EIGHT);
chineseNumberMap.put("9", NINE);
chineseNumberMap.put(DOT, DOT);
chineseMoneyPattern.put("1", TEN);
chineseMoneyPattern.put("2", HUNDRED);
chineseMoneyPattern.put("3", THOUSAND);
chineseMoneyPattern.put("4", TEN_THOUSAND);
chineseMoneyPattern.put("5", TEN);
chineseMoneyPattern.put("6", HUNDRED);
chineseMoneyPattern.put("7", THOUSAND);
chineseMoneyPattern.put("8", HUNDRED_MILLION);
}
public staticSimpleMoneyFormat getInstance() {
if(formatter == null)
formatter= new SimpleMoneyFormat();
returnformatter;
}
public Stringformat(String moneyStr) {
checkPrecision(moneyStr);
Stringresult;
result =convertToChineseNumber(moneyStr);
result =addUnitsToChineseMoneyString(result);
returnresult;
}
public Stringformat(double moneyDouble) {
returnformat(numberFormat.format(moneyDouble));
}
public Stringformat(int moneyInt) {
returnformat(numberFormat.format(moneyInt));
}
public Stringformat(long moneyLong) {
returnformat(numberFormat.format(moneyLong));
}
public Stringformat(Number moneyNum) {
returnformat(numberFormat.format(moneyNum));
}
private StringconvertToChineseNumber(String moneyStr) {
Stringresult;
StringBuffercMoneyStringBuffer = new StringBuffer();
for (int i =0; i < moneyStr.length(); i++) {
cMoneyStringBuffer.append(chineseNumberMap.get(moneyStr.substring(i, i +1)));
}
//拾佰仟万亿等都是汉字里面才有的单位,加上它们
intindexOfDot = cMoneyStringBuffer.indexOf(DOT);
intmoneyPatternCursor = 1;
for (int i =indexOfDot - 1; i > 0; i--) {
cMoneyStringBuffer.insert(i, chineseMoneyPattern.get(EMPTY +moneyPatternCursor));
moneyPatternCursor = moneyPatternCursor == 8 ? 1 : moneyPatternCursor +1;
}
StringfractionPart = cMoneyStringBuffer.substring(cMoneyStringBuffer.indexOf("."));
cMoneyStringBuffer.delete(cMoneyStringBuffer.indexOf("."),cMoneyStringBuffer.length());
while(cMoneyStringBuffer.indexOf("零拾") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零拾"),cMoneyStringBuffer.indexOf("零拾") + 2, ZERO);
}
while(cMoneyStringBuffer.indexOf("零佰") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零佰"),cMoneyStringBuffer.indexOf("零佰") + 2, ZERO);
}
while(cMoneyStringBuffer.indexOf("零仟") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零仟"),cMoneyStringBuffer.indexOf("零仟") + 2, ZERO);
}
while(cMoneyStringBuffer.indexOf("零万") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零万"),cMoneyStringBuffer.indexOf("零万") + 2,TEN_THOUSAND);
}
while(cMoneyStringBuffer.indexOf("零亿") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零亿"),cMoneyStringBuffer.indexOf("零亿") + 2,HUNDRED_MILLION);
}
while(cMoneyStringBuffer.indexOf("零零") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零零"),cMoneyStringBuffer.indexOf("零零") + 2, ZERO);
}
if(cMoneyStringBuffer.lastIndexOf(ZERO) == cMoneyStringBuffer.length() - 1)
cMoneyStringBuffer.delete(cMoneyStringBuffer.length() - 1,cMoneyStringBuffer.length());
cMoneyStringBuffer.append(fractionPart);
result =cMoneyStringBuffer.toString();
returnresult;
}
private StringaddUnitsToChineseMoneyString(String moneyStr) {
Stringresult;
StringBuffercMoneyStringBuffer = new StringBuffer(moneyStr);
intindexOfDot = cMoneyStringBuffer.indexOf(DOT);
cMoneyStringBuffer.replace(indexOfDot, indexOfDot + 1, YUAN);[/hidden]
欢迎加入更多J2EE面试题……
更多相关面试题请参阅这里:
一道有趣的C#考试题目
某公司招收.net高级程序员的试卷
.Net面试题集(最全最新)(欢迎加入更多.Net 面试题)
Google:21道能力倾向测试面试题
GOOGLE面试题
Google的面试题,你能做出多少?
据说是阿尔卡特(中国)的面试题目(C)
世界大公司面试题——微软的面试题
世界大公司面试题——微软的面试题(答案)
成为编程高手的基础素养
微软面试题——微软的智力题——三个灯泡
Java面试题汇总及c/c++面试题(最新最全)
J2EE面试题集(附答案)
Java常见面试题集--面试题全面综合(一)
Java常见面试题集--面试题全面综合(二)
Java面试题集(欢迎大家踊跃提供)
.Net面试题集(最全最新)(欢迎加入更多.Net 面试题)
更多相关面试试题
更多面试题请点击左侧的相关内容主题……
J2EE面试题集(附答案) J2EE认证试题集
Tags: J2EE面试题集锦(附答案), J2EE面试题 , JAVA面试题 , J2EE常见面试题
上一篇: Java面试题集(欢迎提供更多Java面试题)
下一篇: Java面试题(最新最全Java面试题汇总)
评论(12) | 引用(0) | 阅读(32204)
引用地址:
注意: 该地址仅在今日23:59:59之前有效
travel Says:
2008/03/19 00:13
2.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。
测试过了,数字自己再转换吧。(小数还没处理,看个想法吧 )
public class NumToChinese {
publicstatic void main(String[] args) {
//StringnumberString = args[1];//args[0] is the class name "NumToChinese"
StringnumberString = "123400567089";
System.out.println("original number is :"+numberString);
char[] numberChar= numberString.toCharArray();
int length =numberString.length();
String[]chineseChar = new String[length];
chineseChar[0]="";
for (int i =1;i<length; i++){
switch(i%8) {
case 1:chineseChar[i]="十";break;
case 2: chineseChar[i]="百";break;
case 3:chineseChar[i]="千";break;
case 4:chineseChar[i]="万";break;
case 5:chineseChar[i]="十";break;
case 6:chineseChar[i]="百";break;
case 7:chineseChar[i]="千";break;
case 0:chineseChar[i]="亿";
}
}
StringBufferresult = new StringBuffer();
for (intj=0;j<length;j++){
charfirst = numberChar[j];
Stringsecond = chineseChar[length-1-j];
if(first!='0')
result.append(first).append(second);
else {
if(((length-1-j)%4)==0)
result.append(second);
else{
String temp = result.substring(result.length()-1);
if(!temp.equals("零")) result.append("零");
}
}
}
System.out.println("the reversed chinese number is :"+result.toString());
}
}
牛发癫 Says:
2008/03/10 11:29
好东西,不顶就对不住你了
不 Says:
2007/11/02 16:09
谢谢
skyfire82 Says:
2007/08/27 13:46
好东西 顶
dfdsfdsf Says:
2007/08/26 19:09
dcffd
acici Says:
2007/08/12 09:57
查看详情
chenzhengrong Says:
2007/08/10 10:43
太叼了!!!
网魂工作室 Says:
2006/04/04 10:14
11.
interface Playable {
void play();
}
interface Bounceable {
void play();
}
interface Rollable extends Playable, Bounceable {
Ball ball =new Ball(\"PingPang\");
}
class Ball implements Rollable {
privateString name;
publicString getName() {
returnname;
}
publicBall(String name) {
this.name = name;
}
public voidplay() {
ball =new Ball(\"Football\");
System.out.println(ball.getName());
}
}
这个错误不容易发现。
答案: 错。\"interface Rollableextends Playable, Bounceable\"没有问题。interface可继承多个interfaces,所以这里没错。问题出在interface Rollable里的\"Ball ball = new Ball(\"PingPang\");\"。任何在interface里声明的interface variable (接口变量,也可称成员变量),默认为public static final。也就是说\"Ball ball = new Ball(\"PingPang\");\"实际上是\"public static final Ball ball = newBall(\"PingPang\");\"。在Ball类的Play()方法中,\"ball = newBall(\"Football\");\"改变了ball的reference,而这里的ball来自Rollableinterface,Rollable interface里的ball是public static final的,final的object是不能被改变reference的。因此编译器将在\"ball = new Ball(\"Football\");\"这里显示有错。
网魂工作室 Says:
2006/04/04 10:14
8.
public class Something {
publicstatic void main(String[] args) {
Something s = new Something();
System.out.println(\"s.doSomething() returns \" +doSomething());
}
publicString doSomething() {
return\"Do something ...\";
}
}
看上去很完美。
答案: 错。看上去在main里call doSomething没有什么问题,毕竟两个methods都在同一个class里。但仔细看,main是static的。static method不能直接call non-static methods。可改成\"System.out.println(\"s.doSomething() returns \" +s.doSomething());\"。同理,static method不能访问non-static instant variable。
9.
此处,Something类的文件名叫OtherThing.java
class Something {
privatestatic void main(String[] something_to_do) {
System.out.println(\"Do something ...\");
}
}
这个好像很明显。
答案: 正确。从来没有人说过Java的Class名字必须和其文件名相同。但public class的名字必须和文件名相同。
10.
interface A{
int x = 0;
}
class B{
int x =1;
}
class C extends B implements A {
public voidpX(){
System.out.println(x);
}
public staticvoid main(String[] args) {
newC().pX();
}
}
答案:错误。在编译时会发生错误(错误描述不同的JVM有不同的信息,意思就是未明确的x调用,两个x都匹配(就象在同时importjava.util和java.sql两个包时直接声明Date一样)。对于父类的变量,可以用super.x来明确,而接口的属性默认隐含为 public static final.所以可以通过A.x来明确。
网魂工作室 Says:
2006/04/04 10:13
6.
class Something {
int i;
public voiddoSomething() {
System.out.println(\"i = \" + i);
}
}
有什么错呢? 看不出来啊。
答案: 正确。输出的是\"i = 0\"。int i属於instant variable (实例变量,或叫成员变量)。instant variable有defaultvalue。int的default value是0。
7.
class Something {
final int i;
public voiddoSomething() {
System.out.println(\"i = \" + i);
}
}
和上面一题只有一个地方不同,就是多了一个final。这难道就错了吗?
答案: 错。final int i是个final的instant variable (实例变量,或叫成员变量)。final的instantvariable没有default value,必须在constructor(构造器)结束之前被赋予一个明确的值。可以修改为\"finalint i = 0;\"。
- java笔试题7
- Java笔试题【7】
- 华为Java笔试题笔试
- java笔试题
- java笔试题
- Java笔试题
- java经典笔试题
- 一JAVA笔试题
- Java笔试题集锦
- JAVA笔试题
- java笔试题大全
- 一道java笔试题
- JAVA笔试题
- Java笔试题
- Java笔试题总结
- JAVA笔试改错题
- 华为JAVA笔试题
- java笔试题
- 一步一步写web之初识web(四)
- java笔试题【5】
- Java良好的编码习惯建议
- Java笔试题【6】
- three way of waterfall flow
- Java笔试题【7】
- Android使用socket.io实现即时通讯
- JSON Web Tokens的实现原理
- JAVA 基础系列之 重排序和Volatile
- Visual Basic快捷教程——流程控制
- JAVA笔试题【8】
- shipyard docker-ui集群
- python:计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上
- 代价函数