實習(xí)生的話,問源碼也可以,但是如果用來淘汰人的話,只能說現(xiàn)在的就業(yè)環(huán)境真的不是很好,企業(yè)對人挑三揀四,找工作有點不順利。
但是有開發(fā)經(jīng)驗的,一般都會問到,這個也分語言,比如PHP和Python這種語言,源代碼是C語言寫的,如果都去看C語言,確實有點過分,我也看不懂C語言,也不可能去看源代碼。但是程序的執(zhí)行流程和一些經(jīng)典的寫法,是需要了解的,面試的時候基本都需要談?wù)劊热鏟HP的執(zhí)行流程,Zend引擎了解過嗎,垃圾回收了解嗎等等。
如果是Go和Java這種語言,基本都是要求看源代碼的,因為源代碼本身就是語言自身實現(xiàn)的,有一些本地方法或者庫也是C語言實現(xiàn)的,這個不需要了解,但是需要知道本地方法調(diào)用。其它的大部分源代碼都是需要看的,哪怕看的云里霧里,但是一定要看過,即使最后看的稀里糊涂。
有句話說的好,在Java中,Spring作為一款世界范圍內(nèi)普遍使用的框架,甚至是開發(fā)界事實上的標(biāo)準(zhǔn)。但我們不需要都去維護Spring框架,我們主要是使用他,運用他,知道他的邏輯和一些實現(xiàn)思路,能運用到我們自己的項目中,或者借鑒來解決我們真正面對的問題就行。所以我們不需要面面俱到,去看全部的源代碼,但是關(guān)鍵的部分,一些思路是需要去看源代碼的。
比如最近看《Spring源碼深度解析:第2版》郝佳編著,第12章348頁講遠程服務(wù)RMI時,書上印刷有這么一段:
看我圈起來的部分, value="RMI://127.0.0.1:9999/helloRMI" 這句,如果你不是很了解這些,畢竟現(xiàn)在Java這樣用遠程服務(wù)的不多了,如果不是對性能有太高的考慮,都是直接使用http接口,不做Socket這種級別的了。當(dāng)然有dubbo這種解決方案,很多類似的框架也是很方便開發(fā)的。
如果你都按書上的說法做,這個是無法運行的,因為"RMI:127.0.0.1:9999"里面的這個RMI源代碼里并沒有,源代碼真實是這樣的。你去追蹤到這個類 RmiClientInterceptor,發(fā)現(xiàn)里面是這么寫的:源代碼人家是小寫的"rmi"。
源代碼是小寫,你說如果因為作者的原因,或者圖書排版的原因,你還去網(wǎng)上搜索,問別人,調(diào)試半天,值得嗎。
這就是會看源代碼的好處。代碼本身就是最好的文檔,就是這個意思。你再怎么解釋,怎么說明,都不如源代碼說的明白。當(dāng)然并不是所有的問題都這么好找,有時候甚至是運氣的成分,尤其是嵌套和集成漫天飛的時候,真的看源代碼還不如網(wǎng)上搜索來的快。像C這樣的源代碼,并不是每個人都能看的,我也不能。這也是軟件開發(fā)的特別之處,會遇到很多有趣又無奈的事情。