簡體   English   中英

Java系統設計一個場景

[英]Java system design of a scenario

最近在面試,有一個系統設計的問題,我答不上來。 場景如下:

場景:有一台飲料機可以提供咖啡、牛奶等飲料。您的設計模式/方法是什么?

我的答案:接口:飲料機

實施類:牛奶、咖啡等。

或者可以使用 inheritance 作為父類 class 制作飲料機,子類將是牛奶、咖啡等。

現在的問題是假設如果機器提供 1000 種飲料,您是否會為此編寫 1000 個實現類。 這就是它讓我想到合適的設計的地方。 我不知道他是不是針對微服務提出這個問題,但作為一個簡單的 java 相關問題,它似乎與微服務無關。

對此的任何幫助將不勝感激。 提前致謝。

曾是...

這是一台飲料機,可以提供咖啡、牛奶等飲料。您的設計模式/方法是什么?

...字面上的問題? 是在 OO 設計和開發的背景下嗎? 你打算擔任開發人員的角色嗎?

如果它是一個架構師角色,我幾乎會說這是一個技巧性問題,因為該陳述中沒有足夠的信息來作為特定答案的基礎 - 因此這是一個技巧性問題,旨在了解您是否是一個批判性思考者。

假設它被表述為一個面向對象的問題,並且您已經按照要求解釋了這個問題……

由於飲料是 output,工廠模式可能就是他們所追求的。

我必須告訴你,我只是在比你在面試中花費更多時間后才想到這個,而且我在這個行業有 20 多年的經驗。 因此,如果您在面試中遺漏了某些內容,請不要對自己太苛刻——每個人都會有這樣的經歷。

現在的問題是假設如果機器提供 1000 種飲料,您是否會為此編寫 1000 個實現類。

是的,除非你有一個數據驅動的類/設計/解決方案。 工廠模式可以以一種明智的方式幫助創建,但在某些時候你必須編寫一些代表飲料的代碼,因為雖然它可以吐出 IBeverage 對象,但這些對象在某些時候必須來自 class。

不是你問題的一部分,但我覺得值得一提......不幸的是,在開發人員面試情況下(在西方文化中)它通常可以 go 以下兩種方式之一:

  1. 面試開發人員的主要關注點是您對自己的工作有一些合理的了解,並且您會很好地融入團隊。
  2. 面試開發人員將其視為彌補自己缺乏自信/男子氣概的一種方式。 在這種情況下,他們可能會尋求一個非常具體的答案,這個答案比實際需要的稍微隱晦一些。

希望當他們問你那個問題時他們不在第二陣營,因為如果他們是,雖然我們可以在這里提供我們認為合理的答案,但他們可能並不是他們所追求的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM