本文將從學(xué)習(xí)方面手把手的告訴你,LZ作為一個(gè)非科班畢業(yè),出身于三流大學(xué)的草根,是如何憑借自己的努力,進(jìn)入到國內(nèi)互聯(lián)網(wǎng)公司的。
由于LZ是Java后端出身,所以接下來的內(nèi)容,會(huì)與Java后端息息相關(guān),非Java后端的同學(xué)可以適當(dāng)參考,但切勿照搬。
本篇既然咱們是要談如何進(jìn)入BAT,那么咱們就從面試的角度來談學(xué)習(xí)這件事,LZ會(huì)談?wù)劵ヂ?lián)網(wǎng)公司對(duì)于Java后端程序員的要求,相應(yīng)的,也會(huì)談?wù)勅绾芜_(dá)到這樣的要求。
為了簡單起見,LZ將這些要求分為三個(gè)層次,分別為基本要求、可選要求以及加分要求,接下來,咱們就一個(gè)一個(gè)的來談一談。
一、基本要求
基本要求就是指,你必須要學(xué)會(huì)的知識(shí),而且這里面大部分內(nèi)容,在面試?yán)锍霈F(xiàn)的概率都是的。因此,這部分內(nèi)容你沒有選擇,只能選擇啃下它,你可以花一年,也可以花十年,或者帶到棺材里學(xué)習(xí)也可以。
1)語言的基礎(chǔ)部分:
基本要求的個(gè),當(dāng)然是語言的基礎(chǔ)部分?;A(chǔ)部分其實(shí)就是語法以及一些關(guān)鍵字的作用,像一些if/else、for循環(huán)這類基礎(chǔ)的語法,以及一些new、class、public這類的基礎(chǔ)關(guān)鍵字,大部分情況下面試問的是比較少的,因?yàn)檫@部分內(nèi)容,只要你寫過幾年Java,基本上都沒有什么問題。
那么基礎(chǔ)部分的重點(diǎn),其實(shí)主要就是static、final、transient、volatile這一類的關(guān)鍵字,以及內(nèi)部類、泛型這一類的高階語法。
說到static,首先要記住的重要的一點(diǎn)就是,類屬性中被static所引用的變量,會(huì)被作為GC的root根節(jié)點(diǎn)。作為根節(jié)點(diǎn)就意味著,這一類變量是基本上不會(huì)被回收的。因此,static很容易引入內(nèi)存泄漏的風(fēng)險(xiǎn)。
如果一個(gè)面試官讓你解釋static關(guān)鍵字,你告訴他static可以修飾屬性、方法和內(nèi)部類,以及修飾之后又有什么效果的話,那么面試官基本上不會(huì)記住你這個(gè)回答,整個(gè)印象就是平庸。
但是如果你說完以后,補(bǔ)充一下說道,你曾經(jīng)遇到過一個(gè)內(nèi)存泄漏的問題,就是因?yàn)閟tatic修飾的一個(gè)Map類型的變量導(dǎo)致的,后排查了堆棧信息找到了問題的所在,并且解決了這個(gè)問題。那么,面試官這個(gè)時(shí)候內(nèi)心中對(duì)你的印象,就會(huì)不自然的提升幾分。
而且,對(duì)于static,更深入的理解是,static會(huì)將所引用的屬性、方法以及內(nèi)部類,與類直接產(chǎn)生引用關(guān)系,而非與類的實(shí)例。這就是為什么,你可以使用類名.屬性、類名.方法以及類名.內(nèi)部類名,來直接引用一個(gè)被static所修飾的屬性、方法或者內(nèi)部類。
如果你沒有用static修飾,那么你就必須使用實(shí)例才能引用這些方法、屬性或者是內(nèi)部類,典型的就是內(nèi)部類。相信很多同學(xué)都好奇過,為什么一個(gè)沒有被static修飾的內(nèi)部類,必須要這么聲明。
未完待續(xù)。。。。。。