一、Java基礎(chǔ)知識 二、JSP&Servlet技術(shù) 三、J2EE相關(guān)知識 四、其他
1.Web安全性的考慮(表單驗證、瀏覽器Basic方式的驗證,應用程序的安全性,SSL,代碼考慮) 2.簡單介紹您所了解的MVC。 3.簡單介紹所了解的XML。 4.文檔和編碼規(guī)范 5.Java中的分頁、效率考慮。 6.簡單介紹您所了解的structs。 1.xml在項目中的作用 2.s-EJB 與 e-EJB的區(qū)別 3.會話面的作用 4.cmp與bmp的優(yōu)缺點 5.j2me程序的必需的幾個部分 6.c/s與b/s的區(qū)別 7.構(gòu)建一個connect pool,然后再調(diào)用它, 8.j2ee平臺與dotnet平臺的區(qū)別 9.ejb的life cycle
10.session bean 和 entity bean的區(qū)別 11.ejb中的transaction機制 12.synchronized (生產(chǎn)者和消費) 13.String 和 StringBuffer 14.Serializable 15.MVC (Struts的工作流程) 16.什么是MDA 17.tcp與udp的區(qū)別
18.鏈表與散列表和數(shù)組的區(qū)別 19.堆和棧的區(qū)別 20.ejb的分類及區(qū)別 21.你對現(xiàn)在軟件業(yè)以及國內(nèi)軟件業(yè)的看法 22.談?wù)刯ava多線程 23.談?wù)勎募用芗夹g(shù) 24.軟件開發(fā)生命周期 25.路由協(xié)議種類及特點 26.java的awt和swing組件的GUI設(shè)計的關(guān)鍵 27.對于java流的認識 28.簡單描述一下awt與swing區(qū)別。
29.簡述java編程中事件處理模式。 30.你編寫過applet嗎?applet的安全權(quán)限如何?試列舉java application或者applet中與servlet/jsp通信可以采用的方式。 31.簡述邏輯操作(如&,|)與條件操作(如&&,||)的區(qū)別。
32.簡述 Java Server Page 和 Servlet 的聯(lián)系和區(qū)別。 33.簡述synchronized和java.util.concurrent.locks.Lock的異同 ? 34.EJB規(guī)范規(guī)定EJB中禁止的操作有哪些? 35.java除了8種基本類型外,在虛擬機里還有哪一種,有什么作用? 36.除了使用new關(guān)鍵字創(chuàng)建對象意外,試列舉另外三種以上創(chuàng)建實例的方式? 37.classloader中,JDK的API、Classpath中的同web-inf中的class加載方式有什么區(qū)別? 38.列舉三種以上垃圾回收算法,并比較其優(yōu)缺點? 39.編寫代碼實現(xiàn)一個線程池 40.描述一下JVM加載class文件的原理機制?
41.試舉例說明一個典型的垃圾回收算法? 42.請用java寫二叉樹算法,實現(xiàn)添加數(shù)據(jù)形成二叉樹功能,并以先序的方式打印出來. 43.請寫一個java程序?qū)崿F(xiàn)線程連接池功能? 44.給定一個C語言函數(shù),要求實現(xiàn)在java類中進行調(diào)用。 45.如何獲得數(shù)組的長度?
46.訪問修飾符“public/private/protected/缺省的修飾符”的使用 47.用關(guān)鍵字final修飾一個類或者方法時,有何意義? 48.掌握類和對象的概念,掌握面向?qū)ο缶幊痰谋举|(zhì) 49.靜態(tài)變量和靜態(tài)方法的意義,如何引用一個類的靜態(tài)變量或者靜態(tài)方法? 50.JAVA語言如何進行異常處理,關(guān)鍵字:thorws,throw,try,catch,finally 51.Object類(或者其子類)的finalize()方法在什么情況下被調(diào)用? 52.一個“.java”原文件中是否可以包括多個類(不是內(nèi)部類)? 53.掌握內(nèi)部類和接口的概念 54.StringTokenizer類的使用 55.數(shù)據(jù)結(jié)構(gòu),如何遍歷List中的元素? 如果要按照鍵值保存或者訪問數(shù)據(jù),使用什么數(shù)據(jù)結(jié)構(gòu)? 要掌握Collection相關(guān)的接口和類的使用 56.使用StringBuffer類與String類進行字符串連接時有何區(qū)別? 57.調(diào)用Thread類的destroy()方法有什么后果? 58.多線程,用什么關(guān)鍵字修飾同步方法?stop()和suspend()方法為何不推薦使用? 59.使用socket建立客戶端與服務(wù)器的通信的過程 60.JAVA語言國際化應用,Locale類,Unicode 61.描述反射機制的作用 62.如何讀寫一個文件? 63.在圖形界面中,一個按鈕如何處理鼠標點擊事件? 64.在圖形界面中,一個表格,如何實現(xiàn)編輯單元格時彈出下拉框? 65.如何加載圖片? 66.什么是模態(tài)對話框? 67.闡述MVC的概念 68.GUI布局管理器的使用,F(xiàn)lowLayout,BorderLayout,GridBagLayout 69.如何構(gòu)造一棵樹?選擇樹的一個節(jié)點時,如何得到這個節(jié)點? 70.向編輯框中輸入字符時,如何控制只輸入整數(shù)? 71.描述使用JDBC連接數(shù)據(jù)庫的過程 72.EJB分為幾類?什么是BMP,CMP? 73.什么是JNDI? 74.ADO是什么?ActiveX數(shù)據(jù)對象,是一個應用級程序接口.
75.四種JDBC方式?目前的版本? 76.EJB有哪幾種?區(qū)別是什么? 77.JavaBean與EJB有什么區(qū)別? 78.軟件開發(fā)生命周期有哪幾個階段? 79.軟件開發(fā)有哪些因素? 80.軟件開發(fā)中如何進行版本控制? 81.UML中,類視圖如何表示類中的繼承與聚合? 82.客戶端游標與服務(wù)器端游標的區(qū)別? 83.動態(tài)游標與靜態(tài)游標的區(qū)別? 84.dotnet由哪幾個基本框架組成? 85.Oracle中SGA是什么? 86.web servers是什么? 87.UNIX中QT是什么意思? 88.在軟件開發(fā)生命周期中的哪個階段開始測試? 89.dotnet與J2EE的比較? 90.什么是ActiveX? 91.Java中IDL是什么? 92.ISO9000和CMM是什么?IS09000和CMM(軟件能力成熟度模型)認證是國際上通用的軟件質(zhì)量評估方法.CMM的五個成熟度等級。 //反轉(zhuǎn)這符串 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; //位數(shù) 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; } 如何取得年月日,小時分秒 //獲取日期 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年到現(xiàn)在的毫秒數(shù) 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); //天數(shù)需要另外調(diào)整,包括銳年銳月、大小月不等,這里用30天將就一下,實際中另寫 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); } 這個不用這樣子吧 System.currentTimeMillis()不就是嗎? 還有上面的代碼也都是太復雜了吧 在java 1.4后提供了一個四舍五入方法 NumberFormat /** * 格式化double數(shù) * @param dNumber double * @param iFrac int 保留小數(shù)點后幾位; * @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位小數(shù)(將進行四舍五入) * @param str 需保留的字符串型數(shù)據(jù) * @param x 需要保留的小數(shù)位 * @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)); } 反轉(zhuǎn)字符串: 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(); } |
|