面試官:你連單例模式你都不會,還好意思來應聘高級軟件工程師?

分享職場程序員生活、職場攻略、領導同事相處技巧和創業資源

文|洪生鵬

求職面試時,對於設計模式,面試官對這塊也比較青睞,喜歡問求職者關於設計模式,特別是應聘中高級崗位。

我的一位同事楊工是java程序員,分享了一次他的面試經歷,分享給大家,看看大家是怎樣看待的。

有次他去面試Android開發崗位,面談時面試官叫他手寫單例模式代碼,他寫不出來,面試官說了一句很扎心的話,“連單例模式你都不會,還好意思應聘高級軟件工程師?”楊工聽了,臉紅紅彤彤的,楊工說“如果地下有縫的話,我想我真的會鑽進去。”

面試官:你連單例模式你都不會,還好意思來應聘高級軟件工程師?

小編認為,這位面試官也太直接了,就不能表達委婉點嗎?到可以問問單例模式有什麼不足,如何優化等話題啊。不過也不能全怪面試官,畢竟單例模式在眾多模式中是最常見的一種模式,作為一名開發者,是需要掌握的。

單例模式,是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統中,應用該模式的類一個類只有一個實例。即一個類只有一個對象實例。

一般來說單例模式是這樣通常單例模式在Java語言中,有兩種構建方式:

  • 懶漢方式。指全局的單例實例在第一次被使用時構建。
  • 餓漢方式。指全局的單例實例在類裝載時構建。

單例模式一般寫法:

面試官:你連單例模式你都不會,還好意思來應聘高級軟件工程師?

單例模式

這種寫法要是運行在單線程上,問題不大,但在多線程就有點欠妥了。我們來稍微調整一下:

面試官:你連單例模式你都不會,還好意思來應聘高級軟件工程師?

單例模式

細心的你會發現我們在getInstance()方法中加入了synchronized鎖,這樣能夠在多線程中很好的工作,但是效率一般,並且大多數情況下不需要同步。

單例模式能阻止其他對象實例化其自己的單例對象的副本,從而確保所有對象都訪問唯一實例。因為類控制了實例化過程,所以類可以靈活更改實例化過程。但也有不足之處。面試時要是能適當指出,並引出說出其他設計模式,譬如工廠模式,相信能為這次面試加分。

小編認為,面試前,應該多做一些準備,這樣才能儘量避免一些基礎的知識反而回答不上來的尷尬,不知對此你是怎麼看待的,歡迎交流!


分享到:


相關文章: