日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
由字符串反轉(zhuǎn)(使用遞歸)引申出來一道Java面試題

如何面試一個從事編程工作的開發(fā)人員既困難又乏味,幸好還有很多值得參考的指南,比如:《Joel Guerilla Guide to interviewing》, 但***雇傭與否,還得由你自己決定。為了快速地了解他們的編程能力,我想到了一個關(guān)于字符串反轉(zhuǎn)的問題,有人用這道題取得不錯的效果,這道題的答案有很多種,因此這給了你足夠的空間去考察候選者的技能,我自己思考了會兒,找到好幾種答案如何用Java實現(xiàn)字符串的反轉(zhuǎn)。候選者的答案正好是面試官了解他們?nèi)绾嗡伎嫉囊环N方式。你可以用相關(guān)的接口來定義這道題,里面有一個未實現(xiàn)的方法。

十余年創(chuàng)新互聯(lián)網(wǎng)站建設(shè),由一走到現(xiàn)在,當(dāng)中離不開團(tuán)隊頑強(qiáng)的創(chuàng)業(yè)精神,離不開伴隨我們同行的客戶與專業(yè)的合作伙伴,創(chuàng)力信息一直秉承以“見一個客戶,了解一個行業(yè),交一個朋友”的方式為經(jīng)營理念,提出“讓每一個客戶成為我們的終身客戶”為目標(biāo),以為用戶提供精細(xì)化服務(wù),全面滿足用戶需求為宗旨,誠信經(jīng)營,更大限度為用戶創(chuàng)造價值。期待邁向下一個更好的十余年。

 
 
 
  1. publicinterfaceReverser { 
  2. publicString reverse(String str); 

在Java中,***的實現(xiàn)就是用JDK中StringBuffer的反轉(zhuǎn)方法,它不僅速度快,效率高,而且還知道如何處理unicode代理對(surrogate pairs)。其它方案基本上都可以忽略掉。

 
 
 
  1. publicclassJdkReverser implementsReverser {  
  2. publicString reverse(String str) { 
  3. if((null== str) || (str.length() <= 1)) { 
  4. returnstr; 
  5. returnnewStringBuffer(str).reverse().toString(); 

不僅選擇把趣味性地實現(xiàn)當(dāng)做一種答案,而且候選者有沒有重用JDK,或者告訴你“JDK中有那么些東西是可以去實現(xiàn)的”,哪一種好呢,google一下可以幫你找到JDK的解決方案,你總不希望開發(fā)者實現(xiàn)一切。

處理問題:

問他代碼中什么地方有bug,即使沒有?;蛘叽a怎么會報錯,他的答案至少可以引出一個討論關(guān)于如何處理空值的話題來。

 返回null
 返回“”
 拋出NullPointerException
 拋出IllegalArgumentException

第二個討論的焦點是是如何去優(yōu)化解決方法,像返回字符串本省“”,長度為1的字符串(本省就是反轉(zhuǎn))

遞歸(Recursion):

之后要求應(yīng)聘者在反轉(zhuǎn)的問題上寫一個遞歸的方案(這至少是漂亮的,但至少可用)

 
 
 
  1. publicString reverse(String str) { 
  2. if((null== str) || (str.length()  <= 1)) { 
  3. returnstr; 
  4. returnreverse(str.substring(1)) + str.charAt(0); 

有些開發(fā)人員在腦海中想不到處理遞歸,或者需要時間和一些提示。那些不能處理遞歸的很有可能對于復(fù)雜的問題沒法完成。

你可以問他們關(guān)于遞歸方案的效率,詢問尾(Tail)遞歸,詢問 “+”操作的效率,如何處理,關(guān)于為什么String都是不可變的(至少在大多時候這么問),反轉(zhuǎn)“Stephan”時,問候選者有多少個字符串對象創(chuàng)建。在討論中,開發(fā)者說“Easy”,他在整個大學(xué)都在用Lisp語言,之前我還不知道, 現(xiàn)在聽起來真是個極好的消息。你還可以詢問在上面代碼結(jié)束遞歸的停止條件。

更多的方案:

在適當(dāng)?shù)奈恢谜{(diào)動StringBuffer:

 
 
 
  1. publicString reverse(String str) { 
  2. if((null== str) || (str.length()  <= 1)) { 
  3. returnstr; 
  4. StringBuffer result = newStringBuffer(str); 
  5. for(inti = 0; i < (str.length() / 2); i++) { 
  6. intswapIndex = str.length() - 1- i; 
  7. charswap = result.charAt(swapIndex); 
  8. result.setCharAt(swapIndex, result.charAt(i)); 
  9. result.setCharAt(i, swap); 
  10. returnresult.toString(); 

采用調(diào)用數(shù)組的方法:

 
 
 
  1. publicString reverse(String str) { 
  2. if((null== str) || (str.length() <= 1)) { 
  3. returnstr; 
  4. char[] chars = str.toCharArray(); 
  5. intright = chars.length - 1; 
  6. for(intleft = 0; left < right; left++) { 
  7. charswap = chars[left]; 
  8. chars[left] = chars[right]; 
  9. chars[right--] = swap; 
  10. returnnewString(chars); 

SringBuffer追加的方法:

 
 
 
  1. publicString reverse(String str) { 
  2. if((null== str) || (str.length() <= 1)) { 
  3. returnstr; 
  4. StringBuffer reverse = newStringBuffer(str.length()); 
  5. for(inti = str.length() - 1; i >= 0; i--) { 
  6. reverse.append(str.charAt(i)); 
  7. returnreverse.toString(); 

也許候選人還知道棘手的XOR swapping solution方法。

這是一個開放性的領(lǐng)域,你可以要求候選者寫一個JUnit 測試它的反轉(zhuǎn)方法,這樣不僅可以展現(xiàn)他寫測試單元的能力,而且作為測試用例,他所考慮的條件(“”,null,”A”,奇數(shù)長度的字符串,偶數(shù)長度的字符串,….)

在你決定是否雇用時,希望以上能幫上你,對自己來說,在將來的某個時候希望同樣可以我?guī)椭阶约?,就像Joel說的:“疑人不用,用人不疑(when in doubt ,always no hire)?!?/p>
文章標(biāo)題:由字符串反轉(zhuǎn)(使用遞歸)引申出來一道Java面試題
轉(zhuǎn)載源于:http://m.5511xx.com/article/dpeshoi.html