一、Java基礎知識
1.Java有那些基本數據類(lèi)型,String是不是基本數據類(lèi)型,他們有何區別。
2.字符串的操作:
寫(xiě)一個(gè)方法,實(shí)現字符串的反轉,如:輸入abc,輸出cba
寫(xiě)一個(gè)方法,實(shí)現字符串的替換,如:輸入bbbwlirbbb,輸出bbbhhtccc。
3.數據類(lèi)型之間的轉換
如何將數值型字符轉換為數字(Integer,Double)
如何將數字轉換為字符
如何取小數點(diǎn)前兩位,并四舍五入。
4.日期和時(shí)間
如何取得年月日,小時(shí)分秒
如何取得從1970年到現在的毫秒數
如何獲取某個(gè)日期是當月的最后一天
如何格式化日期
5.數組和集合
6.文件和目錄(I/O)操作
如何列出某個(gè)目錄下的所有文件
如何列出某個(gè)目錄下的所有子目錄
判斷一個(gè)文件或目錄是否存在
如何讀寫(xiě)文件
7.Java多態(tài)的實(shí)現(繼承、重載、覆蓋)
8.編碼轉換,怎樣實(shí)現將GB2312編碼的字符串轉換為ISO-8859-1編碼的字符串。
9.Java中訪(fǎng)問(wèn)數據庫的步驟,Statement和PreparedStatement之間的區別。
10.找出下列代碼可能存在的錯誤,并說(shuō)明原因:
二、JSP&Servlet技術(shù)
1.描述JSP和Servlet的區別、共同點(diǎn)、各自應用的范圍
2.在Web開(kāi)發(fā)中需要處理HTML標記時(shí),應做什么樣的處理,要篩選那些字符(< > & “”)
3.在JSP中如何讀取客戶(hù)端的請求,如何訪(fǎng)問(wèn)CGI變量,如何確定某個(gè)Jsp文件的真實(shí)路徑。
4.描述Cookie和Session的作用,區別和各自的應用范圍,Session工作原理。
5.列出Jsp中包含外部文件的方式,兩者有何區別。
6.說(shuō)明Jsp中errorPage的作用,應用范圍。
7.介紹在Jsp中如何使用JavaBeans。
8.簡(jiǎn)單介紹JSP的標記庫
9.Jsp和Servlet中的請求轉發(fā)分別如何實(shí)現。
三、J2EE相關(guān)知識
1.介紹J2EE、J2SE、J2SE的區別。
2.J2EE是一種技術(shù)還是一種平臺,他提供了那些技術(shù)。
3.什么是Application Server,它有什么功能和優(yōu)點(diǎn)。
4.簡(jiǎn)單介紹連接池的優(yōu)點(diǎn)和原理。
5.Web.xml的作用
四、其他
1.Web安全性的考慮(表單驗證、瀏覽器Basic方式的驗證,應用程序的安全性,SSL,代碼考慮)
2.簡(jiǎn)單介紹您所了解的MVC。
3.簡(jiǎn)單介紹所了解的XML。
4.文檔和編碼規范
5.Java中的分頁(yè)、效率考慮。
6.簡(jiǎn)單介紹您所了解的structs。
1.xml在項目中的作用
2.s-EJB 與 e-EJB的區別
3.會(huì )話(huà)面的作用
4.cmp與bmp的優(yōu)缺點(diǎn)
5.j2me程序的必需的幾個(gè)部分
6.c/s與b/s的區別
7.構建一個(gè)connect pool,然后再調用它,
8.j2ee平臺與dotnet平臺的區別
9.ejb的life cycle
10.session bean 和 entity bean的區別
11.ejb中的transaction機制
12.synchronized (生產(chǎn)者和消費)
13.String 和 StringBuffer
14.Serializable
15.MVC (Struts的工作流程)
16.什么是MDA
17.tcp與udp的區別
18.鏈表與散列表和數組的區別
19.堆和棧的區別
20.ejb的分類(lèi)及區別
21.你對現在軟件業(yè)以及國內軟件業(yè)的看法
22.談?wù)刯ava多線(xiàn)程
23.談?wù)勎募用芗夹g(shù)
24.軟件開(kāi)發(fā)生命周期
25.路由協(xié)議種類(lèi)及特點(diǎn)
26.java的awt和swing組件的GUI設計的關(guān)鍵
27.對于java流的認識
28.簡(jiǎn)單描述一下awt與swing區別。
29.簡(jiǎn)述java編程中事件處理模式。
30.你編寫(xiě)過(guò)applet嗎?applet的安全權限如何?試列舉java application或者applet中與servlet/jsp通信可以采用的方式。
31.簡(jiǎn)述邏輯操作(如&,|)與條件操作(如&&,||)的區別。
32.簡(jiǎn)述 Java Server Page 和 Servlet 的聯(lián)系和區別。
33.簡(jiǎn)述synchronized和java.util.concurrent.locks.Lock的異同 ?
34.EJB規范規定EJB中禁止的操作有哪些?
35.java除了8種基本類(lèi)型外,在虛擬機里還有哪一種,有什么作用?
36.除了使用new關(guān)鍵字創(chuàng )建對象意外,試列舉另外三種以上創(chuàng )建實(shí)例的方式?
37.classloader中,JDK的API、Classpath中的同web-inf中的class加載方式有什么區別?
38.列舉三種以上垃圾回收算法,并比較其優(yōu)缺點(diǎn)?
39.編寫(xiě)代碼實(shí)現一個(gè)線(xiàn)程池
40.描述一下JVM加載class文件的原理機制?
41.試舉例說(shuō)明一個(gè)典型的垃圾回收算法?
42.請用java寫(xiě)二叉樹(shù)算法,實(shí)現添加數據形成二叉樹(shù)功能,并以先序的方式打印出來(lái).
43.請寫(xiě)一個(gè)java程序實(shí)現線(xiàn)程連接池功能?
44.給定一個(gè)C語(yǔ)言函數,要求實(shí)現在java類(lèi)中進(jìn)行調用。
45.如何獲得數組的長(cháng)度?
46.訪(fǎng)問(wèn)修飾符“public/private/protected/缺省的修飾符”的使用
47.用關(guān)鍵字final修飾一個(gè)類(lèi)或者方法時(shí),有何意義?
48.掌握類(lèi)和對象的概念,掌握面向對象編程的本質(zhì)
49.靜態(tài)變量和靜態(tài)方法的意義,如何引用一個(gè)類(lèi)的靜態(tài)變量或者靜態(tài)方法?
50.JAVA語(yǔ)言如何進(jìn)行異常處理,關(guān)鍵字:thorws,throw,try,catch,finally
51.Object類(lèi)(或者其子類(lèi))的finalize()方法在什么情況下被調用?
52.一個(gè)“.java”原文件中是否可以包括多個(gè)類(lèi)(不是內部類(lèi))?
53.掌握內部類(lèi)和接口的概念
54.StringTokenizer類(lèi)的使用
55.數據結構,如何遍歷List中的元素?
如果要按照鍵值保存或者訪(fǎng)問(wèn)數據,使用什么數據結構?
要掌握Collection相關(guān)的接口和類(lèi)的使用
56.使用StringBuffer類(lèi)與String類(lèi)進(jìn)行字符串連接時(shí)有何區別?
57.調用Thread類(lèi)的destroy()方法有什么后果?
58.多線(xiàn)程,用什么關(guān)鍵字修飾同步方法?stop()和suspend()方法為何不推薦使用?
59.使用socket建立客戶(hù)端與服務(wù)器的通信的過(guò)程
60.JAVA語(yǔ)言國際化應用,Locale類(lèi),Unicode
61.描述反射機制的作用
62.如何讀寫(xiě)一個(gè)文件?
63.在圖形界面中,一個(gè)按鈕如何處理鼠標點(diǎn)擊事件?
64.在圖形界面中,一個(gè)表格,如何實(shí)現編輯單元格時(shí)彈出下拉框?
65.如何加載圖片?
66.什么是模態(tài)對話(huà)框?
67.闡述MVC的概念
68.GUI布局管理器的使用,FlowLayout,BorderLayout,GridBagLayout
69.如何構造一棵樹(shù)?選擇樹(shù)的一個(gè)節點(diǎn)時(shí),如何得到這個(gè)節點(diǎn)?
70.向編輯框中輸入字符時(shí),如何控制只輸入整數?
71.描述使用JDBC連接數據庫的過(guò)程
72.EJB分為幾類(lèi)?什么是BMP,CMP?
73.什么是JNDI?
74.ADO是什么?ActiveX數據對象,是一個(gè)應用級程序接口.
75.四種JDBC方式?目前的版本?
76.EJB有哪幾種?區別是什么?
77.JavaBean與EJB有什么區別?
78.軟件開(kāi)發(fā)生命周期有哪幾個(gè)階段?
79.軟件開(kāi)發(fā)有哪些因素?
80.軟件開(kāi)發(fā)中如何進(jìn)行版本控制?
81.UML中,類(lèi)視圖如何表示類(lèi)中的繼承與聚合?
82.客戶(hù)端游標與服務(wù)器端游標的區別?
83.動(dòng)態(tài)游標與靜態(tài)游標的區別?
84.dotnet由哪幾個(gè)基本框架組成?
85.Oracle中SGA是什么?
86.web servers是什么?
87.UNIX中QT是什么意思?
88.在軟件開(kāi)發(fā)生命周期中的哪個(gè)階段開(kāi)始測試?
89.dotnet與J2EE的比較?
90.什么是ActiveX?
91.Java中IDL是什么?
92.ISO9000和CMM是什么?IS09000和CMM(軟件能力成熟度模型)認證是國際上通用的軟件質(zhì)量評估方法.CMM的五個(gè)成熟度等級。
//反轉這符串
public String convertStr(String s_text){
String b = "";
int li_len = s_text.length();
for (int i = li_len-1;i>=0;i--){
b = b + String.valueOf(s_text.charAt(i));
}
return b;
}
//替換字符串
public String replaceStr(int start,int end ,String s_newStr,
String s_oldAllStr){
String ls_temp = "";
int li_len = s_oldAllStr.length();
ls_temp = s_oldAllStr.substring(0,start);
ls_temp = ls_temp + s_newStr;
ls_temp = ls_temp + s_oldAllStr.substring(end+1,li_len);
return ls_temp;
}
字符串與整型互換:String.valueOf(int val) Integer.parseInt(String val);
//四舍五入方法
public double getRound(double d_val,int i_sit){
String ls_temp = "";
ls_temp = String.valueOf(d_val);
int li_index = ls_temp.indexOf(".");
int li_len = ls_temp.length();
int li_weak = li_len - (li_index + 1);
String ls_str;
//位數
char ch_index;
double d_unit,d_temp=d_val;
String ls_subStr=ls_temp;
for (int i=li_len-1; i>=li_index; i--){
ch_index = ls_temp.charAt(i);
li_weak = i - li_index;
ls_str = "0.";
if (li_weak == i_sit){
ls_subStr = ls_subStr.substring(0,i+1);
d_temp = Double.parseDouble(ls_subStr);
break;
}
if (Integer.parseInt(String.valueOf(ch_index))>=5){
for (int l=0;l<li_weak-1;l++){
if (l != li_weak -2)
ls_str = ls_str + "0";
else
ls_str = ls_str + "1";
}
d_unit = Double.parseDouble(ls_str);
d_temp = Double.parseDouble(ls_subStr) + d_unit;
ls_subStr = String.valueOf(d_temp);
continue;
}
else{
ls_subStr = ls_subStr.substring(0,i);
d_temp = Double.parseDouble(ls_subStr);
continue;
}
}
return d_temp;
}
如何取得年月日,小時(shí)分秒
//獲取日期
public String getToday() {
String ls_date = "";
GregorianCalendar obj_date = new GregorianCalendar();
ls_date = ls_date + obj_date.get(Calendar.YEAR);
ls_date = ls_date + "-"+obj_date.get(Calendar.MONTH);
ls_date = ls_date + "-"+obj_date.get(Calendar.DATE);
ls_date = ls_date + " "+obj_date.get(Calendar.HOUR_OF_DAY);
ls_date = ls_date + ":"+obj_date.get(Calendar.MINUTE);
ls_date = ls_date + ":"+obj_date.get(Calendar.SECOND);
return ls_date;
}
//如何取得從1970年到現在的毫秒數
public String getMillSecond(int i_yes){
GregorianCalendar obj_date = new GregorianCalendar();
int li_weak = obj_date.get(Calendar.YEAR) - i_yes;
int li_m = obj_date.get(Calendar.MONTH);
int li_d = obj_date.get(Calendar.DATE);
int li_h = obj_date.get(Calendar.HOUR_OF_DAY);
int li_min = obj_date.get(Calendar.MINUTE);
int li_s = obj_date.get(Calendar.SECOND);
//天數需要另外調整,包括銳年銳月、大小月不等,這里用30天將就一下,實(shí)際中另寫(xiě)
long bi_weak = li_weak * 12 * 30 * 24 * 60 * 60 * 1000;
long bi_m = li_m * 30 * 24 * 60 * 60 * 1000;
long bi_d = li_d * 24 * 60 * 60 * 1000;
long bi_h = li_h * 60 * 60 * 1000;
long bi_min = li_min * 60 * 1000;
long bi_s = li_s * 1000;
long bi_total;
bi_total = bi_weak;
bi_total = bi_total+bi_m;
bi_total = bi_total+bi_d;
bi_total = bi_total+bi_h;
bi_total = bi_total+bi_min;
bi_total = bi_total+bi_s;
return String.valueOf(bi_total);
}
這個(gè)不用這樣子吧
System.currentTimeMillis()不就是嗎?
還有上面的代碼也都是太復雜了吧
在java 1.4后提供了一個(gè)四舍五入方法
NumberFormat
/**
* 格式化double數
* @param dNumber double
* @param iFrac int 保留小數點(diǎn)后幾位;
* @return String
*/
public static String RoundFracToString(double dNumber, int iScale)
{
String sReturn = "";
NumberFormat format = NumberFormat.getNumberInstance();
if (iScale >= 0)
{
format.setGroupingUsed(true); //是否分組顯示,如:1,400.00
format.setMaximumFractionDigits(iScale);
format.setMinimumFractionDigits(iScale);
sReturn = format.format(dNumber);
}
return sReturn;
}
四舍五入方法
/**
* 保留x位小數(將進(jìn)行四舍五入)
* @param str 需保留的字符串型數據
* @param x 需要保留的小數位
* @return String 返回保留后的字符串
**/
static public String getRound(String str, int x)
{
if (str == null || str.equals(""))
{
return "0";
}
String cStr = "";
String rStr = "";
while (rStr.length() < x)
{
rStr += "#";
}
java.text.DecimalFormat df = new java.text.DecimalFormat("##." + rStr);
return df.format(Double.parseDouble(str));
}
反轉字符串:
String temp = "reddd";
char[] t = temp.toCharArray();
for(int j = t.length-1;j >= 0 ;j--){
System.out.println(t[j]);
}
// 四舍五入方法
private String RoundToScale(String number,int scale){
BigDecimal bdNumber = new BigDecimal(number);
return RoundToScale(bdNumber,int scale);
}
private String RoundToScale(BigDecimal number,int scale){
if(number == null)return null;
return number.setScale(scale,BigDecimal.ROUND_HALF_UP).toString();
}
//reverse string :
public String reverseString(String str){
StringBuffer tmpStr= new StringBuffer(str);
}
//reverse string :
public String reverseString(String str){
StringBuffer tmpStr= new StringBuffer(str);
return tmpStr.reverse().toString();
}