---
# System prepended metadata

title: Golang 程式設計題目
tags: [backup]

---


Golang 程式設計題目
===

###### tags: `backup`

## Goroutine作業：
根據題目指示，練習golang結構設計與業務分離。

#### 程式要求
::: info
主要程式設計完後，需要檢測程式，驗證主要程式的功能與是否有bug。
:::


#### 餐廳作業

請根據下述內容，設計出架構與實作
:::info
1. 有座城市裡面有幾間『餐廳』。

2. 『餐廳』裡的工作人員有以下幾種角色：『廚師』、『服務生』、『櫃檯接待人員』。

3. 製作『料理』需要使用『食材』，而『食材』需要經過『廚師』的『製作』，才能變成『料理』。

4. 『客人』會上門點餐，由『櫃檯接待人員』帶入座位後，向『服務生』點餐，『服務生』向『廚師』指定製作的料理。

5. 『廚師』製作完『料理』，會請『服務生』將『料理』送給『客人』。

6. 『客人』吃完『料理』後，會離開『餐廳』。
:::

#### 補充說明
:::success
* 每間餐廳都有一定規模，至少2位以上的廚師，2位以上的服務生。

* 每間餐廳座位有限，約8~16個位子，有空位才能請客人入座。

* 製作料理過程需要時間，客人吃飯也需要時間。

* 服務生知道客人點了什麼餐點，但廚師只知道要做什麼餐點。

* 客人點了什麼餐，就應該只做一份料理，不應重複製作。
:::

#### 傳球作業
![](https://i.imgur.com/kJKr42i.png)


#### 種族大戰爭作業
請用程式完成以下遊戲劇情

第一部分
創造之神吃飽蛋疼，創造了10種種族之祖先，並且指使他們互相競爭。

這些第一代的由創造之神的物種，被稱為種族的先祖，每種總族只有一位先祖，所以總共只有10位先祖，分別代表各自的種族。

自從先祖開始，在誕生之後的一段時間後(100ms)，就會進行繁衍，一次會產生5到10個後代個體，每個後代個體在誕生之後一段時間(100ms)，也會進行繁衍，一樣也是會一次繁衍出1到3個更後代的個體。

注意，每個個體，只能繁衍一次，所以換句話說，繁衍過後代的個體，就不會再繁衍了。

第二部分
劇本開始1s之後，開始進入戰爭。

戰爭階段，先祖有專屬於先祖的戰鬥，後代有專屬於後代的戰鬥。

每經過500ms，先祖們就會互相PK，然後有一位先祖就會陣亡，屬於該先祖的種族後代就會全部滅亡，一個不留。

簡單來說呢，先祖代表一切，先祖打輸了，所有後輩也別想活。

後代有後代們的戰爭，後代不管血緣先後(不管誰比較早出生)，不論總族，在每個個體出生的當下，都被會登記造冊記錄起來。

每200ms就會發生一次全種族大亂鬥，每次的大亂鬥會隨機死亡150個個體，但奇妙的是，如果是先代個體陣亡了，下面的子孫後代會自動死光光。

後代子孫死亡了，不會影響到前代個體，只會造成自己的後代死亡。

但如果除了先祖之外，種族不幸遇到所有後代都死光光，那麼這個種族也會被判斷落敗，先祖立即自動死亡。

剩下的唯一種族，獲得勝利。


重點要求
每個個體(不論先祖或後代個體)都是獨立一個goroutine。
每次先祖戰爭後，請印出消失的種族，和剩下存活的種族。
每次後代大亂鬥之後，請印出每個種族剩餘後代數量。
前代死亡而導致後代死亡的狀況，利用context來關閉開出的goroutine。


示意圖 ：
![](https://i.imgur.com/KNlSSo6.png)
![](https://i.imgur.com/7yuVkKE.png)


## 資訊安全：

學習程式的常見攻擊手法及防範方式，並製作成簡報(40頁)
- Cross-Site Scripting
- Injection Flaw
- CSRF
- 防禦性程式設計、系統資訊安全設計報告
- TDD探討