“八足文”的本義是明清時期科舉考試中使用的一種文體。指的是文章的八個部分。體式的格式由八個部分組成:斷題、承載題、起題、入題、開始部分、中間部分、后面部分、結(jié)束部分。作文(我抄的)。不過,在程序員群體內(nèi)部,還有一種叫做“八篇文章”的東西,經(jīng)常出現(xiàn)在Java程序員群體中,這是Java程序員面試時必須背的東西。因為面試官很有可能會問到Java編程的基礎知識,但“八篇文章”在.Net社區(qū)卻很少被提及。為什么是這樣?
這就引出了Java“八足文”的由來!據(jù)不完全考證,Java的“八篇論文”起源于一家互聯(lián)網(wǎng)大公司,問的問題基本都是Java編程問題。后來,根據(jù)程序員的水平,問題的難度逐漸增加。因此,其他使用Java的IT公司在招聘Java程序員時,都會效仿大公司的做法,問一些相對固定的Java編程問題。盡管問題可能會有所不同,但它們?nèi)匀皇窍嗤模?
(相關(guān)資料圖)
就好像我們在考試前就提前得到了題目范圍一樣。我們只需要記住所有可能出現(xiàn)的問題,這樣無論最后得到哪一個,我們都能回答出來。這種一直被圈出來的問題,被Java程序員戲稱為“八篇文”!
其實Java的“八篇文章”基本涵蓋了日常工作中經(jīng)常用到的數(shù)據(jù)結(jié)構(gòu)、異步、線程、JVM等。當然,一些要求比較苛刻的公司也會問一些平時不常用的問題,但是很考驗Java程序員的能力。
與Java程序員相反,Net程序員群體內(nèi),很少有人提到“八足文”。這其實和.Net生態(tài)系統(tǒng)有關(guān)系!
.Net通常指微軟的通用開發(fā)框架,它提供了一致的面向?qū)ο蟮木幊汰h(huán)境。Net框架下支持的編程語言有C#、VB.Net、F#等,其中,還支持多余的語言C++!很多人錯誤地認為C++屬于.Net,但事實并非如此!
.Net開發(fā)框架下,最常用的語言是C#(CSharp),這導致很多人認為.Net就是C#!而CSharp只是.Net框架下的一種編程語言!記得有一次面試的時候,面試官說.Net是C#,我糾正了他。結(jié)果我們尷尬了好久,之后就沒有面試了!
與C#不同,Java多用于開發(fā)后端程序。雖然Java也支持前端界面(桌面)的構(gòu)建,但是知道的人基本上很少!
有些人可能不同意,Java 能做的事C# 都能做,C# 能做的事Java 也能做,但很少有人做到。這注定讓使用C#或者.Net的程序員比Java程序員懂得多得多!
然而Java生態(tài)系統(tǒng)只專注于后端開發(fā),因此Java程序員往往更加專注。這個特性會讓Java程序員比.Net程序員對編程有更好的理解!
C#程序員經(jīng)常要與桌面、Web、服務后端等打交道。隨著近幾年的發(fā)展,Net已經(jīng)向通用平臺方向發(fā)展,開發(fā)了.Net Core。Net Core還支持之前.Net Framework的幾乎所有內(nèi)容。因此,對.Net程序員有用的知識需要增加1倍!
由于.Net業(yè)務覆蓋面廣,很多.Net程序員樣樣精通,但真正精通的卻少之又少!
因此,大多數(shù)公司在招聘.Net程序員時,大多都會問一些與業(yè)務相關(guān)的問題。一般使用.Net框架下的編程語言的公司大多主要是開發(fā)管理軟件。因此,他們覺得既然.Net程序員在編碼能力上很難與Java程序員相比,那還不如招一些有行業(yè)經(jīng)驗的.Net程序員呢!
因此,之所以很少看到使用.Net的公司對.Net程序員進行“八篇作文”測試,是因為.Net程序員基本上都是那種“什么都不懂”的人。最好還是問點別的?;蛘咧苯诱埶麄兛匆幌马椖繒线m!
另外,Net程序員可能不會遇到面試時要求“八篇論文”的公司,但這樣的公司基本上很難以市場價招人,因為如果招Java程序員,對.Net程序員來說就很難了招聘.Net程序員時要通過標準!
在我的職業(yè)生涯中,我從未遇到過這樣的公司?;旧线@類公司要么研發(fā)經(jīng)理是Java程序員,要么公司業(yè)務突然需要搭建桌面端,但后端還是Java!
至此,似乎我已經(jīng)讓.Net程序員太尷尬了,但這就是現(xiàn)實!我自己也是一名C#程序員,這就是我所知道的,也是我所經(jīng)歷的!
當然,一些比較有實力的大公司為了招收優(yōu)秀的人才,也會參加.Net程序員的“八篇作文”測試,但大多數(shù)有實力的公司的編程框架仍然是基于Java的。這也間接導致我們.Net程序員感覺.Net程序員好像沒有參加“八篇作文”考試!
雖然.Net程序員在找工作的時候不會被問到“八篇論文”,但是我們也會遇到一些常見的問題,基本上都是開發(fā)過程中經(jīng)常用到的東西。因為.Net涵蓋的主題非常廣泛,所以我不會一一列出其他雜七雜八的問題。比較統(tǒng)一的問題基本上都是異步、線程、數(shù)據(jù)庫、Sockets等問題相關(guān)!如果我再問的話,我可能什么也回答不了!
然而,僅僅因為你不能回答它并不意味著你不能使用它!這是.Net程序員最驚訝的事情!也就是說,很多.Net知道或者寫過某些代碼,但是當被問到的時候,他們不知道別人在問什么!
解釋這個問題很簡單,就是Java面臨的工作內(nèi)容和.Net程序員面臨的工作內(nèi)容從數(shù)量上來說并不屬于同一個級別。與.Net相比,Java的范圍更窄,也更復雜!
許多.Net 程序員的技能似乎很差。這不是.Net程序員本身造成的,而是由市場決定的。一些非常優(yōu)秀的.Net程序員往往需要在一個行業(yè)工作多年,才能達到與Java程序員相同的知識水平。
但程序員這個職業(yè)并不是一個相對穩(wěn)定的職業(yè),所以很多使用.Net作為開發(fā)框架的公司都能理解這一點,不會向.Net程序員詢問“八篇論文”,只要能用就行!