程式設計師剛寫完程式碼 , 就被開除了

  • 2019 年 10 月 4 日
  • 筆記

最近在網上看到的兩段「寫完程式碼就被公司開除」的程式碼,說是網上寫完這段程式碼,就被老闆開除了。

1.第一段程式碼

這位程式設計師寫完這段程式碼,覺得自己被開除是因為沒有寫注釋,看到這裡不禁笑出了聲。。。

兄嘚(dei),肯定不是這個原因,獲取下一天的時間,你使用了Thread.sleep()睡眠了1天以後,然後再去獲取當前的時間,通過這種方式,如果上線以後,那麼但凡涉及到獲取下一天的時間的操作,用戶一點擊,你讓用戶等一天再去看顯示結果嗎???哈哈~,老闆不開除你才是奇怪呢!

那麼正確的獲取下一天的姿勢應該是什麼樣的呢?我這裡給一個示例。

import java.util.Date;  public class Main {      private static Date getNextDay(Date date) {          long addTime = 1;//這個代表幾天          addTime *= 1;    //1天          addTime *= 24;   //一天24小時          addTime *= 60;   //1小時60分鐘          addTime *= 60;   //1分鐘60秒          addTime *= 1000; //1秒1000毫秒          Date nextDate = new Date(date.getTime() + addTime);          return nextDate;      }      public static void main(String[] args) {          Date now = new Date();          System.out.println("Now: " + now);          System.out.println("NextDay: " + getNextDay(now));      }  }  

這個程式碼利用Date來獲取下一天,只是一個庫函數的簡單使用,我們來看看運行結果,一點擊運行,不到0.000xxx1s的時間,就出來了下一天的日期,根本不用等待一天,效率是不是提高了?

Now: Fri Nov 02 22:19:43 CST 2018  NextDay: Sat Nov 03 22:19:43 CST 2018  

2.第二段程式碼

這位兄弟是老闆讓寫一個排序,他是怎麼實現的呢?

通過看程式碼,可以看出來這位兄弟的思路是數組中每有一個數,就去用new Thread()去開一個執行緒,執行緒裡面呢,就是用Thread.sleep()去睡眠這個數的的大小時間。舉例比如說11,他就開一個執行緒去睡眠11s,然後去輸入11;對於998,他就開一個執行緒去睡眠998秒,然後去輸出998。

由於執行緒互相之間沒有影響,所以數小的執行緒由於睡眠時間短,肯定會最先輸出,數大的執行緒由於睡眠時間長,肯定會最後輸出,最後就把這些數字排好序了。

額,看到這裡。。。

如果數組中的數據非常大,那麼排序所用的時間也會非常大;而且如果數組中的數有很多,會開很多執行緒,消耗的資源也很多,總之這種做法是萬萬不可取的。

Tags: