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