上海交通銀行筆試題及答案
建筑選擇題:1.下面兩段代碼,輸出為()publicclass A System.out.println("A");staticSystem.out.println("B");A()System.out.println("C");publicclass B extends ASystem. out .println( "D");)static System. out .println( "E");)B()System. out .println( "F");)publicstaticvoidmain(String 口 args)B b_= new B();System. out .println("G");參考答案:BEACDFG2 . spring配置事物的屬性是參考答案:事務(wù)屬性通常由事務(wù)的傳播行為,事務(wù)的隔離級(jí)別,事務(wù)的超時(shí)值和 事務(wù)只讀標(biāo)志組成。SPRING<TRANSACTIONDEFINITION接口中定義這些屬性 ,以供 PLATFROMTRANSACTIONM ANAGER使用,3 . ajax 核心對(duì)象 xmlhttprequest 對(duì)象參考答案:XMLH ttpRequest對(duì)象在Ajax中占據(jù)著十分重要的地位,因?yàn)橥ǔR饬x 上的和服務(wù)器進(jìn)行交互是通過提交表單的形式,而在Ajax中的客戶端通過XMLHTTPREQUEST對(duì)象實(shí)現(xiàn)與服務(wù)器的通信。也就是說正是因?yàn)閄MLHTTPREQUEST才使得AJAX得以實(shí)現(xiàn),于是我們的與服務(wù)器的交互速度明顯提升,消除了令人 頭疼的等待之后用戶體驗(yàn)便也更加良好。4 .在執(zhí)行下面兩條SQL語句后:create table t1(c1 char(10) not null primary key,c2 int,c3 char(10),c4 char(10) not null,constraint c4 unique (c1,c4)create index indexl on t1 (c2 asc)表t1上有幾個(gè)索引?()參考答案:35 . LDAP是指什么?參考答案:輕型目錄訪問協(xié)議,即 LightweightDIRECTORY ACCESS PROTOCOL是一個(gè)訪問在線目錄服務(wù)的協(xié)議。目錄是一組具有類似屬性、以一定邏輯和層次組合的信息。常見的例子是電話簿,由以字母順序排列的名字、地址和電話號(hào)碼組成。最新版本的LDAP協(xié)議由RFC4511所定義。6 .實(shí)現(xiàn)DAO的設(shè)計(jì)模式有哪些?參考答案:DATA ACCESSOR1式和 ACTIVE DOMAIN OBJECTS式7 .使用游標(biāo)穩(wěn)定性”可能會(huì)出現(xiàn)什么現(xiàn)象情況?(不可重復(fù)讀、幻像讀)參考答案:可能會(huì)出現(xiàn)不可重復(fù)讀和幻像讀現(xiàn)象8 . HashTable 、Vector 、TreeSet 、LinkedList哪些屬于線程安全的?參考答案:HashMap是線程安全的 Map, Vecto提線程安全的 ArrayListTREESET和LINKEDLIST是非線程安全的9 .標(biāo)準(zhǔn)Statement的類對(duì)象有哪些?參考答案:Statement PreparedStatement CallableStatement10 .泳道圖屬于那種類圖?參考答案:活動(dòng)圖11 . transient 變量,在以下那幾個(gè)類中使用? ( serialization )參考答案:serialization選擇題知識(shí)點(diǎn):J2EE; EJB; JPA; SSH; IBatis ; AIX; WAS; Statement ;數(shù)據(jù)庫日志滿;CPU瓶頸;泳道圖;靜態(tài)類;事物; spring ;游標(biāo)穩(wěn)定性;MVC;設(shè)計(jì)模式編程題1.編寫一個(gè)人民幣金額數(shù)字轉(zhuǎn)換成大寫的函數(shù),無小數(shù),最大 999999999。例如:12304轉(zhuǎn)為壹萬兩仟三佰零四元整40000轉(zhuǎn)為4萬元整參考答案:public class Num2Rmb private String口 hanArr=" 零","壹","貳","叁","肆","伍","陸","柒","捌","玖private String口 unitArr="拾","佰","彳F,"萬","拾","佰","仟","億","拾","佰","仟"private String toHanStr(String numStr) String result=""int numLen=numStr.length();for (int i=0;i<numLen; i+)int num=numStr.charAt(i)-48;if(i!=numLen-1 && num!=0)result+=hanArrnum+unitArrnumLen-2- i;elseresult+=hanArrnum;return result;public static void main(String口 args)Num2Rmb nr = new Num2Rmb();System.out.println(nr.toHanStr("633779433451");2,字符串截取,中文不會(huì)被截取半個(gè)。例如:我和你 ABC 截取4位:我和你A我和你ABC截取2位:我和參考答案:publicstatic String subString(String str,int len) if (str =null &&"" ,equals(str) returnnull/ 將字符串中的char數(shù)組轉(zhuǎn)換成指定編碼方式的byte數(shù)組的函數(shù)byte 口 strBytes =null ;try strBytes = str.getBytes("GBK"); catch (UnsupportedEncodingException e) e.printStackTrace();/得到字符串的長度,判斷截取字符串的長度是否在判斷的范圍內(nèi),否則返回原串int strLen = strBytes.length ;if (len >= strLen | len < 1) return str;System. out .println("strBytes.length="+ strBytes. length );System. out .println("len=" + len);int count = 0;for ( int i = 0; i < len; i+) /將每個(gè)字節(jié)數(shù)組轉(zhuǎn)換為整型數(shù),以為后面根據(jù)值的正負(fù)來判斷是否為漢字int value = strBytesi;System. out .print(value +"," );/ 我ABC你-50,-46,65,66,67,-60,-29/對(duì)于第一種情況:/注,一個(gè)函數(shù)轉(zhuǎn)換成整型數(shù)就為兩個(gè)負(fù)整數(shù),上面的"我ABC你;/轉(zhuǎn)換成整型數(shù)就為-50,-46,65,66,67,-60,-29,但是 len=6 :所以截取下來的就是 -50,-46,65,66,67,-60,count就為3/ 如果是漢字(負(fù)),則統(tǒng)計(jì)截取字符串中的漢字所占字節(jié)數(shù)if (value < 0) count+;System. out .println( "zh count=" + count);/ 依據(jù)判斷給定的字符串是否含有漢字,利用 String類的substring。方法來截取不同的長度/ 根據(jù)所統(tǒng)計(jì)的字節(jié)數(shù),判斷截取到字符是否為半個(gè)漢字,奇數(shù)為半個(gè)漢字if (count % 2 != 0) /如果在截取長度為1時(shí),則將該漢字取出,/其他情況則不截取這里的截取長度則按字符長度截取(截取字節(jié)長度數(shù)-截取漢字字節(jié)數(shù)/2-截取到的半個(gè)漢字的字節(jié)數(shù))len = (len = 1) ? len : len - count / 2 - 1;/len=6-3/2-1=4我 ABC/ System.out.println("處理后的 len="+len); else /截取字符長度為字節(jié)長度-漢字所占字節(jié)長度/2 (漢字占兩個(gè)字節(jié))len = len - (count / 2);return str.substring(0, len);3.個(gè)人所得稅的計(jì)算,不同階段的工資給出不同階段的個(gè)人所得稅的交付。輸入工資 salary計(jì)算出應(yīng)付的稅款tax。計(jì)算公式:tax = n * ( salary - 850 ) n為稅率稅率表為:工資稅率salary<8500%850<salary<30005%3000<salary<500010%5000<salary<800015%8000<salary<1000020%10000<salary25%參考答案:Double cal(Double salary) if (salary < 850) / elseif (salary > 850 && salary < 3000) salary = 0.05 * (salary - 850d); elseif (salary > 3000 && salary < 5000) salary = 0.1 * (salary - 850d); elseif (salary > 5000 && salary < 8000) salary = 0.15 * (salary - 850d); elseif (salary > 8000 && salary < 10000) salary = 0.2 * (salary - 850d); elseif (salary > 10000) salary = 0.22 * (salary - 850d);return salary;問答題1 .使用系統(tǒng)設(shè)計(jì)的思想實(shí)現(xiàn)程序?qū)Σ煌Z言,不同時(shí)區(qū)的支持參考:對(duì)不同語言,不同時(shí)區(qū)的支持 ,涉及國際化和本地化建筑國際化是指在設(shè)計(jì)軟件時(shí),將軟件與特定語言及地區(qū)脫鉤的過程。當(dāng)軟件被移植到 不同的語言地區(qū)時(shí),軟件本身不用做內(nèi)部工程上的改變或修正。本地化則是指當(dāng)移 植軟件時(shí),加上與特定區(qū)域設(shè)置有關(guān)的資訊和翻譯文件的過程。通常作法是將文本和其他環(huán)境相關(guān)的資源與程序代碼相分離。這樣在理想的情況下, 應(yīng)對(duì)變化的環(huán)境時(shí)無需修改代碼,只要修改資源,從而顯著簡化了工作。2 .什么是快速迭代失效?如何解決?緡考Vector 等 Collection 類,都有類似的說明:由 Vector 的 iterator 和 listiterator 方法所返回的迭代器是快速失敗的:如果在迭代器創(chuàng)建后的任意時(shí)間從結(jié)構(gòu)上修改了向量(通過迭代器自身的remove或add方法之外的任何其他方式),則迭代器將拋出ConcurrentModificationException 。因此,面對(duì)并發(fā)的修改,迭代器很快就完全失敗, 而不是冒著在將來不確定的時(shí)間任意發(fā)生不確定行為的風(fēng)險(xiǎn)。解決辦法:不適用 Collection自身的remove。方法,而使用Iterator本身的方法 remove。來刪除對(duì)象,因?yàn)檫@樣子可以刪掉原對(duì)象,同時(shí)當(dāng)前迭代對(duì)象的索引也得到 同步。3 .下面是一段對(duì)數(shù)據(jù)庫異常處理的代碼:publicclass DBUtil privatestaticfinalintCAN_CONNECT = 5001;privatestaticfinalintSQL_ERROR = 5002;publicvoid exceptionHandle( int exception)switch (exception)case CAN_CONNECT : /do something.System. out .println( "The DB cant beconnected.);case SQL_ERROR : /do something.System. out .println( "The SQL is Error.");default/do something.System. out .println( "Other reasons.");若需要添加其他錯(cuò)誤碼,則只需添加case分支即可。但是在異常非常多時(shí)這種方式處理會(huì)造成代碼的冗余。而且經(jīng)常改動(dòng)已經(jīng)完成的代碼還很可能會(huì)帶來其他代碼 塊的錯(cuò)誤,帶來未知的風(fēng)險(xiǎn)。請(qǐng)使用設(shè)計(jì)模式改造該代碼。緡考:可用策略模式改造。知識(shí)點(diǎn):多態(tài)、反射二枚舉類:package strategy;publicenum ErrorTypeEnum CANNOT_CONNECT(5001, "The DB cant be connected."),);SQL_ERROR(5002, "The SQL is Error./*狀態(tài)值*/privateintvalue ;/*類型描述*/private String description ;private ErrorTypeEnum( int value, String description) this . value = value;this . description = description;publicint value() return value ;public String description。 return description ;publicstatic ErrorTypeEnum valueOf( | int value) for (ErrorTypeEnum type : ErrorTypeEnum.values () if (type.value() = value) return type; returnnull二:Strategy 接 口 :package strategy;publicinterface Strategy / 可添加通用方法String outline。;三: Cannot_ConnectStrategy 類:package strategy;publicclass Cannot_ConnectStrategy implements Strategy Overridepublic String outline。return "The DB cant be connected.四:Sql_ErrorStrategy 類:package strategy;implements Strategy publicclass Sql_ErrorStrategyOverridepublic String outline。return "The SQL is Error.五:Context 類:package strategy;publicclassContext private Strategy strategy ;public String contextOutline(int exception) strategy =StrategyFactory.getInstance ().creator(exception);建筑if ( strategy != null ) return strategy.outline。; else return "Other reasons." public Strategy getStrategy() return strategy ;publicvoid setStrategy(Strategy strategy) this . strategy = strategy;六:Client類,測(cè)試package strategy;publicclass Client publicstaticvoidexceptionHandle( int exception)Context context =new Context。;String outline = context.contextOutline(exception);System. out .println(outline);建筑publicstaticvoidmain(String口 args) exceptionHandle(5001);