一名3年工作經(jīng)驗的程序員應(yīng)該具備的技能

作為初出茅廬的新人姚建,既要走進去矫俺,更要走出來。走進去是你要踏踏實實的學(xué)習(xí)技術(shù)桥胞,鉆研知識恳守;走出來是你要高瞻遠(yuǎn)矚,有方向和規(guī)劃贩虾,高能的進步和成長。這篇文章介紹了一名三年程序員的經(jīng)驗和心得沥阱,是對我這種開發(fā)的新人來說缎罢,受益良多。特摘至此處考杉。感謝本文作者策精。


前言

因為和同事有約定再加上LZ自己也喜歡做完一件事之后進行總結(jié),因此有了這篇文章崇棠。這篇文章大部分內(nèi)容都是面向整個程序員群體的咽袜,當(dāng)然因為LZ本身是做Java開發(fā)的,因此有一部分內(nèi)容也是專門面向咱們Java程序員的枕稀。

簡單先說一下询刹,LZ坐標(biāo)杭州,13屆本科畢業(yè)萎坷,算上年前在阿里巴巴B2B事業(yè)部的面試凹联,一共有面試了有6家公司(因為LZ不想請假,因此只是每個晚上去其他公司面試哆档,所以面試的公司比較少)蔽挠,其中成功的有4家,另外兩家失敗的原因在于:

1瓜浸、阿里巴巴B2B事業(yè)部的面試澳淑,兩輪技術(shù)面試都過了比原,最后一輪面試是對方的主管,由于聽說技術(shù)面試過了基本上90%都面試成功了杠巡,所以LZ在和主管的交談中也是毫無顧忌量窘,說得天花亂墜绑改,很多自己介于知道和不知道的東西都直接脫口而出了,結(jié)果多次被對方一反問就問得啞口無言厘线。事后想來,模棱兩可的答案是面試中最忌諱的出革,這次的失敗也讓LZ認(rèn)真地對待后面的每一次面試

2、另外一家失敗的是一家小公司展箱,也就20來個人吧旨枯,整個團隊是支付寶出來創(chuàng)業(yè)的,非常厲害混驰。面試完LZ多方了解了一下攀隔,對方認(rèn)為我基本功什么的都不錯,但是實際項目經(jīng)驗還是欠缺一些栖榨,因為對方是創(chuàng)業(yè)型公司昆汹,需要人上手就能干活,因此我在這個時候還不是特別適合他們團隊

至于其他成功的四家公司婴栽,給LZ的面試評價都挺高的貌似满粗,但LZ也不想記流水賬,因此就不一一列舉每家公司的面試過程了愚争,下面LZ主要談?wù)勛鳛橐幻ぷ魅曜笥业腏ava程序員應(yīng)該具備的一些技能以及個人的一些其他感悟映皆。

關(guān)于程序員的幾個階段

每個程序員、或者說每個工作者都應(yīng)該有自己的職業(yè)規(guī)劃准脂,如果看到這里的朋友沒有自己的職業(yè)規(guī)劃劫扒,希望你可以思考一下自己的將來。

LZ常常思考自己的未來狸膏,也從自己的思考中總結(jié)出了一些東西沟饥,作為第一部分來談?wù)劇Z認(rèn)為一名程序員應(yīng)該有幾個階段(以下時間都算上實習(xí)期):

  • 第一階段----三年
  • 我認(rèn)為三年對于程序員來說是第一個門檻,這個階段將會淘汰掉一批不適合寫代碼的人贤旷。這一階段广料,我們走出校園,邁入社會幼驶,成為一名程序員艾杏,正式從書本上的內(nèi)容邁向真正的企業(yè)級開發(fā)。我們知道如何團隊協(xié)作盅藻、如何使用項目管理工具购桑、項目版本如何控制、我們寫的代碼如何測試如何在線上運行等等氏淑,積累了一定的開發(fā)經(jīng)驗勃蜘,也對代碼有了一定深入的認(rèn)識,是一個比較純粹的Coder的階段
  • 第二階段----五年
  • 五年又是區(qū)分程序員的第二個門檻假残。有些人在三年里缭贡,除了完成工作,在空余時間基本不會研究別的東西辉懒,這些人永遠(yuǎn)就是個Coder阳惹,年紀(jì)大一些勢必被更年輕的人給頂替;有些人在三年里眶俩,除了寫代碼之外莹汤,還熱衷于研究各種技術(shù)實現(xiàn)細(xì)節(jié)、看了N多好書颠印、寫一些博客体啰、在Github上分享技術(shù),這些人在五年后必然具備在技術(shù)上獨當(dāng)一面的能力并且清楚自己未來的發(fā)展方向嗽仪,從一個Coder逐步走向系統(tǒng)分析師或是架構(gòu)師,成為項目組中不可或缺的人物
  • 第三階段----十年
  • 十年又是另一個門檻了柒莉,轉(zhuǎn)行或是繼續(xù)做一名程序員就在這個節(jié)點上闻坚。如果在前幾年就抱定不轉(zhuǎn)行的思路并且為之努力的話,那么在十年的這個節(jié)點上兢孝,有些人必然成長為一名對行業(yè)有著深入認(rèn)識窿凤、對技術(shù)有著深入認(rèn)識、能從零開始對一個產(chǎn)品進行分析的程序員跨蟹,這樣的人在公司基本擔(dān)任的都是CTO雳殊、技術(shù)專家、首席架構(gòu)師等最關(guān)鍵的職位窗轩,這對于自己絕對是一件榮耀的事夯秃,當(dāng)然老板在經(jīng)濟上也絕不會虧待你

第一部分總結(jié)一下,我認(rèn)為,隨著你工作年限的增長仓洼、對生活對生命認(rèn)識的深入介陶,應(yīng)當(dāng)不斷思考三個問題:

1、我到底適不適合當(dāng)一名程序員色建?

2哺呜、我到底應(yīng)不應(yīng)該一輩子以程序員為職業(yè)?

3箕戳、我對編程到底持有的是一種什么樣的態(tài)度某残,是夠用就好呢還是不斷研究?

最終陵吸,明確自己的職業(yè)規(guī)劃玻墅,對自己的規(guī)劃負(fù)責(zé)并為之努力。

關(guān)于項目經(jīng)驗

LZ在網(wǎng)上經(jīng)匙咴剑看到一些別的朋友有提出項目經(jīng)驗的問題椭豫,依照LZ面試的感覺來說,面試主要看幾點:項目經(jīng)驗+基本技術(shù)+個人潛力(也就是值不值得培養(yǎng))旨指。

關(guān)于項目經(jīng)驗赏酥,我認(rèn)為并發(fā)編程網(wǎng)的創(chuàng)始人方騰飛老師講的一段話非常好:

介紹產(chǎn)品時面試官會考察應(yīng)聘者的溝通能力和思考能力,我們大部分情況都是做產(chǎn)品的一個功能或一個模塊谆构,但是即使是這樣裸扶,自己有沒有把整個系統(tǒng)架構(gòu)或產(chǎn)品搞清楚,并能介紹清楚搬素,為什么做這個系統(tǒng)呵晨?這個系統(tǒng)的價值是什么?這個系統(tǒng)有哪些功能熬尺?優(yōu)缺點有哪些摸屠?如果讓你重新設(shè)計這個系統(tǒng)你會如何設(shè)計?

我覺得這就已經(jīng)足以概括了粱哼。也許你僅僅工作一年季二,也許你做的是項目中微不足道的模塊,當(dāng)然這些一定是你的劣勢且無法改變揭措,但是如何彌補這個劣勢胯舷,從方老師的話中我總結(jié)幾點:

1、明確你的項目到底是做什么的绊含,有哪些功能

2桑嘶、明確你的項目的整體架構(gòu),在面試的時候能夠清楚地畫給面試官看并且清楚地指出從哪里調(diào)用到哪里躬充、使用什么方式調(diào)用

3逃顶、明確你的模塊在整個項目中所處的位置及作用

4讨便、明確你的模塊用到了哪些技術(shù),更好一些的可以再了解一下整個項目用到了哪些技術(shù)

在你無法改變自己的工作年限口蝠、自己的不那么有說服力的項目經(jīng)驗的情況下(這一定是扣分項)器钟,可以通過這種方式來一定程度上地彌補并且增進面試官對你的好感度。

補充一點妙蔗,在面試中聊你的項目的時候傲霸,有一個問題90%是繞不過的:談一下你在項目中解決過的比較復(fù)雜的問題。這需要在工作中不斷去發(fā)現(xiàn)和探索眉反,不需要多昙啄,在你自己目前的項目中只要你找到一兩個能說的問題就行。一個小技巧是寸五,即使問題不是你解決的而是別人解決的梳凛,但是你把這個問題弄懂、搞透了梳杏,在面試的時候你一樣可以把這個問題當(dāng)作是你自己解決的來說----畢竟韧拒,誰來管這個問題當(dāng)時到底是不是你解決的呢?

關(guān)于專業(yè)技能

寫完項目接著寫寫一名3年工作經(jīng)驗的Java程序員應(yīng)該具備的技能十性,這可能是Java程序員們比較關(guān)心的內(nèi)容叛溢。我這里要說明一下,以下列舉的內(nèi)容不是都要會的東西----但是如果你掌握得越多劲适,最終能得到的評價楷掉、拿到的薪水勢必也越高。

1霞势、基本語法

這包括static烹植、final、transient等關(guān)鍵字的作用愕贡,foreach循環(huán)的原理等等草雕。今天面試我問你static關(guān)鍵字有哪些作用,如果你答出static修飾變量固以、修飾方法我會認(rèn)為你合格促绵,答出靜態(tài)塊,我會認(rèn)為你不錯嘴纺,答出靜態(tài)內(nèi)部類我會認(rèn)為你很好,答出靜態(tài)導(dǎo)包我會對你很滿意浓冒,因為能看出你非常熱衷研究技術(shù)栽渴。

最深入的一次,LZ記得面試官直接問到了我volatile關(guān)鍵字的底層實現(xiàn)原理(順便插一句稳懒,面試和被面試本身就是相對的闲擦,面試官能問這個問題同時也讓面試者感覺到面試官也是一個喜愛研究技術(shù)的人慢味,增加了面試者對公司的好感,LZ最終選擇的就是問了這個問題的公司)墅冷,不要覺得這太吹毛求疵了----越簡單的問題越能看出一個人的水平纯路,別人對你技術(shù)的考量絕大多數(shù)都是以深度****優(yōu)先、廣度次之為標(biāo)準(zhǔn)的寞忿,切記驰唬。

2、集合

非常重要腔彰,也是必問的內(nèi)容叫编。基本上就是List霹抛、Map搓逾、Set,問的是各種實現(xiàn)類的底層實現(xiàn)原理杯拐,實現(xiàn)類的優(yōu)缺點霞篡。

集合要掌握的是ArrayList、LinkedList端逼、Hashtable朗兵、HashMap、ConcurrentHashMap裳食、HashSet的實現(xiàn)原理矛市,能流利作答,當(dāng)然能掌握CopyOnWrite容器和Queue是再好不過的了诲祸。另外多說一句浊吏,ConcurrentHashMap的問題在面試中問得特別多,大概是因為這個類可以衍生出非常多的問題救氯,關(guān)于ConcurrentHashMap找田,我給網(wǎng)友朋友們提供三點回答或者是研究方向:

(1)ConcurrentHashMap的鎖分段技術(shù)

(2)ConcurrentHashMap的讀是否要加鎖,為什么

(3)ConcurrentHashMap的迭代器是強一致性的迭代器還是弱一致性的迭代器

3着憨、設(shè)計模式

本來以為蠻重要的一塊內(nèi)容墩衙,結(jié)果只在阿里巴巴B2B事業(yè)部面試的時候被問了一次,當(dāng)時問的是裝飾器模式甲抖。

當(dāng)然咱們不能這么功利漆改,為了面試而學(xué)習(xí),設(shè)計模式在工作中還是非常重要准谚、非常有用的挫剑,23種設(shè)計模式中重點研究常用的十來種就可以了,面試中關(guān)于設(shè)計模式的問答主要是三個方向:

(1)你的項目中用到了哪些設(shè)計模式柱衔,如何使用

(2)知道常用設(shè)計模式的優(yōu)缺點

(3)能畫出常用設(shè)計模式的UML圖

4樊破、多線程

這也是必問的一塊了愉棱。因為三年工作經(jīng)驗,所以基本上不會再問你怎么實現(xiàn)多線程了哲戚,會問得深入一些比如說Thread和Runnable的區(qū)別和聯(lián)系奔滑、多次start一個線程會怎么樣、線程有哪些狀態(tài)顺少。當(dāng)然這只是最基本的朋其,出乎意料地,幾次面試幾乎都被同時問到了一個問題祈纯,問法不盡相同令宿,總結(jié)起來是這么一個意思:

假如有Thread1、Thread2腕窥、Thread3粒没、Thread4四條線程分別統(tǒng)計C、D簇爆、E癞松、F四個盤的大小,所有線程都統(tǒng)計完畢交給Thread5線程去做匯總入蛆,應(yīng)當(dāng)如何實現(xiàn)响蓉?

聰明的網(wǎng)友們對這個問題是否有答案呢?不難哨毁,java.util.concurrent下就有現(xiàn)成的類可以使用枫甲。

另外,線程池也是比較常問的一塊扼褪,常用的線程池有幾種想幻?這幾種線程池之間有什么區(qū)別和聯(lián)系?線程池的實現(xiàn)原理是怎么樣的话浇?實際一些的脏毯,會給你一些具體的場景,讓你回答這種場景該使用什么樣的線程池比較合適幔崖。

最后食店,雖然這次面試問得不多,但是多線程同步赏寇、鎖這塊也是重點吉嫩。synchronized和ReentrantLock的區(qū)別、synchronized鎖普通方法和鎖靜態(tài)方法嗅定、死鎖的原理及排查方法等等率挣,關(guān)于多線程,我在之前有些過文章總結(jié)過多線程的40個問題露戒,可以參看40個Java多線程問題總結(jié)椒功。

5、IO

再次補充IO的內(nèi)容智什,之前忘了寫了动漾。

IO分為File IO和Socket IO,F(xiàn)ile IO基本上是不會問的荠锭,問也問不出什么來旱眯,平時會用就好了,另外記得File IO都是阻塞IO证九。

Socket IO是比較重要的一塊删豺,要搞懂的是阻塞/非阻塞的區(qū)別、同步/異步的區(qū)別愧怜,借此理解阻塞IO呀页、非阻塞IO、多路復(fù)用IO拥坛、異步IO這四種IO模型蓬蝶,Socket IO如何和這四種模型相關(guān)聯(lián)。這是基本一些的猜惋,深入一些的話丸氛,就會問NIO的原理、NIO屬于哪種IO模型著摔、NIO的三大組成等等缓窜,這有些難,當(dāng)時我也是研究了很久才搞懂NIO谍咆。提一句禾锤,NIO并不是嚴(yán)格意義上的非阻塞IO而應(yīng)該屬于多路復(fù)用IO,面試回答的時候要注意這個細(xì)節(jié)卧波,講到NIO會阻塞在Selector的select方法上會增加面試官對你的好感时肿。

如果用過Netty,可能會問一些Netty的東西港粱,畢竟這個框架基本屬于當(dāng)前最好的NIO框架了(Mina其實也不錯螃成,不過總體來說還是比不上Netty的),大多數(shù)互聯(lián)網(wǎng)公司也都在用Netty查坪。

6寸宏、JDK源碼

要想拿高工資,JDK源碼不可不讀偿曙。上面的內(nèi)容可能還和具體場景聯(lián)系起來氮凝,JDK源碼就是實打?qū)嵉乜茨闫綍r是不是愛鉆研了。LZ面試過程中被問了不少JDK源碼的問題望忆,其中最刁鉆的一個問了LZ罩阵,String的hashCode()方法是怎么實現(xiàn)的竿秆,幸好LZ平時String源代碼看得多,答了個大概稿壁。JDK源碼其實沒什么好總結(jié)的幽钢,純粹看個人,總結(jié)一下比較重要的源碼:

(1)List傅是、Map匪燕、Set實現(xiàn)類的源代碼

(2)ReentrantLock吹缔、AQS的源代碼

(3)AtomicInteger的實現(xiàn)原理捐寥,主要能說清楚CAS機制并且AtomicInteger是如何利用CAS機制實現(xiàn)的

(4)線程池的實現(xiàn)原理

(5)Object類中的方法以及每個方法的作用

這些其實要求蠻高的,LZ去年一整年基本把JDK中重要類的源代碼研究了個遍囊榜,真的花費時間书闸、花費精力尼变,當(dāng)然回頭看,是值得的----不僅僅是為了應(yīng)付面試梗劫。

7享甸、框架

老生常談,面試必問的東西梳侨。一般來說會問你一下你們項目中使用的框架蛉威,然后給你一些場景問你用框架怎么做,比如我想要在Spring初始化bean的時候做一些事情該怎么做走哺、想要在bean銷毀的時候做一些事情該怎么做蚯嫌、MyBatis中$和#的區(qū)別等等,這些都比較實際了丙躏,平時積累得好择示、有多學(xué)習(xí)框架的使用細(xì)節(jié)自然都不成問題。

如果上面你的問題答得好晒旅,面試官往往會深入地問一些框架的實現(xiàn)原理栅盲。問得最多的就是Spring AOP的實現(xiàn)原理,當(dāng)然這個很簡單啦废恋,兩句話就搞定的的事兒谈秫,即使你不會準(zhǔn)備一下就好了。LZ遇到的最變態(tài)的是讓LZ畫一下Spring的Bean工廠實現(xiàn)的UML圖鱼鼓,當(dāng)然面對這樣一個有深度的問題拟烫,LZ是絕對答不出來的/(ㄒoㄒ)/~~

8、數(shù)據(jù)庫

數(shù)據(jù)庫十有八九也都會問到迄本。一些基本的像union和union all的區(qū)別硕淑、left join、幾種索引及其區(qū)別就不談了,比較重要的就是數(shù)據(jù)庫性能的優(yōu)化置媳,如果對于數(shù)據(jù)庫的性能優(yōu)化一竅不通于樟,那么有時間,還是建議你在面試前花一兩天專門把SQL基礎(chǔ)和SQL優(yōu)化的內(nèi)容準(zhǔn)備一下拇囊。

不過數(shù)據(jù)庫倒是不用擔(dān)心隔披,一家公司往往有很多部門,如果你對數(shù)據(jù)庫不熟悉而基本技術(shù)又非常好寂拆,九成都是會要你的,估計會先把你放到對數(shù)據(jù)庫使用不是要求非常高的部門鍛煉一下抓韩。

9纠永、數(shù)據(jù)結(jié)構(gòu)和算法分析

數(shù)據(jù)結(jié)構(gòu)和算法分析,對于一名程序員來說谒拴,會比不會好而且在工作中絕對能派上用場尝江。數(shù)組、鏈表是基礎(chǔ)英上,棧和隊列深入一些但也不難炭序,樹挺重要的,比較重要的樹AVL樹苍日、紅黑樹惭聂,可以不了解它們的具體實現(xiàn),但是要知道什么是二叉查找樹相恃、什么是平衡樹辜纲,AVL樹和紅黑樹的區(qū)別。記得某次面試拦耐,某個面試官和我聊到了數(shù)據(jù)庫的索引耕腾,他問我:

你知道索引使用的是哪種數(shù)據(jù)結(jié)構(gòu)實現(xiàn)嗎?

LZ答到用的Hash表吧杀糯,答錯扫俺。他又問,你知道為什么要使用樹嗎固翰?LZ答到因為Hash表可能會出現(xiàn)比較多的沖突狼纬,在千萬甚至是上億級別的數(shù)據(jù)面前,會大大增加查找的時間復(fù)雜度倦挂。而樹比較穩(wěn)定畸颅,基本保證最多二三十次就能找到想要的數(shù)據(jù),對方說不完全對方援,最后我們還是交流了一下這個問題没炒,我也明白了為什么要使用樹,這里不說,網(wǎng)友朋友們覺得索引為什么要使用樹來實現(xiàn)呢送火?

至于算法分析拳话,不會、不想研究就算了种吸,記得某次面試對方問我弃衍,Collections.sort方法使用的是哪種排序方法,額坚俗,吐血三升镜盯。當(dāng)然為了顯示LZ的博學(xué),對算法分析也有一定的研究(⊙﹏⊙)b猖败,LZ還是硬著頭皮說了一句可能是冒泡排序吧速缆。當(dāng)然答案肯定不是,有興趣的網(wǎng)友朋友們可以去看一下Collections.sort方法的源代碼恩闻,用的是一種叫做TimSort的排序法艺糜,也就是增強型的歸并排序法。

10幢尚、Java虛擬機

出乎LZ的意料破停,Java虛擬機應(yīng)該是很重要的一塊內(nèi)容,結(jié)果在這幾家公司中被問到的概率幾乎為0尉剩。要知道真慢,LZ去年可是花了大量的時間去研究Java虛擬機的,光周志明老師的《深入理解Java虛擬機:JVM高級特性與最佳實踐》边涕,LZ就讀了不下五遍晤碘。

言歸正傳,雖然Java虛擬機沒問到功蜓,但我覺得還是有必要研究的园爷,LZ就簡單地列一個提綱吧,談?wù)凧ava虛擬機中比較重要的內(nèi)容:

(1)Java虛擬機的內(nèi)存布局

(2)GC算法及幾種垃圾收集器

(3)類加載機制式撼,也就是雙親委派模型

(4)Java內(nèi)存模型

(5)happens-before規(guī)則

(6)volatile關(guān)鍵字使用規(guī)則

也許面試無用童社,但在走向大牛的路上,不可不會著隆。

11扰楼、Web方面的一些問題

Java主要面向Web端,因此Web的一些問題也是必問的美浦。LZ碰到過問得最多的兩個問題是:

談?wù)劮植际絊ession的幾種實現(xiàn)方式

常用的四種能答出來自然是讓面試官非常滿意的弦赖,另外一個常問的問題是:

講一下Session和Cookie的區(qū)別和聯(lián)系以及Session的實現(xiàn)原理

這兩個問題之外,web.xml里面的內(nèi)容是重點浦辨,F(xiàn)ilter蹬竖、Servlet、Listener,不說對它們的實現(xiàn)原理一清二楚吧币厕,至少能對它們的使用知根知底列另。另外,一些細(xì)節(jié)的方面比如get/post的區(qū)別旦装、forward/重定向的區(qū)別页衙、HTTPS的實現(xiàn)原理也都可能會被考察到。

噢阴绢,想起來了店乐,一致性Hash算法貌似也被問到了幾次,這個LZ以前專門深入研究過并且寫了兩篇博文呻袭,因此問到這個問題LZ自然是答得毫不費力响巢。文章是MemCache超詳細(xì)解讀和對一致性Hash算法,Java代碼實現(xiàn)的深入研究棒妨,特別說明,LZ真的不是在為自已以前寫的文章打廣告啊啊啊啊啊啊含长。

最后券腔,如果有興趣有時間,建議學(xué)習(xí)拘泞、研究一下SOA和RPC纷纫,面向服務(wù)體系,大型分布式架構(gòu)必備陪腌,救命良方辱魁、包治百病、屢試不爽诗鸭。

關(guān)于HR面試

如果你過五關(guān)斬六將染簇,成功地通過了所有的技術(shù)面,那么恭喜你强岸,你離升職加薪锻弓、出任CEO、迎娶白富美蝌箍、走向人生巔峰又進了一步青灼。但是還沒有到談薪資待遇的時候,最后還有一個考驗:HR面試妓盲≡硬Γ基本所有的大公司都有這一輪的面試,不要小看HR面試悯衬,很多公司的HR對于面試者都有一票否決權(quán)的----即使前面的面試對你的評價再高弹沽。

所以,這輪的面試也必須重視起來,HR面試主要問的是幾點:

1贷币、簡歷中寫的過去工作經(jīng)歷的離職原因

2击胜、當(dāng)前公司薪資待遇

3、期望能到怎樣的一家公司

4役纹、個人未來的發(fā)展方向

我專門提一下第2點偶摔。可能有人比較排斥也不想說這個促脉,我個人倒是持開放狀態(tài)辰斋,問了就說了,當(dāng)然一些的夸大還是必要的瘸味,當(dāng)前公司薪資待遇多報個一千塊錢完全沒問題(畢竟是一家互聯(lián)網(wǎng)公司總多多少少有些補貼啊什么的嘛)宫仗。因為這和你在新公司能拿到的薪水關(guān)系不大,新公司能拿到的薪水的決定因素是整個公司的薪資情況以及根據(jù)你的面試情況在公司的定位旁仿,都是有固定的薪資范圍的藕夫。HR問這個主要也就是心里有個數(shù)并且看你是否誠信----有些公司入職時會要求你提供最近一家單位的銀行流水號。

HR面試就說到這里了枯冈,總結(jié)起來其實就是四個字:滴水不漏毅贮。整個面試過程態(tài)度積極向上,不要有任何悲觀消極的態(tài)度(尤其在談到以前公司情況的時候尘奏,即使有再多的不滿)滩褥,就不會有問題。

關(guān)于面試心態(tài)

這個嘛炫加,LZ其實在公司也面試過幾個人瑰煎,一半以上的面試者回答問題的時候都屬于那種雙腿發(fā)抖、聲音顫抖的類型俗孝。在LZ看來這大可不必并且這還是扣分項酒甸,回答問題的時候最最基本的兩個要求:

1、不緊不慢赋铝,平心靜氣

2烘挫、條理清晰

表達(dá)能力絕對是面試的時候重要的考察項目。咱們做的是程序員這一行柬甥,講究的是團隊協(xié)作饮六,不是寫作、畫畫苛蒲,一支筆卤橄、一個人就行了,一個表達(dá)能力不行的程序員臂外,要來又有什么用呢窟扑?

除此之外喇颁,就是保持良好的心態(tài)。古語說得好嚎货,只要功夫深橘霎,鐵杵磨成針,面試的成功與否殖属,在于平時的積累姐叁,臨時抱抱佛腳,看兩道面試題是沒有用的洗显,只要平時足夠努力外潜,成功是水到渠成的事情,平時不怎么研究技術(shù)的挠唆,那也就是個聽天由命的事情处窥,只要充分地展示平時自己的所學(xué)就可以了。

因此在我看來玄组,不要把面試當(dāng)作面試滔驾,當(dāng)做一次技術(shù)交流,把面試的心態(tài)從我要找到一份工作轉(zhuǎn)變?yōu)槲乙ㄟ^面試去發(fā)現(xiàn)不足俄讹、提升自己嵌灰,這樣就會平和多了,即使失敗也不會有太多失望的感覺颅悉。

另外,如果平時自己熱衷于研究技術(shù)的朋友迁匠,真的要有自信剩瓶,不要覺得別人面試你別人就比你厲害。面試官未必比你優(yōu)秀城丧,他問的問題往往都是他平時研究得比較多的問題延曙,你一樣有很多自己的研究面試官未必知道。

關(guān)于Java

網(wǎng)上惩龊澹看到一種說法:Java比較簡單枝缔。某種程度上這會打擊Java程序員的信心----原來咱們平時用的是這種小兒科的玩意兒啊,在我看來這種想法大可不必蚊惯,這一部分我來講講對于這個話題的看法愿卸。

這種說法有些片面,得分開兩部分來看截型,我用四個自總結(jié)一下就是:易學(xué)難精趴荸。

1、易學(xué)部分

Java易學(xué)我認(rèn)為有兩部分的原因:

(1)很多培訓(xùn)公司包括大四的學(xué)生找工作都會學(xué)習(xí)Java宦焦,絕大多數(shù)是因為易學(xué)发钝。Java從C/C++發(fā)展而來顿涣,感謝前人的智慧,它消除了C/C++中最復(fù)雜和讓人困惑的語法酝豪、它消除了平臺的差異性涛碑、它不需要用戶手動釋放內(nèi)存空間、它避免了Java程序員和本地語言的交互孵淘,讓程序員只需要專注于語法層面和應(yīng)用層面蒲障。

(2)Java作為一門面向?qū)ο蟮恼Z言,在企業(yè)級開發(fā)中體現(xiàn)出了它無與倫比的特性夺英,整個開發(fā)流程比較固定化晌涕、模塊化,需求分析起來也相對容易痛悯。我舉個自己以前的例子吧余黎,我在大一學(xué)習(xí)C語言的時候,用C語言寫了一個圖書管理系統(tǒng)寫了2000行+的代碼载萌,大四學(xué)了C++之后惧财,用面向?qū)ο蟮恼Z言C++取代面向過程的語言C語言重新寫了一個功能相似的圖書管理系統(tǒng),只寫了1100行的樣子扭仁,這就是面向?qū)ο蟮膬?yōu)勢垮衷。

2、難精部分

接著咱們聊聊難精的部分乖坠。

Java語言的設(shè)計者幫助Java程序員做了這么多事情搀突,這有利也有弊。有利的部分前面已經(jīng)說過了熊泵,讓Java易學(xué)仰迁,不過有弊的部分同樣明顯。假如在應(yīng)用運行過程中遇到了語法層面和應(yīng)用層面之外的錯誤顽分,應(yīng)當(dāng)如何處理徐许?比如線上環(huán)境出現(xiàn)內(nèi)存溢出怎么辦?GC時間過長怎么辦卒蘸?IO長時間沒反應(yīng)怎么辦雌隅?方法拋出莫名其妙的異常怎么辦?

凡此種種缸沃,絕不是一名只會寫幾個if...else...的Java程序員就可以解決的恰起,這需要大量的經(jīng)歷、大量的實踐趾牧、大量對Java底層實現(xiàn)細(xì)節(jié)的研究村缸,而這往往是最難、最考驗Java程序員的部分武氓,一些人根本就不想往深去研究梯皿,另外一些人研究了一點點就研究不下去了仇箱。

Java為什么難精?就是這個原因东羹。除非你水平特別高剂桥,否則五年工作經(jīng)驗以下的Java程序員在簡歷上寫"精通Java"絕對是一件非常愚蠢的事情。

結(jié)語

文章寫到這里属提,感覺有點像雞湯文了权逗,那就以最后的雞湯作為結(jié)尾吧。

在以前博客園的一篇文章中冤议,講到了奔三程序員的困惑斟薇,大致說的是三十歲之后程序員要轉(zhuǎn)行之類的云云,LZ在博文中留下了如下的評論:

就以這段話自勉恕酸、共勉吧堪滨。越努力、越幸運蕊温,如果你不是官二代袱箱、富二代、紅二代义矛,那么請記追⒈省:勤奮才是改變你命運的唯一捷徑

摘自 五月的倉頡

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凉翻,一起剝皮案震驚了整個濱河市了讨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌制轰,老刑警劉巖前计,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異艇挨,居然都是意外死亡,警方通過查閱死者的電腦和手機韭赘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門缩滨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人泉瞻,你說我怎么就攤上這事脉漏。” “怎么了袖牙?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵侧巨,是天一觀的道長。 經(jīng)常有香客問我鞭达,道長司忱,這世上最難降的妖魔是什么皇忿? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮坦仍,結(jié)果婚禮上鳍烁,老公的妹妹穿的比我還像新娘。我一直安慰自己繁扎,他們只是感情好幔荒,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著梳玫,像睡著了一般爹梁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上提澎,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天姚垃,我揣著相機與錄音,去河邊找鬼虱朵。 笑死莉炉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的碴犬。 我是一名探鬼主播絮宁,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼服协!你這毒婦竟也來了绍昂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤偿荷,失蹤者是張志新(化名)和其女友劉穎窘游,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體跳纳,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡忍饰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了寺庄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艾蓝。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖斗塘,靈堂內(nèi)的尸體忽然破棺而出赢织,到底是詐尸還是另有隱情,我是刑警寧澤馍盟,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布于置,位于F島的核電站,受9級特大地震影響贞岭,放射性物質(zhì)發(fā)生泄漏八毯。R本人自食惡果不足惜搓侄,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宪彩。 院中可真熱鬧休讳,春花似錦、人聲如沸尿孔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽活合。三九已至雏婶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間白指,已是汗流浹背留晚。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留告嘲,地道東北人错维。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像橄唬,于是被迫代替她去往敵國和親赋焕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容