2016過去了,2017來了,你好,2017!感謝你2016,你帶給我太多的驚喜和不捨。今天我寫下一路辛苦做出的總結,希望有一天有人看到這份總結,因爲這份總結而少走一些彎路,少趟一些雷。也希望當有一天我站在高處回頭望時,這份總結不會因爲時間而塵封,依舊那麼閃亮!
一、學習(目的性一定要強)
學習過程
- 夯實基礎:語言基礎、第三方庫、多瞭解底層(系統層面、協議層面、語言實現層面)
- 量變到質變:多敲、多看書、少看視頻、找到弱點大量練習
- 記錄:記錄學習過程、學會總結、寫blog、豐富自己的github
- 交流:少說多看、少問多想、分享成果與過程、拉幫結派、團伙作案
- 投資:買書、補課培訓、學會計算投資與回收、投資時間
- 英語:必須掌握好,甚至要達到母語水平
技巧:
- 搜索引擎:谷歌-》必應-》百度
- 一手資料:閱讀官方文檔,其次是翻譯過的或者別人總結的
- 利用清晨:一篇新聞、一篇博文、一篇總結和計劃、找出難題中午吃飯之前解決
- TODO:制定TODO、利用鬧鐘提醒、TODO做完寫出要點
- 發散:擴大知識面(不只是技術方面)、讀讀心理學(瞭解別人想要什麼)、開腦洞、多看科幻
- 總結:總結出來不是高手,高手是用一句話總結出來
- 會睡覺:安排好作息時間,熬夜學習不划算
- 零散時間利用:利用坐車、等人、吃飯時間嘗試閱讀書籍或利用移動設備看學習相關的視頻
學會提問
- 謙虛:不分回答的人年齡、地位 保持友善,甚至是尊敬 聽人說完,想想再繼續問
- 問到點:問之前先把問題想清楚,一句話問到位 問之前一定自己把問題全面考慮過,嘗試解決過
- 仔細想:不是每個人回答者都很耐心,所以記住人家的話,仔細品味思考,爭取不要問第二次
二、面試(如果你是處,那就先面試一百家)
簡歷
- 造假:簡歷寫的天花亂墜,吹牛逼上了天,只能讓你吃不了兜着走 適當造假,面試之前想好怎麼圓謊
- 不造假:實事求是,會什麼寫什麼,不會的千萬不要寫
- 適當美化:不要千篇一律、有自己的模板、不花哨 聯繫方式加粗 多寫專業名詞 按次序寫 重要的寫前面
- 不要廢話:精簡 頁眉頁腳寫Blog、github地址 不要寫與專業無關的 寫出特色
- 寫要點和績效:項目要點、技術關鍵點、產生多少效益
投簡歷
- 懂市場:所在城市行情、同水平薪酬範圍、不要去智聯和51job(首選拉鉤、Boss直聘)
- 先調查:查企業信用公示板、企業註冊登記查詢 百度、知乎等搜索企業信息
- 抓住機會:不要因爲待遇問題而喪失機會 不要怕,不敢想
筆試
- 鑽空子:可以字數寫多,字寫的不好看
- 做題:可以做,不要刷,找目標公司以前的面試題
面談
- 渴望:表達對目標公司的渴望,降低自己的身份
- 不要說謊:實事求是,真誠的看着面試官的眼睛
- 錯了就問:答錯了直接問爲什麼,與面試官簡單討論(不宜討論時間過長)
- 衡量自己:自己值多少錢就多少錢,不要高也不要低
- 善待面試官:切記不要頂撞,不要自以爲是 真誠、尊重
三、工作(用心)
選工作
- 外包:外包並不一定好也不一定壞,好在鍛鍊人,壞在不當人,適合初學者
- 非外包:看產品,看用戶量
- 傳統:流程完善,可能生產力低,適合初學者
- 互聯網:敏捷比較多,生產力高
- 小公司:全方面鍛鍊,加快學習
- 大公司:一個蘿蔔一個坑,全靠自己才能升
放開
- 思想:都是同志,互相分享互相信任 不要怕面對上級 多一些思考多一些點子
- 技術:貢獻自己會的,能做的 嘗試用創新解決團隊問題
小心
- 說話:先想再說 多問少說 不要順嘴就說
- 本職工作:不要毛 不要慌 不要手抖 多測試
多想
- 業務:業務第一,想不明白就問,問不明白多想,多參加業務培訓
- 技能:技能第二,還是持續學習,多想爲什麼(爲什麼這麼實現,爲什麼用這樣技術)
降低身份
- 對上:保持恭敬而不低三下四,善意真誠直視對方,適當讚揚
- 對下:保持平等而不高傲,微笑面對對方,適當關心
- 對外:對客戶=對上,對其他人=對下
先解決別人的問題
- 用戶爲先:把用戶當傻子、自己體驗自己的產品、盡力完善用戶需求和體驗(不合理的需求要學會爲客戶變通)
- 幫助別人:舉個例子,當你解決了dba連接數據庫的工具,那dba就會幫你解決你sql語句查詢慢的問題
天助自助者
- 學習:持續學習,夯實基礎,掌握方法,記住核心
- 忙碌:多加班,充分利用8小時,如果不累中午多學習,快速完美的完成任務,不瞎忙
- 擴大影響力:組內-》部門內-》公司內-》公司外,參加各種大會(嘗試演講),與別人討論
四、技術(持續學習,夯實基礎,大量閱讀代碼)
java
- 基礎:語法、類和對象、static作用域、IO、語法糖、java core、反射、異常 api、collections用法與底層實現
- 框架:spring mvc、spring、spring boot、mybatis、slf4j、maven、apache commons、fastjson、ProtoBuf、xml、httpclient等等
- 設計模式:單例、工廠、策略、裝飾者、建造者、觀察者、適配器、依賴注入與控制反轉
- 多線程:concurrent、隊列、生產-消費者、鎖(悲觀與樂觀)、信號、共享內存、各種數據結構在高併發下出現什麼問題
- jvm:gc、內存模型、字節碼格式、反編譯、閱讀openjdk源碼和jvm規範、jvm參數、內存分析工具
- 高併發:nio、多線程、dubbo、緩存、消息隊列、反向代理與負載均衡、jmeter、loadrunner
c
- 算法與數據結構:堆棧、隊列、鏈表、哈西、樹、圖,查找、排序、其他更專業的算法和數據結構
- 各種lib:libevent、libcurl、qt、數據庫驅動等等
- 模型:epoll、select、零拷貝、事件、回調鉤子等
- 協議與驅動:tcp、udp參數和報文狀態、http協議,學會抓包,嘗試編寫硬件驅動
- 指針、宏、結構體:函數指針、指針函數、引用與句柄、野指針、多級指針,指針壓縮,宏運算、宏展開、宏條件判斷,結構體嵌套,結構體序列化與反序列化,結構體、聯合體壓縮
- gcc:gdb、gcc優化等級、自定義gcc,利用makefile
linux
- 基礎:常用命令、網絡配置、倉庫、vi、bash腳本語法、計劃任務、鑑權、文件系統、引導裝載程序
- 服務:ntp、nfs、iscsi、dns、dhcp、autofs、udev、cron、syslog以及其他第三方服務(ngix、apache、tomcat、vsftp等)
- 性能與安全:內核調優、啓動調優、針對服務調優、鑑權、災備、chkrootkit、rootkithunter
- 監控:top、netstat、iostat、htop、vmstat、ps、lsof、nagios、tail -f查看日誌
- 自動化:bash、python腳本,自動化部署、自動化運維工具,蜜罐、ips
數據庫
- 基礎:sql語句(DDL、DML),數據庫架設,查看日誌 事務隔離級別 存儲引擎特性
- 執行計劃:explain,看懂查詢計劃並優化
- 索引:什麼語句用的了索引,什麼用不了索引,聚集索引與非聚集索引,什麼列該加索引,什麼不該加,最左原則,索引底層數據結構
- 語句優化:減少語句網絡請求,利用查詢計劃和索引,減少like in,不要select *,不要全表掃描,不要超過3表以上鍊接等等
- NoSQL:redis、mongodb等
- 分佈式:cluster、第三方proxy、讀寫分離、主從複製
- 災備:制定備份和恢復方案、利用自動化備份、瞭解binlog、瞭解存儲結構和存儲方式
- 監控:旁路監控、利用數據庫本身提供的監控工具
架構
- 模型:事件驅動模型、領域模型等
- 進階:單機整站、多機整站、多機橫縱向切分、多機業務切分、分佈式微服務、雲計算與虛擬化、霧計算
- 需求與業務:需求和業務優先於技術與架構,架構師需要把業務玩的透透的才能合理設計架構
- 設計與拆分:拆分業務、拆分系統、拆分模型、拆分接口、拆分代碼、拆分數據存儲、拆分通信過程、UML和各種文檔的編寫
- 重構:持續重構、不斷優化、抽取提煉、多用設計模式
- 代碼整潔之道:命名規範、代碼量規範、工程結構規範、配置規範、註釋規範,持續整理
- 封裝:封裝基礎服務,封裝基礎數據,封裝基礎類庫,封裝底層實現,封裝協議標準,降低部署複雜度,降低一切複雜度
- 高可用與性能:壓測得出指標、優化完成指標、量化細節指標、出現問題快速解決或回滾、豐富測試環境與預發佈環境、分流引流、優化架構與設計、持續監控優化性能
- 多語言:學習掌握go、erlang、nodejs等現代編程語言,適當使用彌補不足
- 管理:人員分配、工時分配、項目風險控制、資源利用率、投資回報、採用何種方式管理(敏捷還是傳統)