相關文章 如何慢慢地快速成長起來? 成長的故事之Spring Core系列 你是如何看待Spring容器的,是這樣子嗎? Spring的啟動過程,你有認真思考過嗎?(待寫) 面向切麵編程,你指的是Spring AOP嗎?(待寫) Spring的聲明式事務,這次你徹底明白了吧?(待寫) §如何提問,如 ...
相關文章
如何慢慢地快速成長起來?
成長的故事之Spring Core系列
你是如何看待Spring容器的,是這樣子嗎?
Spring的啟動過程,你有認真思考過嗎?(待寫)
面向切麵編程,你指的是Spring AOP嗎?(待寫)
Spring的聲明式事務,這次你徹底明白了吧?(待寫)
§如何提問,如何回答?
記得大學時,思想道德修養課的老師說過,現在的大學生都不太會表達自己的觀點。她舉了這麼個例子,如果你在食堂,隨機採訪幾個學生,就問:“你覺得食堂的飯菜怎麼樣啊?”
你得到最多的答案大概是像這樣的,“不錯,挺好吃的”;“不行,太難吃了”;“湊合,感覺還可以吧”。
原因有兩方面,一是學生不知道該如何對一個事物發表自己的觀點,也就是自我表達能力有點差。二是提問的問題本身存在問題,太寬泛了,學生不知道該怎麼接。諸如此類的“你是如何看待XXX的?”這樣的問題,感覺是最難回答的。
但我要說的是,如果你能把這類問題回答的很好,那你真的已經相當厲害了。
§從面試別人說起
說起來我也面試過幾十個人了,不過說實話,我並沒有一個很好的套路或方法去面試別人。我一般不會特別在意應聘者截至到現在擁有多少知識,或會多少技術。註意我說的是一般情況下不會。
原因有二,一來我們不是造航母,招的就是擰螺絲的。二來我更在意一個人對他已有知識,或已經會用的技術的看法。
因為一個問題的結果無非就是一些答案。但是一個看法的結果卻是一些觀點。一個人能夠當眾發表一些很有看法的觀點,說明的他的業務/技術素質和心理素質都很不錯。
所以對於應聘者,我都會問,你如何看待Spring?大都回答Spring是一個IoC容器,然後就沒有了。其實我真正想知道的是你眼中的Spring是什麼樣子的。
然後我繼續問,什麼是IoC?大都答道控制反轉或依賴註入。我再問,你如何理解控制反轉呢?幾乎沒有人能很好的回答。
既然是一個IoC容器,那你怎麼理解“容器”二字?幾乎也沒有人能回答的很好。
§C語言中的全局變數
電腦專業一般都會學C語言,倒不是為了做項目,只是作為入門語言。C語言是面向過程的,沒有類、欄位等這些概念,只有函數和變數。
剛開始接觸程式和語言時,大都水平不高。用的最多的就是全局變數,而且覺得特別好用。
原因有二,一是只要在一個全局位置定義好,後面程式中的任何地方都能夠訪問到它。二是因為全局可訪問,所以不用去考慮或規劃,如何定義變數,怎麼在函數間傳遞或返回。關鍵作為初學者,不一定能夠做好這“簡單”的事情。
全局變數非常簡單好用,和goto語句一樣。但逐漸都不推薦再使用或被淘汰了,因為它們太靈活了,不太好控制,特別是後期代碼量越來越多的時候。
如果發明一種東西,像全局變數一樣簡單好用(繼承優點),但同時又能夠很好地控制住(改進缺點),它能不火起來嗎?很顯然,Spring就具有這種特性(雖然現在的Spring已經足夠複雜了)。
§Spring很好用,真的
BAT之所以牛逼,就是因為它們都在各自的領域,徹底改變了人們的方式。Spring也徹底改變了人們的編程方式。
類似的還有Struts/SpringMVC徹底改變了開發web應用的方式,Hibernate/Mybatis徹底改變了訪問資料庫相關代碼的方式。
Spring的全局性
人類抬頭,看到的是天。代碼抬頭,看到的是Spring。在任何地方,代碼都可以和Spring交互。可以這麼說,代碼幾乎是在Spring的管控下運行的(雖然這樣講不是很精確)。
Spring的解耦性
這裡指的更多是開發方式上的解耦性。例如,從類A把B傳給類C,原來的做法是直接傳,這樣A和C就耦合了,其實它們本沒有關係。
現在只需在類A里把B放入Spring中就完事了。然後在類C里再從Spring中取出B就可以了。A和C就解耦了,因為Spring充當了中間人。
Spring的易用性
Spring就像你的秘書/管家,需要什麼服務,告訴它,它給你提供。需要發號施令,告訴它,它幫你執行。
就把Spring想象成你頭頂的容器,需要從里取東西,伸開胳膊拽下來的就行了。需要往裡存東西,胳膊用力推上去就行了。整個過程你甚至都不用抬頭。
PS:Spring僅僅是個容器嗎?請持續關註後續文章!
經典文章推薦
(完)
編程新說
用獨特的視角說技術