最近又要做實驗又要準備面試,有點亂,所以做個計劃。
一共三條線:坦克線,輔助線,法師線。
坦克線——基礎
- 數據結構
- 算法
- 面向對象
- JVM
- 並行編程
- 其他
《程序員面試金典》
數據結構 | 算法 | 概念 |
---|---|---|
鏈表 | 廣度優先搜索 | 位操作 |
二叉樹 | 深度優先搜索 | 單例設計模式 |
單詞查找樹 | 二分查找 | 工廠設計模式 |
棧 | 歸併排序 | 內存(棧和堆) |
隊列 | 快速排序 | 遞歸 |
向量/數組/列表 | 樹的插入/查找等 | O時間 |
散列表 | KMP算法 |
掌握具體實現(數據結構和算法)、用法、應用場景、空間和時間複雜度
輔助線——雲計算方向
畢竟企業級的架構跟學校象牙塔裏的不一樣。加上面試一般一面求廣度,二面求深度,最後打塔之前,總要打小兵練到四級以上才能攜小兵隊伍攻佔第一個塔。
In General
企業裏面根據業務會分成不同的部門,但是數據資源是共享的(真的嗎?但願吧),於是就會調用各種接口來完成各部門的業務。
Specific Example 1:阿里雲梯分佈式計算平臺整體架構
寶寶雖然主攻雲梯1,但是它周圍的模塊:調度系統,輸入:Gateway Servers, 輸出:各種業務,也都是要熟悉的。ps. 這只是某電商平臺的架構,注重的還是業務,運營分析之類,下面介紹某搜索引擎,面對大量的計算任務,有更優的解決方案。
Specific Example 2:百度分佈式計算平臺
百度很厲害的是還提出 DAG計算引擎 和 流式shuffle
參考文獻:
《從BAT看企業構建大數據體系的六層級》
崗位要求
今日頭條:
1、能快速理解業務遇到的實際問題
2、對大規模分佈式系統感興趣
3、有一定的系統設計&編碼能力,追求優雅的設計和優秀的代碼質量,高標準,快速行動
4、對存儲、計算、消息隊列、集羣管理中的一項或多項有理解、認識或經驗者優先
百度雲計算事業部
-計算機或相關專業本科以上學歷,三年以上Java語言爲主的大中型軟件開發經驗
-數據結構和算法基礎紮實,瞭解常用設計模式,熟悉J2EE相關編程和框架,如Spring Boot/Cloud,mybatis等
-對OOA\OOD\OOP等思想有深入的理解以及很強的應用能力,有較強業務需求建模能力和業務架構設計能力,熟悉UML設計
-熟悉MySQL數據庫設計和優化,有NoSQL 數據庫使用經驗者優先
-熟悉微服務架構並進行過微服務改造的優先
-熟悉**Linux操作系統和Shell腳本,**Python編程優先
-有過前端開發經驗,熟悉Bootstrap,ReactJS的優先
-熟悉Hadoop, Spark, Kafka, Flume, Scala等相關技術的優先
-有代碼潔癖,熟悉持續集成,敏捷過程的優先
-良好的溝通能力和團隊協作精神,嚴謹的工作態度與高質量意識,良好的抗壓能力
ps“熟悉”,哦,呵呵。自己差得很遠。
基礎知識
系統設計
http://blog.csdn.net/gugemichael/article/details/36688043
Linux
常用命令
- sed
- awk
- grep
Shell腳本
Kafka
官網鏈接
可以把它想象成一個佈告欄,當有很多很多數據要發佈的時候,就先push到佈告欄(對磁盤的寫入,非內存,commit操作將從內存寫入轉到磁盤)裏,然後學生們consumer根據自己感興趣的Topic,來拉取pull消息。
1. 架構
1.1 producer
1.2 佈告欄broker——分佈式存儲, broker的老大叫controller, partitions的老大叫leader.
哪裏有變化,controller就去哪裏註冊watcher, 然後更新state
1.3 consumer
1.4 傳輸
-producer delivery guarantee: at lease once
-consumer delivery guarantee: 取決於先commit還是先處理數據再commit.
兩階段提交
2. zookeeper
Hadoop
計算框架
- Mapreduce
- Spark
- DAG計算框架
資源管理
- YARN
- Mesos
存儲
綜述
1. Hive
2. HDFS
3. Hbase
4. 數據庫基礎知識
SparkCL
- GPU並行編程
- Aparapi & Opencl
- SparkCL
法師線——計算機視覺與機器學習
- 圖像處理
- 參與過的項目
未完待續