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