俗話說凡事要“順勢而為”,找工作亦是如此。現如今,借助手機網絡帶寬的快速提升以及移動互聯網的概念,原先在PC平臺才能開展的服務一下被冠上了“移動”二字。在手機上使用服務和計算機上使用服務,在本質上并沒有太大區別,但關鍵在于手機更具有“私密性”和“便攜性”,大大增加了客戶粘性和使用時間,進而會對服務提供商產生更大的依賴性。
在中國,互聯網公司中百度、騰訊、阿里巴巴“三架馬車”分別把持搜索、社交游戲和電商平臺三大主戰場,互相競爭。而硅谷更是百花齊放:Apple、Google、Microsoft致力于打造自己的生態圈,完成硬件、軟件、服務的閉環;而Facebook、Twitter、LinkedIn等為代表的社交平臺也迅速通過巨大的用戶群體完成“圈地運動”,將管轄區域內的用戶導向各個實體商戶;更有Uber、Airbnb等新興公司,致力于通過移動互聯網思維改變人們的實際生活。
相比于2000年左右的互聯網泡沫,這次的計算機高潮來勢更為兇猛:不單單提供資訊、門戶、電郵等虛擬線上服務,而是直接破壞性地侵入傳統行業,以更高的效率改變原有行業。這就是為什么許多新興科技企業號稱是技術公司,但實際上提供著傳統行業的服務。當前的趨勢也會逼迫著傳統公司作出改變,引入更多計算機人才,利用云計算、機器學習等新手段與新興公司競爭。最簡單的例子如Wal-Mart Labs,它以一個科技智囊的角色隸屬于Wal-Mart,通過計算機技術分析,優化Wal-Mart的營運效率。金融、銀行、地產、石油、制造、電子硬件等各個行業也紛紛引入計算機技術,大大創造了從業人員的工作機會。
這樣的趨勢對你我有什么影響?人才需求的極速擴張意味著找工作難度降低,并且待遇也是水漲船高。舉例來說,在美國,碩士畢業加入Apple、Google、Facebook等公司起薪至少10萬美元,外加股票期權。更不要說加入最火的創業公司,三四年后一旦上市就可以提前退休,或者把工作作為興趣。在國內,阿里巴巴上市也造就了成百上千個千萬富翁,即使是上市前一兩年剛加入的新人,也拿到了100萬人民幣左右的股權。
如果說這些職位難度太高,對于你遙不可及,或者需要很長的準備時間,那也許對于上面的文字你只會一笑而過。但是,如果告訴你通過正確的方式,做好面試準備,上面所說的職位觸手可及,是不是聽起來更有吸引力了呢?事實就是,由于軟件工程師的職業特性、面試要求及局限性,以及市場需求等因素,程序員求職是一種比較具有應試性、相對容易找到門道的簡單職業道路。不乏相關或不那么相關專業的畢業生通過半年到一年的努力拿到理想的IT行業的相關工作的事例,由此可見,挑戰不在于“能”和“不能”,而是如何通過正確的方法、迅速地趕上潮流分一杯羹。
- 內容提要
- 作者簡介
- 前言
- 我的故事,你的故事
- 現狀
- 目的
- 特色
- 第1章 簡歷、面試和Offer
- 1.1 簡歷
- 1.1.1 格式
- 1.1.2 內容安排
- 1.1.3 描述技巧
- 1.2 面試
- 1.2.1 HR
- 1.2.2 技術面試官
- 1.2.3 老板
- 1.3 Offer
- 1.4 常見問題
- 1.5 工具箱
- 第2章 數組和字符串
- 2.1 知識要點
- 2.1.1 數組
- 2.1.2 哈希表
- 2.1.3 String
- 2.2 模式識別
- 2.2.1 使用哈希表
- 2.2.2 利用哈希表實現動態規劃的思想
- 2.2.3 String相關問題的處理技巧
- 2.3 工具箱
- 第3章 鏈表
- 3.1 知識要點
- 3.2 模式識別
- 3.2.1 鏈表的基本操作
- 3.2.2 啞節點
- 3.2.3 Runner和Chaser
- 3.2.4 遍歷并處理節點
- 3.2.5 交換節點的問題
- 3.2.6 同時操作兩個鏈表
- 3.2.7 倒序處理
- 3.3 工具箱
- 第4章 棧和隊列
- 4.1 知識要點
- 4.1.1 棧
- 4.1.2 隊列
- 4.2 模式識別
- 4.2.1 通過棧實現特殊順序的讀取
- 4.2.2 “Save for later”問題
- 4.2.3 用棧解決自上而下結構的問題
- 4.3 工具箱
- 第5章 樹和圖
- 5.1 知識要點
- 5.1.1 樹
- 5.1.2 字典樹
- 5.1.3 堆與優先隊列
- 5.1.4 圖
- 5.1.5 圖的遍歷
- 5.1.6 單源最短路徑問題
- 5.1.7 任意兩點之間的最短距離
- 5.2 模式識別
- 5.2.1 利用分而治之(D&C)策略判斷樹、圖的性質
- 5.2.3 樹和其他數據結構的相互轉換
- 5.2.4 尋找特定節點
- 5.2.5 圖的訪問
- 5.3 工具箱
- 第6章 位操作
- 6.1 知識要點
- 6.2 模式識別
- 6.2.1 基本的位操作
- 6.2.2 位掩碼
- 6.3 工具箱
- 第7章 面向對象的設計
- 7.1 知識要點
- 7.1.1 設計題解答要領
- 7.1.2 模擬面試
- 7.1.3 抽象、面向對象和解耦(Decoupling)
- 7.1.4 繼承/組合/參數化類型
- 7.1.5 設計模式
- 7.2 模式識別
- 7.3 工具箱
- 第8章 遞歸和動態規劃
- 8.1 知識要點
- 8.1.1 構建從子問題到最終目標的方法
- 8.1.2 遞歸的空間與時間成本
- 8.1.3 自底向上與自頂向下
- 8.1.4 算法策略
- 8.2 模式識別
- 8.2.1 用動態規劃(自底向上)解決收斂結構問題
- 8.2.2 最長子序列類型的問題
- 8.2.3 用Memorization(自頂向下)解決收斂結構問題
- 8.2.4 用回溯法(自上而下)解決發散結構問題
- 8.2.5 用D&C策略解決獨立子問題
- 第9章 排序和搜索
- 9.1 知識要點
- 9.1.1 常見的內排序算法
- 9.1.2 常見的外排序算法
- 9.1.3 快速選擇算法
- 9.1.4 二分查找
- 9.2 模式識別
- 9.2.1 動態數據結構的維護
- 9.2.2 對于有序/部分有序容器的搜索,用二分查找
- 9.2.3 數據范圍有限、離散的排序問題
- 9.2.4 Scalability & Memory Limits 問題
- 9.3 工具箱
- 第10章 測試
- 10.1 知識要點
- 10.1.1 測試現實世界的物體、軟件或函數
- 10.1.2 故障排除
- 10.2 模式識別
- 10.3 工具箱
- 第11章 網絡
- 11.1 知識要點
- 11.1.1 網絡分層
- 11.1.2 路由
- 11.1.3 常用網絡統計指標
- 11.1.4 TCP vs. UDP
- 11.2 模式識別
- 11.3 工具箱
- 第12章 計算機底層知識
- 12.1 知識要點
- 12.1.1 進程vs.線程
- 12.1.2 上下文切換
- 12.1.3 系統調用
- 12.1.4 Semaphore/Mutex
- 12.1.5 死鎖
- 12.1.6 生產者消費者
- 12.1.7 進程間通信
- 12.1.8 邏輯地址/物理地址/虛擬內存
- 12.1.9 文件系統
- 12.1.10 實時vs.分時操作系統
- 12.1.11 編譯器
- 版權信息
- 看完了