知識點準備+數據結構與算法+面試技巧java
主要包括:計算機網絡、操做系統、關係型數據庫、非關係型數據庫、linux、編程語言、項目及實習。mysql
這一部分只要是認真準備,通常問題不會太大。linux
這個比較突出硬實力,面過的每一個公司都是須要手擼幾個算法題,因此須要儘早刷題準備。(之因此單獨列爲一項,是由於樓主就是有幾家公司死在這裏的)ios
第一點,每一次面試後認真總結,極可能下一次面試又碰上此次不會的原題(親身經歷);面試
第二點,遇到本身研究比較好的知識點,能夠引導面試官問,往底層說(可是千萬要本身有把握),這樣若是一次面試有1到2個問題能夠說的比較深刻,面試官對你的印象會很好(屢試不爽);算法
第三點,放低身段,面對面試官的嘲諷之類的(好比嫌你low、對你的研究方向一片否認),儘可能解釋,不要懟面試官,要忍得住;實在忍不住,就懟個痛快(我試過,順利掛了)。sql
第四點,自信、自信、自信。相信本身,勇敢的去面試,便是被虐。相信本身,並且面試技巧也都是在一次次被虐中成長起來的。shell
OSI七層協議、TCP/IP四層協議數據庫
各層對應的網絡設備(路由器、交換機、網關、網橋、集線器等等),各層對應的協議編程
數據鏈路層的CSMA/CD協議,筆試可能會用到
IP地址分類,子網劃分(筆試經常使用)
TCP和UDP的區別
TCP三次握手和四次揮手,爲何三次握手,爲何四次揮手
TCP精髓問題:中止等待協議、連續ARQ協議、滑動窗口、流量控制、擁塞控制(慢開始、擁塞避免、快重傳、快恢復)
從瀏覽器輸入www.baidu.com到加載出頁面發生了什麼
GET和POST區別
HTTP狀態碼,HTTP1.0和HTTP1.1區別
HTTP緩存機制(cache-control、Expires之類的一系列請求與相應報頭字段)
session和cookie的區別,禁用cookie後怎麼辦
DNS解析的過程
經常使用協議的端口
推薦:計算機網絡(謝希仁)、TCP/IP詳解、HTTP權威指南,大神能夠看一下RCF2616之類的 數據庫:
數據庫三範式及判斷、E-R圖
innodb和myisam存儲引擎的區別
索引分類(主鍵、惟一索引、全文索引、覆蓋索引等等),最左前綴原則,哪些條件沒法使用索引
B樹、B+樹區別,索引爲什麼使用B+樹
彙集索引與非彙集索引(使用非彙集索引的查詢過程)
事務的ACID(原子性、一致性、隔離性、持久性)
事務隔離級別和各自存在的問題(髒讀、不可重複讀、幻讀)和解決方式(間隙鎖及MVCC)
樂觀鎖和悲觀鎖、行鎖與表鎖、共享鎖與排他鎖(inndob如何手動加共享鎖與排他鎖)
MVCC(增長兩個版本號)及delete、update、select時的具體控制
死鎖斷定原理和具體場景
查詢緩慢和解決方式(explain、慢查詢日誌、show profile等)
drop、truncate、delete區別
查詢語句不一樣元素(where、jion、limit、group by、having等等)執行前後順序
mysql優化,讀寫分離、主從複製
數據庫崩潰時事務的恢復機制(REDO日誌和UNDO日誌)
發佈訂閱
數據淘汰機制(好幾種)
字典及漸進式rehash
RDB與AOF
爲什麼高效(內存數據庫、非阻塞IO、IO多路複用、單線程、hash表、跳錶等)
Redis的幾種數據結構
推薦:MySQL數據庫應用從入門到精通(王飛飛,雖然名字很low)、高性能Mysql、Redis設計與實現、Redis實戰
數組、鏈表(單向、雙向、雙端)、棧和隊列、二叉樹、紅黑樹、哈希表、堆(最大和最小)、圖
我的經驗:棧和隊列、哈希表、鏈表、二叉樹的題較多,圖的較少
查找:二分查找及其變形
二叉樹:前序、中序、後序遍歷,按規定方式打印,兩個節點之間操做(最近公共祖先、距離)等問題。
最大堆和最小堆:大數量級數據找最大幾個等問題、堆如何調整等問題。
圖:深度優先、廣度優先、單源最小路徑Dijkstra,任意兩點間最短路徑Floyd-Warshall,最小生成樹Prime和Kruskal
紅黑樹:特色及如何調整(基本上沒人讓你手擼紅黑樹)
棧和隊列:常常做爲算法題要用到的數據結構
八大排序:3個簡單的:冒泡、選擇、插入及其優化,5個高級的:快速排序、歸併排序、堆排序、希爾排序、桶排序(快排、歸併、堆很重要,常常手擼)
時間複雜度及空間複雜度分析
動態規劃dp:這個比較難,揹包問題以內的
推薦:數據結構C語言版(嚴蔚敏)、java數據結構和算法(Robert Lafore)、劍指offer及leetcode刷題、大神能夠看一下算法導論
經常使用命令:用戶控制、權限控制、進程控制、系統狀態查詢之類的
Linux狀態分析:CPU(top)、內存(top和free,注意buffer和cache區別)、磁盤(fdisk和df)、IO(iostat)等
grep和sed
awk(用好awk,腳本寫得好)
shell腳本
Linux目錄結構(尤爲是/proc很是重要)
linux文件系統結構和啓動流程
防火牆iptables(這個比較少)
推薦:鳥哥私房菜、視頻(馬哥的一套 http://pan.baidu.com/s/1pL3HGT1)
一個二進制文件運行出結果,操做系統作了什麼(這是一個很全面的題)
死鎖的條件及銀行家算法、資源分配圖之類的
進程間通訊方式
linux的五種IO方式(阻塞與非阻塞、同步與異步的理解)
linux的select、poll、epoll的區別
進程與線程區別、內核級線程與用戶級線程
頁面置換算法,尤爲是lru
進程調度算法
linux中斷響應機制
虛擬內存機制
推薦:現代操做系統
java面向對象(一大堆知識點)
多線程實現的幾種方式(Thread、Runnable、Callable、線程池)及各自的特色
java線程的狀態及相互轉換
線程同步的幾種方式和線程間通訊
生產者消費者模式
volatile關鍵字
J.U.C包的JDK源碼(CAS、AQS、ConcurrentHashMap、ThreadLocal、CyclicBarrier、CountDownLatch、Atom、阻塞隊列等等)
String、StringBuffer、StringBuilder
異常處理機制
集合框架底層JDK實現(HashMap和Hashtable區別、Set、List等等)
IO(writer、reader、InputStream、OutputStream)、NIO等
四種引用及其區別和使用場景
對象序列化與反序列化
lambda表達式
jvm虛擬機:內存分區、垃圾回收(三種垃圾回收算法、新生代老生代、垃圾回收器、G1優勢等等)、內存溢出、內存泄漏排查、JVM調優、類加載機制、雙親委派、內存模型及線程、鎖優化
設計模式:幾種單例模式實現(手擼)、其餘幾種常見的設計模式(JDK中具體點)、項目中怎麼用了 語言這塊知識點太多了,基礎要紮實。
推薦:設計模式那點事、瘋狂java講義、java併發編程實戰、深刻理解java虛擬機、java編程思想
hadoop:mapreduce、HDFS、yarn等等(推薦:Hadoop權威指南)
hive:很經常使用的處理工具(推薦:Hive編程指南) 消息隊列(kafka之類的)、遠程過程調用RPC之類,
寫一些Demo本身試一下,不要被問直接就不知道 負載均衡調度(一致性哈希常常問)等 固然,還有不少其餘知識。
必定要把本身作的東西從頭至尾順一遍。 難點在哪裏,怎麼解決的,學到了什麼,技術亮點在哪裏,這些事常常問的。 常問的問題,像併發量多少,怎麼優化這些也要早測試早做準備。 千萬不要到時候再想,這會讓面試官感受你對本身作的都不熟悉。最好能夠本身畫一下架構圖,講的時候思路更清晰。