Menu
快讀
  • 旅遊
  • 生活
    • 美食
    • 寵物
    • 養生
    • 親子
  • 娛樂
    • 動漫
  • 時尚
  • 社會
  • 探索
  • 故事
  • 科技
  • 軍事
  • 国际
快讀

5年老司機java程序員面試竟然被一道小學生題難倒了,判斷奇偶數

2021 年 3 月 12 日 清天道

本人最近幾年一直在做java後端方面的技術面試官,而在最近兩周,又密集了面試了一些java初級和高級開發的候選人,在面試過程中,我自認爲比較慎重,遇到問題回答不好的候選人,我總會再三從不同方面提問,只有當反複確認能力不行才會下結論,相反,如果候選人給我的印象不錯,我也會從多個角度來衡量,以免招進會說但不會幹活的“大忽悠”。

總的來說在這行做過新人也做過老帶新,自己平時也比較喜歡鑽研技術所以剛剛入這行的時候老師傅對我還是不錯的。

自從當上了主程之後不僅自己寫代碼也要對hr招的人施行種種考驗,畢竟只有招到合格的同事才不至于在工作中拖後腿。

在工作之余和其他合作過公司的人事聊天中突然就聊到那麽一個話題。

對方說有一次有一個剛剛畢業的程序來面試,經理就給了一個很容易的題“給你一個隨機數怎麽判斷是奇數還是偶數”?

來面試的人毫不猶豫地就寫下了代碼:

public static boolean isOdd(int numb) {

return numb%2==1;

}

經理看到這幾行代碼就他走了。

其實這幾行代碼看起來是沒有什麽問題的,正常來講被2整除余數爲1的整數就是奇數,所以在邏輯上看是沒有問題的。

可是在java中,上面的這段程序有一半的機會是運行出錯的,導致得不到想要的結果。你能想出來是爲什麽嗎?

因爲在java中int有一半的數是負數。如果你填-100或者-101會得到什麽結果?

取余操作符在運算表達試中,其運算結果的符號同左操作數的正負結果相同,所以如果i是負奇數,則此表達式的結果會是-1,而不是1。

這是很多新手愛犯的錯誤。

那麽該如何改進這段程序呢?

可以修改成numb%2!=0,

完整表達爲

public static boolean isOdd(int numb) {

return numb%2!=0;

}

如果要追求效率還可以這樣改進

public static boolean isOdd(int numb) {

return (numb&1)!=0;

}

在不然也可以這樣

public static boolean isOdd(int numb) {

return (numb&1)==1;

}

教大家寫三種的正確方法

大家可要記住這個坑喔!

你讓你同事寫寫看要不他也會犯這個錯。

相關文章:

  • NTU學長放棄土木專業,轉行做媒體的艱辛找工史
  • 新加坡留學申請最後一步:面試環節千萬別掉以輕心,如何過關?
  • 如何拿下香港中文大學全獎博士offer?我整個申請過程都在這兒了
  • 當第一次來到新加坡的留學生遇上彪悍的Singlish
  • 新加坡留學之重要環節---面試
  • 新加坡南洋理工大學商業分析專業面試攻略
歷史

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

©2026 快讀 | 服務協議 | DMCA | 聯繫我們