技術人的職場:程序員如何從菜鳥到大牛( 二 )


 
B.后端程序員
 
1. 操作系統基礎知識 文件系統、任務調度、內存管理 , 進程與線程、進程間通信以及同步 , 鎖等知識必須要有 。
 
2. 基礎語言 一般要求有C、C++基礎 , 精通如但不限于C/C++/PHP/Java/Go等至少其中一種后端語言
 
3. 扎實的網絡協議知識 TCP/UDP、HTTP、HTTPS協議 , Linux網絡編程
 
4. 存儲數據庫知識 包含數據庫原理 , sql語句的使用、優化 。 積累搭建mysql和運維mysql的經驗 。
 
5. 數據結構知識 不要求能寫出RB樹的算法 , 但對常用的排序要熟悉 。 熟悉常用軟件設計模式
 
6. 熟識常用的框架與組件nginx,mysql,redis等
 
7. 實際的項目經驗 能分析出系統各個模塊的關系 , 為什么這樣設計 。 系統瓶頸在哪里 , 如何優化性能
 
C.前端程序員
 
主要分為兩大部分:前端代碼技能部分(html、css和javascript) , 前端架構部分(構建工具 , 新生框架 , 優化以及安全性) 。
如果把一張網頁比喻為一棟樓房 , 那么html相當于搭建一個主體結構 , css相當于來做粉刷 , javascript發揮的作用就是類似于水泥的粘合劑 。 其中任何一個環節出現問題 , 都會可能導致房屋出現問題 。
 
1.html基礎 , 如各種Element的含義和用法 。
【技術人的職場:程序員如何從菜鳥到大牛】 
2.dom結構與事件模型 。
 
3.css樣式部分 熟悉最基礎的布局方式、常用定位的作用和區別、css的一些常用的選擇器以及選擇器的權重 。 另外就是css的浮動部分 , 掌握浮動的應用場景和消除浮動的常用方法 。 是否熟悉響應式布局這塊 , 對最新的css3的知識掌握熟練程度以及移動端的經驗 , 屬于面試之中比較看重的一塊 。 css3**現了很多的新的瀏覽器特性和效果 , 使用熟練程度之余還要知道它的兼容性 。
 
4.javascript基礎 理解閉包的概念和用途 , 原型鏈和繼承的概念 。 網絡基本知識像HTTP協議 , Get/Post的區別與聯系 。
 
5.前端與后端交互的數據格式Xml/Json等 進階部分包括得熟悉使用javascript的流行mvvm框架(vue,angular,avalon等等)其中的一種到兩種 , 構建工具(webpack,fis,gulp等等) , 以及系統后期的一個優化過程(包括靜態資源壓縮 , 合并 , 按需加載 , 分流)前端安全這塊的知識 , 如跨域機制 , CSRF/XSS 漏洞等知識以及如何防范 。
 
D.客戶端程序員
 
首先要對系統如何啟動App , App如何運行有一個整體的了解 , 這里就包含App啟動過程 , 沙盒機制的目的 , 實現原理等 。
 
1. 操作系統中進程與線程的知識點 , App怎樣處理圖片與外部網絡資源 , 也要有一個整體的認識 。
 
2. App界面布局和交互的知識 。
 
3. 語言基礎包含OC , Swift , 至少精通其中一種 。 對象的生命周期 , 面向對象思想 。
 
4. App界面知識點 , 自動布局 , 自開發組件 。
 
5. UIView, UIControl, UIScrollView, UIViewController 等核心類型的概念和關系 。
 
6. App屏幕旋轉及屏幕適配 , 觸摸、手勢、加速計的使用 。
 
7.網絡協議HTTP/TCP等基礎知識 , Socket/CFNetwork/NSURLConnection等類的使用

8.代碼管理如Git/Svn的使用 , 開發測試流程 , Bug管理 , 打包上架到蘋果審核發布等知識 。

9.常用類庫框架UIKit/Foundation/MapKit 。

10.熱門技術如微信支付/友盟分享/第三方統計等的使用和注意事項 。

11.性能調優方面 , 內存泄漏、網絡流量、耗電量方面的優化知識 , Analyze的使用 。
 

    成長性軟實力
 
除了技術知識等硬素質 , 能驅動帶來可持續成長的軟素質同樣重要 。 今日頭條資深架構師夏緒宏提到 , 對候選人更看重:
 
1. 技術面與職位匹配 建議對照應聘的職位描述 , 做有針對性的準備 , 也讓企業了解到你的用心;
 
2. 技術熱情 對技術熱愛 , 善于使用技術解決問題 , 有「技術思維」;
 
3. 學習能力 技術不可能一開始全部具備 , 更新迭代快的環境下需要保持不間斷學習;
 
4. 溝通能力 團隊協作需要能溝通順暢、高效;真正在做項目時 , 如何正確、高效的與戰友溝通非常重要 , 與學校中不同 , 在職場上更多是并肩作戰;

推薦閱讀