成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

由字符串反轉(zhuǎn)(使用遞歸)引申出來(lái)一道Java面試題

移動(dòng)開(kāi)發(fā) Android
這道題的答案有很多種,因此這給了你足夠的空間去考察候選者的技能,我自己思考了會(huì)兒,找到好幾種答案如何用Java實(shí)現(xiàn)字符串的反轉(zhuǎn)。候選者的答案正好是面試官了解他們?nèi)绾嗡伎嫉囊环N方式。你可以用相關(guān)的接口來(lái)定義這道題,里面有一個(gè)未實(shí)現(xiàn)的方法。

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

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

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

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

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

處理問(wèn)題:

問(wèn)他代碼中什么地方有bug,即使沒(méi)有。或者代碼怎么會(huì)報(bào)錯(cuò),他的答案至少可以引出一個(gè)討論關(guān)于如何處理空值的話(huà)題來(lái)。

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

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

遞歸(Recursion):

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

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

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

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

更多的方案:

在適當(dāng)?shù)奈恢谜{(diào)動(dòng)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方法。

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

在你決定是否雇用時(shí),希望以上能幫上你,對(duì)自己來(lái)說(shuō),在將來(lái)的某個(gè)時(shí)候希望同樣可以我?guī)椭阶约海拖馢oel說(shuō)的:“疑人不用,用人不疑(when in doubt ,always no hire)。”

責(zé)任編輯:閆佳明 來(lái)源: importnew
相關(guān)推薦

2018-03-06 15:30:47

Java面試題

2024-10-11 17:09:27

2023-02-04 18:24:10

SeataJava業(yè)務(wù)

2011-05-23 11:27:32

面試題面試java

2009-08-11 14:59:57

一道面試題C#算法

2018-02-01 16:26:44

面試題static變量

2009-08-11 10:12:07

C#算法

2023-08-01 08:10:46

內(nèi)存緩存

2019-09-02 15:06:16

面試字節(jié)跳動(dòng)算法

2021-05-31 07:55:44

smartRepeatJavaScript函數(shù)

2017-11-21 12:15:27

數(shù)據(jù)庫(kù)面試題SQL

2022-02-08 18:09:20

JS引擎解析器

2022-04-08 07:52:17

CSS面試題HTML

2009-08-11 15:09:44

一道面試題C#算法

2020-11-11 09:19:37

前端優(yōu)化面試

2021-03-16 05:44:26

JVM面試題運(yùn)行時(shí)數(shù)據(jù)

2021-10-28 11:40:58

回文鏈表面試題數(shù)據(jù)結(jié)構(gòu)

2015-09-02 14:09:19

面試題程序設(shè)計(jì)

2017-03-10 09:33:16

JavaScript類(lèi)型

2017-09-13 07:15:10

Python讀寫(xiě)文件函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩在线不卡 | 一区二区在线免费观看 | 国产99久久精品一区二区永久免费 | 国产精品国产精品国产专区不卡 | www久久爱 | 狠狠干天天干 | 亚洲精品乱码久久久久久黑人 | 亚洲成人精品国产 | 午夜天堂精品久久久久 | 日韩精品中文字幕一区二区三区 | 国产欧美一区二区三区久久人妖 | 96国产精品久久久久aⅴ四区 | 国产一区久久精品 | www.亚洲视频| 免费观看黄a一级视频 | 9久久婷婷国产综合精品性色 | 国产精品久久 | 琪琪午夜伦伦电影福利片 | 青青草综合 | 成人在线观看中文字幕 | 亚洲国产一区二区三区 | 精品国产一区二区在线 | 自拍 亚洲 欧美 老师 丝袜 | 国产成人精品一区二区三区在线 | 一级片毛片 | 99re热精品视频国产免费 | 一区福利视频 | 国产欧美精品一区二区三区 | 欧美精品一区二区在线观看 | 久久精品国产久精国产 | 最新国产精品精品视频 | 特级毛片www | 手机在线观看 | 在线观看三级av | 久久毛片 | 色欧美综合 | 香蕉大人久久国产成人av | 久久久久国产精品一区二区 | 精品一区二区在线视频 | 亚洲天堂一区 | 免费一级欧美在线观看视频 |