<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          歷史上最簡單的一道Java面試題,但無人能通過

          共 2846字,需瀏覽 6分鐘

           ·

          2021-09-03 20:14


          作者:方志宏
          來源:zhuanlan.zhihu.com/p/57859872

          這可能是歷史上最簡單的一道java面試題了。

          題目很簡單,完成代碼,判斷一個整數(shù)是否是奇數(shù):

          public boolean isOdd(int i)

          相信相當(dāng)數(shù)量的人都已經(jīng)在準(zhǔn)備吐槽了,只要看過《編程珠璣》的人都知道這道題的答案和其中極為簡單的道理。不過別著急罵街,不管你信不信,這道筆試題我拿到的答案好多都長這樣:

          public boolean isOdd(int i{
              if (i % 2 == 1) {
                  System.out.println("是奇數(shù)");
              } else {
                  System.out.println("是偶數(shù)");
              }
          }

          然后編譯一下,發(fā)現(xiàn)錯誤了,撓撓頭,頂多改成這樣:

          public boolean isOdd(int i) {
              if (i % 2 == 1) {
                  return true;
              } else {
                  return false;
              }
          }

          好吧,我承認(rèn)我在篩選簡歷的能力可能有一些問題,不過不管你信不信,好多大廠工作了幾年的程序員,都會寫出如上風(fēng)格的代碼。

          于是我繼續(xù)進(jìn)行引導(dǎo):

          我:“這個函數(shù)的定義要求返回一個什么類型的值?”

          候選人看了看題干:“布爾類型?!?/p>

          我:“那么,你if后面的括號里面的表達(dá)式的值是一個什么類型的?”

          引導(dǎo)到這一步的時候,依然有高達(dá)兩成的候選人選擇了放棄,表示他們不知道。好吧,我真的不知道你們來面試這個職位的信心何在。不過大部分人想了想,還會回答出正確答案:

          候選人:“也是布爾類型?!?/p>

          我:“然后呢?”

          有少量候選人雖然沒說出來,但是我能看出來他們覺得這只是一個巧合,并不知道怎么進(jìn)行下一步。不過,大多數(shù)人想了想之后,還是會優(yōu)化成如下代碼:

          public boolean isOdd(int i) {
              return i % 2 == 1;
          }

          終于過了第一關(guān)了,進(jìn)行第二關(guān)的引導(dǎo):

          我:“那我傳進(jìn)來一個-1呢?”

          將近一半的人在想了想之后會嘴硬地表示他們從小被教導(dǎo)只有自然數(shù)才有奇數(shù)偶數(shù)之分,負(fù)數(shù)沒有奇偶這一說。剩余的人接受了這個設(shè)定,想了一會兒,改成這樣:

          public boolean isOdd(int i) {
              return i % 2 == 1 || i % 2 == -1;
          }

          并且在提示之后優(yōu)化成這樣:

          public boolean isOdd(int i) {
              return i % 2 != 0;
          }

          好吧,這是迄今為止第一個能通過編譯且完全滿足了需求的代碼實現(xiàn)了。說實話,一開始就寫成這樣的人,如果沒有其他什么明顯的缺點(diǎn)的話,我這里基本就能通過了。我承認(rèn)我的要求比較低,但是來面試的人能直接寫出這樣的真的不太多,粗略地估計的話,大概占一到兩成吧。

          但是這里還沒完呢,還有最重要的第三關(guān)呢:

          我:“有更好的辦法嗎?”

          候選人:“?”

          我:“我覺得取模操作比較慢,有更快的解決方案嗎?”

          除了少數(shù)人能自己想想就想出來了之外,絕大部分(毫不夸張)候選人表示沒有或者不知道,于是進(jìn)行下一步提示:

          我:“奇數(shù)和偶數(shù)轉(zhuǎn)換成二進(jìn)制有什么區(qū)別?”

          相當(dāng)一部分候選人表示自己不懂什么叫二進(jìn)制和位運(yùn)算,有的還表示java不是c語言,不用研究這些,就跟很多評論會吐槽我在裝逼一樣。少部分候選人想了想,會怯怯地回答。

          候選人:“奇數(shù)最后一位是1,偶數(shù)最后一位是0。”

          我:“然后呢?”

          這里很奇怪的點(diǎn)是,大部分能聊到這里來的候選人會想起來移位操作,我真的不知道是為什么,雖然這道題確實可以有這種操作:

          public boolean isOdd(int i) {
              return i >> 1 << 1 != i;
          }

          但是這根本不是重點(diǎn)好吧?。?!

          總之,無論如何,能在第三關(guān)的各種引導(dǎo)之后,能寫出下面這個結(jié)果來的人,真的不多。能一開始沒有任何引導(dǎo)的就寫出來的人,至今只見過兩個,一個我去哪兒都帶著,一個拒了我的offer。

          public boolean isOdd(int i) {
              return (i & 1) == 1;
          }

          別以為這就完了!終極boss來了:

          我:“這樣是不是比上面取模運(yùn)算要快?”

          候選人:“那當(dāng)然了,位運(yùn)算肯定快啊?!?/p>

          我:“但是我們實際代碼測試過,發(fā)現(xiàn)上面的按位與操作和取模操作,實際運(yùn)行的時間是差不多的,為什么呢?”

          候選人心里mmp:“鬧了半天你這是在逗我玩啊???”

          然而真正能回答出原因來的人,面試過程中我沒見過,可能是大牛都看不上我所在的公司吧。只有在某公司的時候,一個同事想了想,給出了我正確答案。難道是我經(jīng)歷的公司都太low了么……

          瀏覽 49
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  珍藏3年极品人妻疯狂3p | 大香蕉黄色电影网站 | 开心五月丁香五月 | 日韩黄色电影视频 | 大香蕉伊人5 |