?本系列文章將整理到我在GitHub上的《Java面試指南》倉(cāng)庫(kù),更多精彩內(nèi)容請(qǐng)到我的倉(cāng)庫(kù)里查看
喜歡的話麻煩點(diǎn)下Star哈
文章首發(fā)于我的微信公眾號(hào)【黃小斜】也將同步到我的個(gè)人博客
閱讀本文大概需要 2.8 分鐘。
最近有一些小伙伴問(wèn)我,為什么當(dāng)初選擇走Java這條路,為什么不做C++、前端之類的方向呢,另外還有一些聲音:研究生不是應(yīng)該去做算法方向么,本科生不就可以做開(kāi)發(fā)了嗎,為什么還要讀研呢。其實(shí)吧,這個(gè)問(wèn)題擱在不同人身上,回答可能也是完全不一樣的。我可能還是主要以我的角度出發(fā),結(jié)合一些讀者的問(wèn)題,來(lái)說(shuō)一說(shuō)為什么要選擇Java這條路。
談?wù)勎业募夹g(shù)方向選擇
我最早接觸的語(yǔ)言應(yīng)該是c,再后來(lái)又接觸了前端、php、C#等語(yǔ)言,對(duì)這些語(yǔ)言的了解也僅限于懂得基本語(yǔ)法,寫(xiě)過(guò)一些小demo而已,那時(shí)候覺(jué)得掌握一門語(yǔ)言就是掌握它的語(yǔ)法就行了,于是會(huì)在簡(jiǎn)歷上寫(xiě),了解各種語(yǔ)言,現(xiàn)在想想實(shí)在是太可笑了。
不過(guò)真的很多初學(xué)者都會(huì)這么認(rèn)為,覺(jué)得自己不管選哪個(gè)方向都可以,這是因?yàn)樗麄儾恢雷约旱募夹g(shù)方向到底是什么,因?yàn)樗麄儾还苣膫€(gè)方向都不精。
后來(lái)慢慢接觸了Android開(kāi)發(fā),能自己寫(xiě)一些app,覺(jué)得這個(gè)方向還挺有趣的,于是想著以后干脆做這個(gè)吧。不過(guò)我那時(shí)候也明白自己離進(jìn)大廠還有很遠(yuǎn)的距離,于是打算考研。巧的是,讀研前的那個(gè)假期,去了一家公司實(shí)習(xí),做的是Java Web,那時(shí)候才覺(jué)得Android比Java Web簡(jiǎn)單多了呀,完全不需要學(xué)那么多框架、技術(shù)啊,于是更堅(jiān)定了做Android的決心,只不過(guò)那時(shí)候也同樣發(fā)現(xiàn)了,Java web是更加熱門的方向,崗位需求量也更大。
讀研的時(shí)候,一開(kāi)始也是打算做Android方向的,買了各類Android書(shū)籍開(kāi)始啃,那時(shí)候剛好遇到了個(gè)實(shí)踐課程,讓我們選方向,有Java、Android、C++等等。當(dāng)時(shí)妹子做前端,為了帶上妹子一起做項(xiàng)目,干脆就選了Java Web這個(gè)方向,想著應(yīng)該不影響我做Android啊,于是接下來(lái)的時(shí)間里就開(kāi)始學(xué)Java Web了。
時(shí)間一長(zhǎng),發(fā)現(xiàn)這個(gè)方向也沒(méi)有想象的那么難,相反還挺有意思的,畢竟能用到各種各樣的框架,技術(shù)棧的內(nèi)容也很豐富,看起來(lái)好像比Android的技術(shù)含量高很多,加上自己之前學(xué)過(guò)Java,也有Java Web的學(xué)習(xí)經(jīng)歷,簡(jiǎn)歷上也能寫(xiě)的好看一點(diǎn),于是一不做二不休,就開(kāi)始做Java方向了。就這樣,我找到了第一份Java實(shí)習(xí),看了一遍Java后端書(shū)單,慢慢地在這條路上越走越遠(yuǎn),后來(lái)我才發(fā)現(xiàn),Java Web遠(yuǎn)沒(méi)有想象中那么簡(jiǎn)單,Java后端技術(shù)棧也遠(yuǎn)不止Java Web這點(diǎn)內(nèi)容,特別是對(duì)于大廠來(lái)說(shuō),要掌握的東西實(shí)在太多了,比如分布式、網(wǎng)絡(luò)編程、中間件等等。
所以,選擇方向這件事,有時(shí)候就是看興趣,看機(jī)遇,看你能堅(jiān)持多久,如果你對(duì)一個(gè)方向感興趣,并且愿意持續(xù)學(xué)習(xí),不斷深挖,這個(gè)方向可能就適合你,當(dāng)你在這個(gè)方向投入了一定時(shí)間之后,有了一定積累和經(jīng)驗(yàn),就不太容易再改變方向了。
談?wù)劯鱾€(gè)技術(shù)方向的前景
之前也有很多讀者問(wèn)過(guò)這個(gè)問(wèn)題,做哪個(gè)方向更有前景,更有錢景。雖然我只做過(guò)一個(gè)方向,但是對(duì)其他方向也有一些了解和涉獵,不敢說(shuō)了解得非常多,但是結(jié)合自己身邊的同學(xué)、朋友的情況,還是可以給出一些比較中肯的建議。
其實(shí)我最早打算做的是游戲開(kāi)發(fā)的,所以我們先聊聊游戲開(kāi)發(fā)這個(gè)方向。
網(wǎng)易游戲在前幾年對(duì)游戲開(kāi)發(fā)的招聘要求是985碩士以上學(xué)歷,當(dāng)時(shí)我就是沖著這個(gè)要求考了研,后來(lái)卻沒(méi)有去做游戲開(kāi)發(fā),主要原因是游戲開(kāi)發(fā)主要用的是C++,并且主要的崗位要求是客戶端方向的技術(shù),比如圖形學(xué)、引擎技術(shù),以及對(duì)C++的掌握程度。
當(dāng)時(shí)自認(rèn)為有一些Java基礎(chǔ),不愿意轉(zhuǎn)C++,同時(shí)也感覺(jué)游戲行業(yè)大廠太少了,除了騰訊網(wǎng)易就沒(méi)有什么大公司了,職業(yè)發(fā)展的空間可能也不大。自己雖然愛(ài)玩游戲,但是做開(kāi)發(fā)和玩游戲畢竟是兩碼事。當(dāng)然,近兩年游戲開(kāi)發(fā)的崗位需求其實(shí)還是很大的,因?yàn)楝F(xiàn)在做游戲開(kāi)發(fā)的人太少了,導(dǎo)致網(wǎng)易游
戲放寬了研發(fā)工程師的標(biāo)準(zhǔn),只要求211以上即可,所以,想要從事游戲開(kāi)發(fā)的朋友,其實(shí)現(xiàn)在進(jìn)大廠的機(jī)會(huì)可能比之前更多了。
說(shuō)完游戲開(kāi)發(fā),說(shuō)一說(shuō)C++,C++方向和Java一樣主要是做后端的,雖然游戲開(kāi)發(fā)大部分也用的是C++,但是C++服務(wù)端的需求量確實(shí)沒(méi)有Java大,加上C++的學(xué)習(xí)難度稍微搞一點(diǎn),所以我沒(méi)有選擇這個(gè)方向。
當(dāng)然,現(xiàn)在做CV等算法方向的同學(xué)都會(huì)用到C++,所以相對(duì)Java來(lái)說(shuō),C++方向選擇崗位的范圍可能也更多一些。不過(guò),正如Java也能做大數(shù)據(jù)開(kāi)發(fā)一樣,選擇方向并不是選擇語(yǔ)言,比如你做游戲開(kāi)發(fā)或者算法方向,要學(xué)的遠(yuǎn)不止C++,做大數(shù)據(jù)方向,Java也只是很小的一部分而已。
除此之外,前端、測(cè)試、移動(dòng)端等方向也有很多機(jī)會(huì),這些方向的學(xué)習(xí)難度可能要稍微簡(jiǎn)單那么一點(diǎn),所以有很多女生會(huì)選擇這些方向,如果你想進(jìn)大廠卻對(duì)自己不是很有信心,那么這些方向也是很不錯(cuò)的選擇。
研究生就應(yīng)該做算法么?
再聊聊現(xiàn)在很火的人工智能、機(jī)器學(xué)習(xí)方向,這個(gè)方向說(shuō)實(shí)話最難的地方在于理論知識(shí),也就是機(jī)器學(xué)習(xí)理論、算法模型、統(tǒng)計(jì)學(xué)知識(shí)等內(nèi)容。很多人對(duì)這個(gè)方向趨之若鶩的原因,很大程度上是因?yàn)檫@個(gè)方向的薪資高,并且相對(duì)工程方向來(lái)說(shuō),工作強(qiáng)度要低一些。
但是,這么熱門的方向,競(jìng)爭(zhēng)有多激烈就不用多說(shuō)了,大廠的算法崗簡(jiǎn)歷多到數(shù)不勝數(shù),你沒(méi)有論文、實(shí)習(xí)經(jīng)歷或者比賽為你背書(shū),基本上連簡(jiǎn)歷篩選都過(guò)不去,就算你的簡(jiǎn)歷很漂亮,但是很多時(shí)候由于崗位需求量不多,只要你不是特別優(yōu)秀,就可能被安排到研發(fā)崗位,這也是我身邊很多同學(xué)親身經(jīng)歷的。再有一點(diǎn),就是有很多算法方向的博士畢業(yè)生也會(huì)和你競(jìng)爭(zhēng),這就有點(diǎn)嚇人了,總之,算法方向還是比研發(fā)方向更加有難度的,不管是學(xué)習(xí)難度、面試難度,還競(jìng)爭(zhēng)激烈程度,都更加明顯。
很多人覺(jué)得讀研就應(yīng)該做算法,本科生才做研發(fā),我對(duì)此不敢茍同,因?yàn)橹饕€是還看個(gè)人實(shí)際情況,如果你想進(jìn)大廠,那么至少本科的時(shí)候就要有很扎實(shí)的基礎(chǔ)實(shí)力,這對(duì)大部分同學(xué)來(lái)說(shuō)都是比較困難的,如果你不是名校出身,我覺(jué)得進(jìn)大廠的難度還是比較大的。
很多名校背景的本科生確實(shí)可以拿到大廠的研發(fā)offer,于是他們會(huì)覺(jué)得沒(méi)必要讀研,但是對(duì)于我這種跨專業(yè)的人來(lái)說(shuō),研究生才是我開(kāi)始的第一步,跟他們沒(méi)有什么可比性,所以對(duì)于從零開(kāi)始的我來(lái)說(shuō),做研發(fā)比算法要靠譜的多,對(duì)于很多要轉(zhuǎn)行做程序員的人來(lái)說(shuō),也是一樣的道理,應(yīng)該選擇更加符合自己實(shí)力的崗位方向,不要好高騖遠(yuǎn)。
以上內(nèi)容純屬個(gè)人觀點(diǎn)!