1、基礎問答java
不能被繼承的類有[Long Double Float Short Void Class Math String]c++
他們都被final修飾git
類能夠被繼承[Thread ClassLoader Number Calendar
]程序員
1.下面哪些類能夠被繼承?web
java.lang.Thread (T)面試
java.lang.Number (T)sql
java.lang.Double (F)數據庫
java.lang.Math (F)編程
java.lang.Void (F)windows
java.lang.Class (F)
java.lang.ClassLoader (T)
2.抽象類和接口的區別
(1)接口能夠被多重implements,抽象類只能被單一extends
(2)接口只有定義,抽象類能夠有定義和實現
(3)接口的字段定義默認爲:public static final, 抽象類字段默認是"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 還能夠再細分爲 Stateful Session Bean 與 Stateless Session Bean .這兩種的 Session Bean均可以將系統邏輯放在 method之中執行,不一樣的是 Stateful Session Bean 能夠記錄呼叫者的狀態,所以一般來講,一個使用者會有一個相對應的 Stateful Session Bean 的實體.Stateless Session Bean 雖然也是邏輯組件,可是他卻不負責記錄使用者狀態,也就是說當使用者呼叫 Stateless Session Bean 的時候,EJB Container 並不會找尋特定的 Stateless Session Bean 的實體來執行這個 method.換言之,極可能數個使用者在執行某個 Stateless Session Bean 的 methods 時,會是同一個 Bean 的 Instance 在執行.從內存方面來看, Stateful Session Bean 與 Stateless Session Bean 比較, Stateful Session Bean 會消耗 J2EE Server 較多的內存,然而 Stateful Session Bean 的優點卻在於他能夠維持使用者的狀態.
8.XML的解析方法
Sax,DOM,JDOM
9.什麼是Web Service?
Web Service就是爲了使原來各孤立的站點之間的信息可以相互通訊、共享而提出的一種接口。
Web Service所使用的是Internet上統1、開放的標準,如HTTP、XML、SOAP(簡單對象訪問協議)、WSDL等,因此Web Service能夠在任何支持這些標準的環境(Windows,Linux)中使用。
注:SOAP協議(Simple Object Access Protocal,簡單對象訪問協議),它是一個用於分散和分佈式環境下網絡信息交換的基於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僞碼實現,定不會檢查所含文件的變化,適用於包含靜態頁面
2、Java編程與程序運行結果
1.Java編程,打印昨天的當前時刻
public class YesterdayCurrent{
public void main(String[] args){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
System.out.println(cal.getTime());
}
}
2.文件讀寫,實現一個計數器
public int getNum(){
int i = -1;
try{
String stri="";
BufferedReader in = new BufferedReader(new FileReader(f));
while((stri=in.readLine())!=null){
i = Integer.parseInt(stri.trim());
}
in.close();
}catch(Exception e){
e.printStackTrace();
}
return i;
}
更多相關面試題請參閱這裏:
.Net面試題集(最全最新)
一道有趣的C#考試題目
某公司招收.net高級程序員的試卷
Google:21道能力傾向測試面試題
GOOGLE面試題
Google的面試題,你能作出多少?
聽說是阿爾卡特(中國)的面試題目(C)
成爲編程高手的基礎素養
微軟面試題——微軟的智力題——三個燈泡
Java面試題彙總及c/c++面試題(最新最全)
J2EE面試題集(附答案)
Java面試題集(歡迎你們踊躍提供)
更多相關面試試題請點擊左側的相關內容主題……
public void setNum(){
int i = getNum();
i++;
try{
PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter(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{
public static 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;
}
}
3、數據庫
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(String source){
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++;
}
return result;
}
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(int i=0;i System.out.println(ii[i]);
}
//desc
for(int i=(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 static final String EMPTY = "";
public static final String ZERO = "零";
public static final String ONE = "壹";
public static final String TWO = "貳";
public static final String THREE = "叄";
public static final String FOUR = "肆";
public static final String FIVE = "伍";
public static final String SIX = "陸";
public static final String SEVEN = "柒";
public static final String EIGHT = "捌";
public static final String NINE = "玖";
public static final String TEN = "拾";
public static final String HUNDRED = "佰";
public static final String THOUSAND = "仟";
public static final String TEN_THOUSAND = "萬";
public static final String HUNDRED_MILLION = "億";
public static final String YUAN = "元";
public static final String JIAO = "角";
public static final String FEN = "分";
public static final String DOT = ".";
private static SimpleMoneyFormat formatter = null;
private HashMap chineseNumberMap = new HashMap();
private HashMap chineseMoneyPattern = new HashMap();
private NumberFormat numberFormat = NumberFormat.getInstance();
private SimpleMoneyFormat() {
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 static SimpleMoneyFormat getInstance() {
if (formatter == null)
formatter = new SimpleMoneyFormat();
return formatter;
}
public String format(String moneyStr) {
checkPrecision(moneyStr);
String result;
result = convertToChineseNumber(moneyStr);
result = addUnitsToChineseMoneyString(result);
return result;
}
public String format(double moneyDouble) {
return format(numberFormat.format(moneyDouble));
}
public String format(int moneyInt) {
return format(numberFormat.format(moneyInt));
}
public String format(long moneyLong) {
return format(numberFormat.format(moneyLong));
}
public String format(Number moneyNum) {
return format(numberFormat.format(moneyNum));
}
private String convertToChineseNumber(String moneyStr) {
String result;
StringBuffer cMoneyStringBuffer = new StringBuffer();
for (int i = 0; i < moneyStr.length(); i++) {
cMoneyStringBuffer.append(chineseNumberMap.get(moneyStr.substring(i, i + 1)));
}
//拾佰仟萬億等都是漢字裏面纔有的單位,加上它們
int indexOfDot = cMoneyStringBuffer.indexOf(DOT);
int moneyPatternCursor = 1;
for (int i = indexOfDot - 1; i > 0; i--) {
cMoneyStringBuffer.insert(i, chineseMoneyPattern.get(EMPTY + moneyPatternCursor));
moneyPatternCursor = moneyPatternCursor == 8 ? 1 : moneyPatternCursor + 1;
}
String fractionPart = 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();
return result;
}
private String addUnitsToChineseMoneyString(String moneyStr) {
String result;
StringBuffer cMoneyStringBuffer = new StringBuffer(moneyStr);
int indexOfDot = 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 {
public static void main(String[] args) {
//String numberString = args[1];//args[0] is the class name "NumToChinese"
String numberString = "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]="億";
}
}
StringBuffer result = new StringBuffer();
for (int j=0;j<length;j++){
char first = numberChar[j];
String second = 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 {
private String name;
public String getName() {
return name;
}
public Ball(String name) {
this.name = name;
}
public void play() {
ball = new Ball(\"Football\");
System.out.println(ball.getName());
}
}
這個錯誤不容易發現。
答案: 錯。\"interface Rollable extends 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 = new Ball(\"PingPang\");\"。在Ball類的Play()方法中,\"ball = new Ball(\"Football\");\"改變了ball的reference,而這裏的ball來自Rollable interface,Rollable interface裏的ball是public static final的,final的object是不能被改變reference的。所以編譯器將在\"ball = new Ball(\"Football\");\"這裏顯示有錯。
網魂工做室 Says:
2006/04/04 10:14
8.
public class Something {
public static void main(String[] args) {
Something s = new Something();
System.out.println(\"s.doSomething() returns \" + doSomething());
}
public String 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 {
private static 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 void pX(){
System.out.println(x);
}
public static void main(String[] args) {
new C().pX();
}
}
答案:錯誤。在編譯時會發生錯誤(錯誤描述不一樣的JVM有不一樣的信息,意思就是未明確的x調用,兩個x都匹配(就象在同時import java.util和java.sql兩個包時直接聲明Date同樣)。對於父類的變量,能夠用super.x來明確,而接口的屬性默認隱含爲 public static final.因此能夠經過A.x來明確。
網魂工做室 Says:
2006/04/04 10:13
6.
class Something {
int i;
public void doSomething() {
System.out.println(\"i = \" + i);
}
}
有什麼錯呢? 看不出來啊。
答案: 正確。輸出的是\"i = 0\"。int i屬於instant variable (實例變量,或叫成員變量)。instant variable有default value。int的default value是0。
7.
class Something {
final int i;
public void doSomething() {
System.out.println(\"i = \" + i);
}
}
和上面一題只有一個地方不一樣,就是多了一個final。這難道就錯了嗎?
答案: 錯。final int i是個final的instant variable (實例變量,或叫成員變量)。final的instant variable沒有default value,必須在constructor (構造器)結束以前被賦予一個明確的值。能夠修改成\"final int i = 0;\"。