为什么Java程序员有“八股文”,但.Net程序员却没有?

是程序员古耕 2024-03-15 00:56:19

八股文”原意为明清科举考试时的一种文体,指文章的八个部分,文体的格式由破题、承题、起讲、入题、起股、中股、后股、束股八部分组成(我抄的)。但是,在程序员这个群体内,也有一种号称“八股文”的东西,经常出现在Java程序员这个群体内,也就是Java程序员面试时所必背的东西,因为面试官很大概率会问到,为Java编程基础。但“八股文”在.Net群体内,却很少被人提起,这是为什么呢?

“八股文”是什么意思

这得说到Java“八股文”的起源了!据不完全考证,Java的“八股文”起源于某互联网大厂,问的内容基本上都是一些Java编程类问题。后来,根据程序员的等级不同,问题的难度又逐步升高。于是,其他使用Java的IT类公司都仿照某大厂,在招Java程序员的时候都会问一些比较固定的Java编程问题。虽然问题问得可能不一样,但是万变不离其宗!

这就像我们在考试前会预先得到题目的范围,我们只要把所有可能考到的题目全部背下来,这样不管最后考到哪个,我们都能答出来了。而这种已经被圈好范围的问题,被Java程序员戏称为“八股文”!

其实,Java的“八股文”基本上就涵盖了数据结构、异步、线程、JVM等等这些在平时在工作当中经常用到的东西。当然了,有些要求比较苛刻的公司,还会问一些平时用不到,但是很考验Java程序员能力的问题。

与Java程序员相反,在.Net程序员这个群体内,却很少有人提“八股文”。这其实跟.Net生态有关系!

.Net是什么

.Net通常指的是微软的通用开发框架,提供一个一致的面向对象的编程环境。.Net框架下支持的编程语言还有C#、VB.Net、F#等,其中,还支持编外语言C++!很多人误以为C++隶属于.Net,其实不是的!

而.Net开发框架下,最常用的语言是C#(CSharp),导致很多人觉得.Net就是C#!而CSharp则是.Net框架下的一个编程语言而已!我记得有一次我面试的时候面试官说.Net就是C#,然后我纠正了他,结果我俩尴尬了好久,之后,我没面试上!

Java程序员要比.Net程序员更专业

与C#不同的是,Java大多用来开发后端程序,虽然Java也支持前端界面(桌面端)的构建,但基本上会的人很少!

可能有些人会不认同,Java能做的事情,C#都能做,C#能做的事情,Java也能做,但是很少有人去做。这注定了使用C#或者说.Net的程序员,懂得要比Java程序员多得多!

但是,Java生态仅仅专注于后端开发,因此,Java程序员往往比较专注。这一特点,会让Java程序员在对编程的理解上优于.Net程序员!

.Net程序员涉猎更广

C#程序员往往要面对桌面端、Web端、服务后端等等。随着近些年的发展,.Net向通用平台发展,发展出了.Net Core,而.Net Core又同时支持了之前.Net Framework的几乎所有内容,因此,.Net程序员有用的知识又要增加1倍!

因为.Net业务覆盖广的原因,导致了很多.Net程序员虽然什么都会一点,但是真正能够精通的很少!

所以,大部分公司在招.Net程序员的时候,大多会问一些有关业务的问题。一般使用.Net框架下的编程语言的公司,大部分都是以开发管理类软件为主。所以,他们觉得既然.Net程序员在编码功底上很难和Java程序员比,那还不如招一些有行业经验的.Net程序员!

因此,之所以很少看到有使用.Net的公司考.Net程序员“八股文”,就是因为.Net程序员基本上属于“一问三不知”的那种人,还不如问点别的,或者直接让他们拿项目来看看比较合适!

另外,.Net程序员在面试时也不一定就不会碰到一些会问“八股文”的公司,只不过像这类公司基本上很难以市场价招到人,因为如果按招Java程序员的标准去招.Net程序员,.Net程序员是很难过关的!

这种公司在我的职业生涯里我也不是没有碰到过,而这种公司基本上要么研发经理是Java程序员出身,要么就是公司业务突然需要构建桌面端,但是后端还是Java!

.Net程序员是真答不上来!

说到这里,好像我把.Net程序员说得太难堪了,但这就是现实!我本身也是一名C#程序员,我所了解的,以及我所经历的事情就是如此!

当然,有些实力比较好的大公司,为了招到优秀的人,也会考.Net程序员“八股文”,但是大部分有实力的公司的编程框架基本还是以Java为主。这也间接导致了我们.Net程序员感觉好像.Net程序员不考“八股文”!

虽然.Net程序员在找工作的时候不会被问“八股文”,但是,我们也会遇到一些常规问题,基本上都是在开发过程中经常会需要用到的东西。因为.Net涉猎比较广的原因,其他杂七杂八的问题我就不一一列出来了,比较统一的问题基本上就跟异步、线程、数据库、Socket这类问题有关!再问,估计也答不出来什么了!

但是,不会答不代表不会用!这是.Net程序员比较令人惊喜的地方!那就是很多.Net明明会或者写过某些代码,但是在被问到的时候却不知道别人问的是什么!

讲通这个问题也很简单,那就是Java所面临的工作内容和.Net程序员所面临的工作内容,在数量上不属于一个级别的。Java的面相比.Net更窄一些,精一些!

结语

.Net程序员很多看似技术很差,这并是因为.Net程序员这个群体自身导致的,而是由市场决定的。一些很优秀的.Net程序员往往需要在一个行业内深耕多年,才能达到跟Java程序员一样的知识面。

但程序员这个职业又不是一个相对稳定的职业,所以很多使用.Net作为开发框架的公司能够理解这点,就不会去问.Net程序员“八股文”了,能用就行!

0 阅读:0

是程序员古耕

简介:感谢大家的关注