什麼是程式設計師?
碼農、程式猿、程式媛
使用 程式實現價值
程式=資料+演算法
軟體=程式+軟體工程
程式設計師=工程師?
程式設計師金字塔
程式設計師知識結構
面試造火箭,工作打蚊子
會什麼是你的下限,能夠會什麼是你的上限
越底層的東西越決定上限
學習慾望
杜絕 1年工作經驗重複 N年
如果自己遇到這種問題會怎麼解決,與資料中的解決方案相比優劣如何?
別人為什麼會想到這種解決方案?
自己是由於經驗欠缺還是技能點欠缺才導致沒有想到好的解決方案?
解決這類問題的根本思路是什麼樣的?
學習能力
不是懂得多,而是學得快
知其然更要知其所以然:技術以深度優先
類比現實:對現實世界的模擬
更好地接受資訊:建立自己的知識體系;閱讀並記筆記,納入知識體系
深度思考:閱讀書籍
動手實踐、頻繁練習:專案驅動型學習;主動思考
自我總結:完善知識體系;筆記、部落格、分享
持續學習:逃離舒適區;學到老,活到老
如何學習新技術
如何閱讀原始碼閱讀該技術的架構文件,瞭解其總體架構和組成
根據總體架構,將原始碼檔案以模組或者上下層級進行分類。
從未閱讀過的模組中選擇最獨立(依賴性最小)的模組程式碼讀起。
閱讀此模組的功能介紹文件。
閱讀此模組的原始碼: 執行程式,斷點除錯。
一邊閱讀一邊整理呼叫關係圖。
轉到第三步。
參考 官方文件或者經典書籍
計算機思維
馮.諾依曼體系:程式儲存,順序執行。
二進位制儲存:用位元解決問題
位運算:位運算的高效
邏輯分支:條件判斷、迴圈、迭代、遞迴
個人規劃
長期規劃:職業規劃;高瞻遠矚
短期規劃:具體技能、晉升、學習方面的規劃;優先順序排序
基礎學科
物理:電路原理;量子計算機
數學:工程優化;線性代數;微積分
英語!!:閱讀英文文獻;計算機術語
計算機組成原理
計算機的硬體組成和執行原理
馮諾依曼體系、 摩爾定律、 阿曼達定律
資料的機器表示:原碼、補碼、反碼、浮點數/定點數
指令系統:複雜指令集、簡單指令集
儲存器:分類、快取
CPU: 流水線、偽共享、快取
IO裝置:IO匯流排、DMA、中斷
計算機作業系統
遮蔽計算機硬體的中間層
作業排程: 排程策略、優先順序
程式管理:程式和執行緒、程式間通訊
儲存管理:記憶體、虛擬記憶體、檔案系統、頁、頁快取
IO管理:IO裝置讀寫操作
Linux作業系統
計算機網路
單個計算機之間的互連
TCP/IP協議棧:四層/七層
TCP連線狀態
TCP與UDP的區別
HTTP協議、RESTful規範
網路安全
如今的網際網路:IPv6、物聯網、5G
編譯原理
將程式碼轉換成機器可理解的二進位制,有助於實現DSL
詞法分析、語法分析
型別檢查
執行時環境、中間程式碼
程式碼生成、程式碼優化
資料結構和演算法
程式=資料+演算法
無論你在哪裡。技術的提高都是靠自己。現在是網際網路時代,即使你在深山,你依然與世界同步。
不要太過急功近利, 慢慢玩, 精進.
如果你覺著程式設計有趣, 成長也就不再痛苦, 祝學習愉快.