但是有开发经验的,一般都会问到,这个也分语言,比如PHP和Python这种语言,源代码是C语言写的,如果都去看C语言,确实有点过分,偶也看不懂C语言,也不可能去看源代码。但是程序的执行流程和一些经典的写法,是需要了解的,面试的时候基本都需要谈谈,比如PHP的执行流程,Zend引擎了解过吗,垃圾回收了解吗等等。
如果是Go和Java这种语言,基本都是要求看源代码的,因为源代码本身就是语言自身实现的,有一些本地方法或者库也是C语言实现的,这个不需要了解,但是需要知道本地方法调用。其它的大部分源代码都是需要看的,哪怕看的云里雾里,但是一定要看过,即使最后看的稀里糊涂。
有句话说的好,在Java中,Spring作为一款世界范围内普遍使用的框架,甚至是开发界事实上的标准。但大家不需要都去维护Spring框架,大家主要是使用他,运用他,知道他的逻辑和一些实现思路,能运用到大家自己的项目中,或者借鉴来解决大家真正面对的问题就行。所以大家不需要面面俱到,去看全部的源代码,但是关键的部分,一些思路是需要去看源代码的。
比如最近看《Spring源码深度解析:第2版》郝佳编著,第12章348页讲远程服务RMI时,书上印刷有这么一段:
看偶圈起来的部分, value=”RMI://127.0.0.1:9999/helloRMI” 这句,如果你不是很了解这些,毕竟现在Java这样用远程服务的不多了,如果不是对性能有太高的考虑,都是直接使用http接口,不做Socket这种级别的了。当然有dubbo这种解决方案,很多类似的框架也是很方便开发的。
如果你都按书上的说法做,这个是无法运行的,因为”RMI:127.0.0.1:9999″里面的这个RMI源代码里并没有,源代码真实是这样的。你去追踪到这个类 RmiClientInterceptor,发现里面是这么写的:源代码人家是小写的”rmi”。
源代码是小写,你说如果因为作者的原因,或者图书排版的原因,你还去网上搜索,问别人,调试半天,值得吗。
这就是会看源代码的好处。代码本身就是最好的文档,就是这个意思。你再怎么解释,怎么说明,都不如源代码说的明白。当然并不是所有的问题都这么好找,有时候甚至是运气的成分,尤其是嵌套和集成漫天飞的时候,真的看源代码还不如网上搜索来的快。像C这样的源代码,并不是每个人都能看的,偶也不能。这也是软件开发的特别之处,会遇到很多有趣又无奈的事情。