基礎(chǔ)這東西,各個(gè)公司都很看重,尤其是大公司,他們看中人的潛力,他們舍得花精力去培養(yǎng),所以基礎(chǔ)是重中之重。之前很多人問(wèn)我,項(xiàng)目經(jīng)歷少怎么辦,那就去打牢基礎(chǔ),當(dāng)你的基礎(chǔ)好的發(fā)指的時(shí)候,你的其他東西都不重要了。
基礎(chǔ)無(wú)外乎幾部分:語(yǔ)言(C/C++或java),操作系統(tǒng),TCP/IP,數(shù)據(jù)結(jié)構(gòu)與算法,再加上你所熟悉的領(lǐng)域。這里面其實(shí)有很多東西,各大面試寶典都有列舉。
J2SE基礎(chǔ)
九種基本數(shù)據(jù)類型的大小,以及他們的封裝類。
Switch能否用string做參數(shù)?
equals與==的區(qū)別。
Object有哪些公用方法?
Java的四種引用,強(qiáng)弱軟虛,用到的場(chǎng)景。
Hashcode的作用。
ArrayList、LinkedList、Vector的區(qū)別。
String、StringBuffer與StringBuilder的區(qū)別。
Map、Set、List、Queue、Stack的特點(diǎn)與用法。
HashMap和HashTable的區(qū)別。
HashMap和ConcurrentHashMap的區(qū)別,HashMap的底層源碼。
TreeMap、HashMap、LindedHashMap的區(qū)別。
Collection包結(jié)構(gòu),與Collections的區(qū)別。
try catch finally,try里有return,finally還執(zhí)行么?
Excption與Error包結(jié)構(gòu)。OOM你遇到過(guò)哪些情況,SOF你遇到過(guò)哪些情況。
Java面向?qū)ο蟮娜齻€(gè)特征與含義。
Override和Overload的含義去區(qū)別。
Interface與abstract類的區(qū)別。
Static class 與non static class的區(qū)別。
java多態(tài)的實(shí)現(xiàn)原理。
實(shí)現(xiàn)多線程的兩種方法:Thread與Runable。
線程同步的方法:sychronized、lock、reentrantLock等。
鎖的等級(jí):方法鎖、對(duì)象鎖、類鎖。
寫出生產(chǎn)者消費(fèi)者模式。
ThreadLocal的設(shè)計(jì)理念與作用。
ThreadPool用法與優(yōu)勢(shì)。
Concurrent包里的其他東西:ArrayBlockingQueue、CountDownLatch等等。
wait()和sleep()的區(qū)別。
foreach與正常for循環(huán)效率對(duì)比。
Java IO與NIO。
反射的作用于原理。
泛型常用特點(diǎn),List<String>能否轉(zhuǎn)為L(zhǎng)ist<Object>。
解析XML的幾種方式的原理與特點(diǎn):DOM、SAX、PULL。
Java與C++對(duì)比。
Java1.7與1.8新特性。
設(shè)計(jì)模式:?jiǎn)卫?、工廠、適配器、責(zé)任鏈、觀察者等等。
JNI的使用。
Java里有很多很雜的東西,有時(shí)候需要你閱讀源碼,大多數(shù)可能書里面講的不是太清楚,需要你在網(wǎng)上尋找答案。
推薦書籍:《java核心技術(shù)卷I》《Thinking in java》《java并發(fā)編程》《effictive java》《大話設(shè)計(jì)模式》
JVM
內(nèi)存模型以及分區(qū),需要詳細(xì)到每個(gè)區(qū)放什么。
堆里面的分區(qū):Eden,survival from to,老年代,各自的特點(diǎn)。
對(duì)象創(chuàng)建方法,對(duì)象的內(nèi)存分配,對(duì)象的訪問(wèn)定位。
GC的兩種判定方法:引用計(jì)數(shù)與引用鏈。
GC的三種收集方法:標(biāo)記清除、標(biāo)記整理、復(fù)制算法的原理與特點(diǎn),分別用在什么地方,如果讓你優(yōu)化收集方法,有什么思路?
GC收集器有哪些?CMS收集器與G1收集器的特點(diǎn)。
Minor GC與Full GC分別在什么時(shí)候發(fā)生?
幾種常用的內(nèi)存調(diào)試工具:jmap、jstack、jconsole。
類加載的五個(gè)過(guò)程:加載、驗(yàn)證、準(zhǔn)備、解析、初始化。
雙親委派模型:Bootstrap ClassLoader、Extension ClassLoader、ApplicationClassLoader。
分派:靜態(tài)分派與動(dòng)態(tài)分派。
JVM過(guò)去過(guò)來(lái)就問(wèn)了這么些問(wèn)題,沒(méi)怎么變,內(nèi)存模型和GC算法這塊問(wèn)得比較多
推薦書籍:《深入理解java虛擬機(jī)》
操作系統(tǒng)
進(jìn)程和線程的區(qū)別。
死鎖的必要條件,怎么處理死鎖。
Window內(nèi)存管理方式:段存儲(chǔ),頁(yè)存儲(chǔ),段頁(yè)存儲(chǔ)。
進(jìn)程的幾種狀態(tài)。
IPC幾種通信方式。
什么是虛擬內(nèi)存。
虛擬地址、邏輯地址、線性地址、物理地址的區(qū)別。
推薦書籍:《深入理解現(xiàn)代操作系統(tǒng)》
TCP/IP
OSI與TCP/IP各層的結(jié)構(gòu)與功能,都有哪些協(xié)議。
TCP與UDP的區(qū)別。
TCP報(bào)文結(jié)構(gòu)。
TCP的三次握手與四次揮手過(guò)程,各個(gè)狀態(tài)名稱與含義,TIMEWAIT的作用。
TCP擁塞控制。
TCP滑動(dòng)窗口與回退N針協(xié)議。
Http的報(bào)文結(jié)構(gòu)。
Http的狀態(tài)碼含義。
Http request的幾種類型。
Http1.1和Http1.0的區(qū)別
Http怎么處理長(zhǎng)連接。
Cookie與Session的作用于原理。
電腦上訪問(wèn)一個(gè)網(wǎng)頁(yè),整個(gè)過(guò)程是怎么樣的:DNS、HTTP、TCP、OSPF、IP、ARP。
Ping的整個(gè)過(guò)程。ICMP報(bào)文是什么。
C/S模式下使用socket通信,幾個(gè)關(guān)鍵函數(shù)。
IP地址分類。
路由器與交換機(jī)區(qū)別。
網(wǎng)絡(luò)其實(shí)大體分為兩塊,一個(gè)TCP協(xié)議,一個(gè)HTTP協(xié)議,只要把這兩塊以及相關(guān)協(xié)議搞清楚,一般問(wèn)題不大。
推薦書籍:《TCP/IP協(xié)議族》
數(shù)據(jù)結(jié)構(gòu)與算法
鏈表與數(shù)組。
隊(duì)列和棧,出棧與入棧。
鏈表的刪除、插入、反向。
字符串操作。
Hash表的hash函數(shù),沖突解決方法有哪些。
各種排序:冒泡、選擇、插入、希爾、歸并、快排、堆排、桶排、基數(shù)的原理、平均時(shí)間復(fù)雜度、最壞時(shí)間復(fù)雜度、空間復(fù)雜度、是否穩(wěn)定。
快排的partition函數(shù)與歸并的Merge函數(shù)。
對(duì)冒泡與快排的改進(jìn)。
二分查找,與變種二分查找。
二叉樹、B+樹、AVL樹、紅黑樹、哈夫曼樹。
二叉樹的前中后續(xù)遍歷:遞歸與非遞歸寫法,層序遍歷算法。
圖的BFS與DFS算法,最小生成樹prim算法與最短路徑Dijkstra算法。
KMP算法。
排列組合問(wèn)題。
動(dòng)態(tài)規(guī)劃、貪心算法、分治算法。(一般不會(huì)問(wèn)到)
大數(shù)據(jù)處理:類似10億條數(shù)據(jù)找出最大的1000個(gè)數(shù).........等等
推薦書籍:《大話數(shù)據(jù)結(jié)構(gòu)》《劍指offer》《編程之美》
其他綜合性的書籍也需要閱讀,推薦:《程序員面試筆試寶典》《程序員面試金典》。
除了基礎(chǔ)外,你還應(yīng)該對(duì)其他領(lǐng)域的知識(shí)有多少有所涉獵。對(duì)于你所熟悉的領(lǐng)域,你需要多了解一點(diǎn)新技術(shù)與科技前沿,你才能和面試官談笑風(fēng)生。
軟實(shí)力
什么是軟實(shí)力,就是你的人際交往、靈活應(yīng)變能力,在面試過(guò)程中,良好的禮節(jié)、流暢的表達(dá)、積極的交流其實(shí)都是非常重要的。很多公司可能不光看你的技術(shù)水平怎么樣,而更看重的是你這個(gè)人怎么樣的。所以在面試過(guò)程中,請(qǐng)保持誠(chéng)信、積極、樂(lè)觀、幽默,這樣更容易得到公司青睞。
很多時(shí)候我們都會(huì)遇到一個(gè)情況,就是面試官的問(wèn)題我不會(huì),這時(shí)候大多數(shù)情況下不要馬上說(shuō)我不會(huì),要懂得牽引,例如面試官問(wèn)我C++的多態(tài)原理,我不懂,但我知道java的,哪我可以向面試官解釋說(shuō)我知道java的,類似的這種可以往相關(guān)的地方遷移(但是需要注意的是一定不要不懂裝懂,被拆穿了是很尷尬的),意思就是你要盡可能的展示自己,表現(xiàn)出你的主動(dòng)性,向面試官推銷自己。
還有就是遇到智力題的時(shí)候,不要什么都不說(shuō),面試官其實(shí)不是在看你的答案,而是在看你的邏輯思維,你只要說(shuō)出你自己的見(jiàn)解,有一定的思考過(guò)程就行。
不要擔(dān)心找不到好工作,你要相信:
天道酬勤!
最后 如果你想學(xué)好JAVA這門技術(shù),也想在IT行業(yè)拿高薪,可以參加我們的訓(xùn)練營(yíng)課程,選擇最適合自己的課程學(xué)習(xí),技術(shù)大牛親授,7個(gè)月后,進(jìn)入名企拿高薪。我們的課程內(nèi)容有:Java工程化、高性能及分布式、高性能、深入淺出。高架構(gòu)。性能調(diào)優(yōu)、Spring,MyBatis,Netty源碼分析和大數(shù)據(jù)等多個(gè)知識(shí)點(diǎn)。如果你想拿高薪的,想學(xué)習(xí)的,想就業(yè)前景好的,想跟別人競(jìng)爭(zhēng)能取得優(yōu)勢(shì)的,想進(jìn)阿里面試但擔(dān)心面試不過(guò)的,你都可以來(lái),群號(hào)為:230419550
附:
加群要求
1、具有1-5工作經(jīng)驗(yàn)的,面對(duì)目前流行的技術(shù)不知從何下手,需要突破技術(shù)瓶頸的可以加。
2、在公司待久了,過(guò)得很安逸,但跳槽時(shí)面試碰壁。需要在短時(shí)間內(nèi)進(jìn)修、跳槽拿高薪的可以加。
3、如果沒(méi)有工作經(jīng)驗(yàn),但基礎(chǔ)非常扎實(shí),對(duì)java工作機(jī)制,常用設(shè)計(jì)思想,常用java開發(fā)框架掌握熟練的,可以加。
4、覺(jué)得自己很牛B,一般需求都能搞定。但是所學(xué)的知識(shí)點(diǎn)沒(méi)有系統(tǒng)化,很難在技術(shù)領(lǐng)域繼續(xù)突破的可以加。
5.阿里Java高級(jí)大牛直播講解知識(shí)點(diǎn),分享知識(shí),多年工作經(jīng)驗(yàn)的梳理和總結(jié),帶著大家全面、科學(xué)地建立自己的技術(shù)體系和技術(shù)認(rèn)知!
6.小號(hào)加群一律不給過(guò),謝謝。