【雜談】研究生最後一年學習計劃

研究生最後一年學習計劃

前言

又是一年畢業季的到來,想一想研究生真是過的飛快。最近忙着實習與校招,目前尚未正式收到offer可是問題也不是很大,前段時間在菜鳥網絡基礎架構部門實習時經歷了不少,與一羣比我牛逼不少的人共事也學到了不少(儘管也被批評了不少),接下來我將會一邊總結實習過程當中的感覺、遇到的問題,一邊規劃一下將來一年的學習計劃。html

實習總結

主要工做

一、參與了菜鳥基礎架構組的彈性擴縮容項目,主要完成的是對系統的監控數據獲取、聚合等功能

其實這塊業務並無什麼技術含量,簡單點說就是離線拉取數據,並對數據進行CURD。其中,比較有意思的是全程使用Java8的stream類庫,這個知識點我找時間總結一下(包括foreach、map、reduce、paralleStream等等)。另外須要考慮不少額外的東西,例如數據其實天天只更新一次,因此爲了提速接口rt採用了redis來作緩存;同時HTTP接口拉取監控數據不穩定,很容易超時或者鏈接失敗,致使改次請求沒法獲取數據,這時須要對代碼進行良好的異常處理,還須要考慮數據拉取失敗時的重試策略(這塊還沒來得及完善,基本思路是設置最大重試次數,在異常捕獲處從新拉取)。web

另一個點,因爲是對ip維度進行統計、聚合,那麼ip數量很大時若是仍是串行執行就很慢了,因此須要使用多線程來提速。面試

二、參加黑客馬拉松比賽,完成類隔離容器項目

這塊我打算專門寫一篇博客來細講,就不在這多說了,屆時會把連接更新過來。先甩一張架構圖鎮樓。redis

我理解的企業的用人要求

最近也參加了不少家公司的面試,有如意也有被虐的很慘的,如下是一些知識點的總結(實際上下面的不少都沒有涉及到,畢竟校招仍是考察基礎更多一些)。算法

  • 算法及數據結構:重要性就不用說了,面試中不少公司(絕大部分外企,百度、頭條、快手等)都會很是看重這塊,若是想去以上公司那就必需要投入不少時間和精力去刷題了。
  • MySQL原理:互聯網最經常使用的關係型數據庫,面試幾乎都會問到,考察點如存儲引擎比較、視圖、索引、花式join等,我認爲索引尤其重要,應該多多去學習和理解原理(以後計劃寫一篇關於索引的總結)。
  • Redis原理:互聯網很是經常使用的內存型Key Value數據庫,單線程,支持持久化,速度很是快,面試常被問到Redis支持的數據結構,深刻的可能會問實現原理(準備學一下)。
  • Nginx原理:性能高、吞吐量大的服務器,適合作靜態資源服務器和後臺的負載均衡入口,一樣也是單線程,基本配置和原理值得學習。
  • Tomcat原理:Tomcat是Javaer最經常使用的服務器,其自己也是一個Java進程,做爲一個容器運行webapps目錄下的war包項目。我認爲常常會考察的點在於Tomcat的經常使用配置、內部的類加載器等。
  • Spring原理:搞Java的應該沒誰不知道Spring,常見面試題有Spring bean初始化流程,IOC和AOP原理,Spring上下文管理等。目前來講SpringBoot應該要比SpringMVC更火一點了,必須學習。
  • RPC原理:分佈式系統中不一樣服務之間調用的一種方式,我理解的是相似於HTTP的一種暴露服務的方式(可能有誤),Java中常見的如Dubbo,其餘的有gRpc,值得深刻學習。
  • MQ原理:消息隊列在互聯網中也是有着很是重要的地位,是一個同步轉異步的好方式,相關框架特別多,好比Kafka、RocketMQ、RabbitMQ等,那就必需要了解各個框架之間的優劣勢和特色。
  • 分佈式基礎知識:稍微大點規模的系統都須要用到分佈式,由於單機所提供的資源是有限的,互聯網中分佈式天然是屢見不鮮了。分佈式系統中須要考慮數據一致性問題,這裏面水很是深,任重道遠。
  • Linux:Linux是最經常使用的服務器系統,如今Docker(容器)又是新潮技術,特色是易部署、擴展性強。研發工程師不只要懂得開發,也要懂一些運維的基本功。好比我在面試中就遇到了不少直接問Linux命令的問題,也包括一些shell腳本的使用。至於操做系統自己,那就更是基本功了。多使用多記錄,慢慢來吧。

以上是零零散散的知識點,另外語言的基本功、系統設計能力、設計模式等也是後臺開發者必備良藥。私覺得,上面這些點掌握80%,去面阿里拿個P6應該沒問題了(不知道會不會被噴哈哈)~shell

學習計劃

上面說的這些知識點,其實我都只是略懂一二甚至不少都只是瞭解的層面,因此在接下來的空閒時間裏我決定儘量地去學習和整理這些內容,並以博客的形式記錄下來。數據庫

分佈式系統

這塊東西其實不少,我以爲沒有必要把全部的東西都看一遍,一來不現實二來其實也用不到那麼多。分佈式系統的原理性包括分佈式一致性、分佈式事務等核心原理是必需要理解透的,能口若懸河的扯個二、3個小時的程度我以爲就能夠了。經常使用的分佈式工具好比zookeeper、Kafka、Hadoop這類系統,也是必須去學會使用及瞭解原理的,師兄給個人建議是拿Hadoop去從源碼級別看起,能學到不少書本上沒有的東西,我會盡可能朝這個方向去努力的。設計模式

爲了強迫本身去學習,開啓了一個系列博客寫做計劃,目前已經有第一篇產出:ZooKeeper學習之一:安裝及命令行使用,後續我會繼續加油。緩存

刷LeetCode

有人可能想說研三不都已經結束找工做了嗎怎麼還要刷題?稍微考慮遠一點,正式工做了通常來講都是沒時間去刷題了,萬一要跳槽去一些外企或者喜歡面算法的公司(快手等)的時候,就很是尷尬了,因此仍是要把之後的壓力分攤到如今來。服務器

刷題是一種好習慣,應當堅持。

機器學習

機器學習、深度學習、AI等名詞幾乎是近兩年來IT圈內最熱的詞彙,若是隻是說熱度高,那麼並非每一個人都須要去學習,而是說這門技術你是否可以用得上、可否產生價值。

我在研究生期間更多的是彌補本科落下的代碼量、實習經歷,本身也不夠勤學去追趕新潮技術,因此對於機器學習這方面只是停留在「聽過」的層面。而在阿里實習的過程當中,我發現即便是後臺研發人員也可能遇到須要使用到機器學習、統計學習等方法來解決的問題。例如在進行彈性擴縮容項目開發時,就須要對服務的流量進行預測,這塊其實是時間序列的數據的預測,天然涉及到了統計和機器學習相關知識(將推薦轉換成分類問題)。

沐神(李沐)最近開啓了一個深度學習教程,看了第一節課感受很親民,有時間的話能夠追一追:動手學深度學習

總結

整體上說,作技術開發仍是多敲代碼多采坑多記錄多積累的過程,因此還猶豫什麼,just do IT~

相關文章
相關標籤/搜索