天天看點

剛寫完排序算法,就被開除了…

據說是一個月薪 9K 的 Java 程式員,因老闆讓他寫一個排序算法,然後他就寫了一段屌炸天的休眠排序算法,接着他就被老闆開除了……

排序算法代碼大概是這樣的:

剛寫完排序算法,就被開除了…
剛寫完排序算法,就被開除了…

這段代碼有什麼問題?

這個程式員更屌啊,數字排序,用一行簡單的 Arrays.sort 就搞定的東西,他竟用到了這麼多概念。

1、循環

2、線程休眠

3、多線程

下面貼上完整的代碼:

/**

 * 微信公衆号:Java技術棧

 */
public class ArraySort implements Runnable {


    private int number;


    public ArraySort(int number) {

        this.number = number;

    }


    public static void main(String[] args) {

        int[] numbers = new int[]{102, 338, 62, 9132, 580, 666};

        for (int number : numbers) {

            new Thread(new ArraySort(number)).start();

        }

    }


    @Override

    public void run() {

        try {

            Thread.sleep(this.number);

            System.out.println(this.number);

        } catch (InterruptedException e) {

            e.printStackTrace();

        }

    }


}
           

還好是數字小啊,還好休眠是毫秒啊,要是數字大,要是休眠時間是秒,那要等多少休眠時間才能排序完?

按道理,他的程式也沒問題啊,老闆為什麼要開除他?應用程式中出 BUG 不是很正常的事嗎?但他這種排序思維,能寫出這樣的隐藏 BUG 也是絕了,創造性的發明了 "休眠排序" 算法,系統裡面還不知道有多少這樣的坑,不開除他開除誰啊?

如果非要說一個原因,我感覺,這哥們是故意這麼寫的,造成查詢速度較慢,之後下個疊代優化,查詢速度瞬間提上來了,這可是為公司做出大貢獻了,年底了,獎勵個優秀個人獎.....

或許他應該看一下排序這篇文章:《

改變計算技術的9個偉大算法

》。

說到這個程式員,讓我想起了最近審查代碼時候的幾個坑,真是讓人哭笑不得。。。

示例1:

if(flag  == false){

    return true;

} else {

    return false;

}
           

直接 return flag 不行?寫這麼繞,還把邏輯寫錯了。

示例2:

if(...)

    a

    b

    c
           

多段代碼,if 不加 {},後面格式化成了:

if(...)

    a

b

c
           

這樣導緻業務邏輯有嚴重的 BUG,無語了吧?還有更多奇葩的.

原文釋出時間為:2018-11-24

本文來自雲栖社群合作夥伴“

網際網路架構師

”,了解相關資訊可以關注“

”。