一、Java基礎
1.string、stringbulider、stringbuffer的區別
2.ArrayList、LinkedList、Vector區別
3.Class.forName和classloader的區別
Java中Class.forName和classloader都可以用來對類進行加載。
Class.forName除了將類的.class文件加載到jvm中之外,還會對類進行解釋,執行類中的static塊。這裏向大家推薦一個大數據交流圈q羣:813383827。
而classloader只將.class文件加載到jvm中,不會執行static中的內容,只有在newInstance纔會去執行static塊。
4.Java設計模式
23種設計模式。
設計模式(Design pattern):是針對設計問題的通用解決方案。
使用設計模式:可以把它應用到特定的應用中,用於解決相似的問題。
使用設計模式是爲了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。
5.mysql索引的好處以及對應的數據結構
創建索引可以大大提高系統的性能,優點:
第一,通過創建唯一性索引,可以保證數據庫表中每一行數據的唯一性。
第二,可以大大加快數據的檢索速度,這也是創建索引的最主要的原因。
第三,可以加速表和表之間的連接,特別是在實現數據的參考完整性方面特別有意義。
第四,在使用分組和排序子句進行數據檢索時,同樣可以顯著減少查詢中分組和排序的時間。
第五,通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的性能。
mysql索引的數據結構是B+樹
6.CocurrentHashMap底層結構
CocurrentHashMap是由Segment數組和HashEntry數組組成。Segment是重入鎖(ReentrantLock),作爲一個數據段競爭鎖,每個HashEntry一個鏈表結構的元素,這裏向大家推薦一個大數據交流圈q裙:894951460
利用Hash算法得到索引確定歸屬的數據段,也就是對應到在修改時需要競爭獲取的鎖。
鎖分段技術就是對數據集進行分段,每段競爭一把鎖,不同數據段的數據不存在鎖競爭,從而有效提高 高併發訪問效率。
CocurrentHashMap在get方法是無需加鎖的,因爲用到的共享變量都採用volatile關鍵字修飾,巴證共享變量在線程之間的可見性(每次讀取都先同步緩存和內存,直接從內存中獲取值,
雖然不是原子操作,但根據JAVA內存模型的happen before原則,對volatile字段的寫入操作先於讀操作,
能夠保證不會髒讀),volatile爲了讓變量提供線程之間的內存可見性,會禁止程序執行結果的重排序(導致緩存優化的效果降低)
7.ThreadLocal底層結構
8.HashMap底層結構
9.Java解決Hash衝突的四種方式
10.JVM的具體細節(內存結構、GC算法、GC工具、引用方式等)
二、數據結構與算法
1.二叉樹前序、中序、後續遍歷方式(遞歸以及非遞歸)
2.二叉樹的深度以及廣度遍歷方式
3.二叉樹遍歷情況中所有連續節點的最大的值
4.求數組所有可能的子數組
5.給定一個數,求一個有序數組的兩個數的和滿足這個數(可以拓展一下變成兩個無序的數組)
6.求一個數組的第二大值
7.大文件(不能加載進內存)的排序問題
8.快速排序、歸併排序、冒泡排序、選擇排序(複雜度分別是多少)
9.hash、HashMap、索引(b tree/ b+ tree) 時間複雜度?
hash表時間複雜度爲O(1)
HashMap在最理想的情況下,時間複雜度爲O(1)(此情況下,hash表沒有數據衝突),
否則時間複雜度爲O(n)(此情況下,主要是查詢鏈表用時)
二叉查找樹查詢的時間複雜度是O(logN)
三、大數據框架
1.hadoop
HDFS、Yarn、MapReduce原理以及執行過程,特別是MapReduce最好能結合源碼說一些
2.Flume+Kafka一個實時流採集框架
熟悉flume的工作流程,source、channel、sink、攔截器、以及自定義source、自定義sink、自定義攔截器
熟悉kafka的主要組件(broker節點、副本、partition)、kafka工作原理(kaffka生產消費模型)、kafka跟其他MQ
對比的一個情況、kafka怎麼保證三種消費狀態(at most once、at least once、at exactlt once)
結合kafka具體可能出現的網絡瓶頸、zookeeper的GC情況
3.storm
storm具體結構(spout + bolt)、storm調優具體方式、storm的如何保證高可靠、ack確認機制、storm的雪崩解決辦法、
strom計算pv、uv 、dv的具體方式(最好別採用set的方式)
4.Hbase
hbase具體架構,(架構圖),hbase讀寫過程(着重強調bulkload)、hbase的表以及rowkey設計(預防熱點問題)、hbase熱點
問題帶來的危害
5.redis
redis使用方式、redis數據結構類型、redis的bitmap結構、redis持久化、redis的淘汰機制、redis的緩存擊穿
6.spark
spark提交一個任務的執行過程(job劃分、stage劃分、task生成、資源調度、shuffle詳細過程等)、spark core的一些經典編程(spark core的二次排序,spark core的分組求top N)、spark 的優化、spark sql的堆外內存溢出情況、spark的優化(大概七八個)
四、項目具體問題
1.集羣資源情況
2.數據量
3.具體項目(以及具體項目遇到的問題,解決方案)
五、其他
1.rpc框架通信協議
2.談自己對一些具體問題的看法(包括產品設計、分析)
結語
感謝您的觀看,如有不足之處,歡迎批評指正。
獲取資料
本次給大家推薦一個免費的學習羣,裏面概括數據倉庫/源碼解析/Hadoop/Flink/Spark/Hive/hbase/Flink/kylin以及面試資源等。
對大數據開發技術感興趣的同學,歡迎加入Q羣:813383827,不管你是小白還是大牛我都歡迎,還有大牛整理的一套高效率學習路線和教程與您免費分享,同時每天更新視頻資料。
最後,祝大家早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峯!!