從外賣員到拼多多 30K+ 程序員,我付出了三年的青春

前言

 

先來自我介紹:git

 

老家農村,家裏好不容易把我送到大城市讀書,大學非985,211,但在咱們老家,能出一個本科大學生也是很是不容易的。由於農村信息的相對閉塞,我對大學專業一無所知,加上分數並不是前茅,最後被調劑一個我並不喜歡的專業,這裏就不透露本身是什麼學校了,只能說畢業以後爲了能多賺點,選擇了送外賣,這一送就送了將近3年的時間。程序員

 

爲何學編程?面試

 

接觸到編程是一次很偶然的機會,有一次送外賣,對方是本身的學長,他是計算機專業的,畢業後就進了一線互聯網公司,那以後就偶爾有跟他聊人生聊將來,一次契機,他勸我何不自學編程,來作程序員?後來考慮了好久,本身也綜合對比了各行各業的發展,最後決定學習編程,選擇了Java方向。算法

 

下文,我會對個人自學方法、自學資料以及個人面試經歷進行一個分享編程

 

 

拼多多服務端開發三面還原(一二面+HR面)

 

拼多多一面(大約1h左右):數組

 

  • 講一講 final / finally的區別網絡

  • try-catch-finally在不一樣狀況下的執行順序?框架

  • finally裏return和外部的return誰覆蓋誰?異步

  • wait / notify / notifyAll說一說?性能

  • notify喚醒線程以後能夠馬上執行嗎?

  • sleep / wait的區別?

  • Java 的線程有哪些狀態?

  • Java 堆的分佈?

  • 爲何要分出兩塊 survivor?

  • Mark-Copy 的流程?

  • 什麼狀況下會觸發 Full GC?

  • Full GC 和 Minor GC 的耗時比例?

  • 老年代和新生代的空間大小比例?

  • HTTP 狀態碼列舉一些?

  • connect 失敗會報什麼異常?

  • IO 分類?NIO 是阻塞的仍是非阻塞的?

  • 彙集索引、聯合索引、覆蓋索引解釋一下?

  • 口頭設計一個表和索引,而後說一說哪一種查詢會走聯合索引,哪一種會走覆蓋索引?

  • 聊項目,以及項目的困難點?

  • 手撕算法環節:有序數組 / 鏈表轉平衡二叉樹

 

拼多多二面(大約50分鐘左右):

 

  • 自我介紹

  • 聊聊項目

  • TCP 的流量控制和擁塞控制說一說 查問:接收窗口的空間是怎麼分配的?是否是多個 TCP 鏈接共用一塊內存仍是各自有獨立的?

  • TCP 和 UDP 的區別

  • 網絡的五層模型,每一層有什麼協議?

  • PING 命令用的是什麼協議(是 ICMP,我沒答上來)

  • OS 的內存管理、進程管理說一說

  • 物理內存空間、虛擬內存空間?

  • 虛擬內存的做用?

  • 內存的連續空間不夠分配的時候怎麼處理?全局內存的空閒空間不夠分配的時候怎麼辦?

  • 快排和歸併的複雜度,快排的退化

  • 平衡二叉樹各類操做的時間複雜度

  • AVL 樹和紅黑樹的區別?

  • 紅黑樹的應用?JavaTreeMapAPI 爲何不用 AVL 樹?

  • B 樹和 B+ 樹的應用?有什麼區別?爲何 MySQL 用 B+樹?

  • Redis 和 memcache 的區別?Redis 何以高性能?(這裏我暴露了本身的菜雞水準,面試官耐心地指正了我對於他倆的錯誤認知)

  • 異步非阻塞 IO 瞭解嗎?(扯了點事件分發器的 Proactor 模型,面試官承認了)

  • 手撕算法:二分查找變形題,浮點數的等差數列,一開始公差是1.0,在某一個位置公差變爲0.1,找到該位置

  • 看你寫的以前送外賣?爲何畢業以後沒有從事本身本專業內的工做?(我回答的想多賺錢)

  • 你的Java是自學的?怎麼堅持下來的?期間遇到什麼困難嗎?

  • 手頭上有哪些 offer ?

 

拼多多三面(HR面大約30分鐘):

 

  • 對拼多多有什麼瞭解?給拼多多作一個畫像?

  • 家是哪兒人?對於將來的就業城市有什麼想法?

  • 有女友嗎?

  • 目前面了哪些公司?對於目前投的公司有什麼偏好嗎?

  • 有想象過在拼多多工做的一天嗎?對薪資有什麼要求?

  • 從哪些渠道瞭解互聯網相關的訊息?

  • 若是拼多多把你掛了,你以爲會是什麼緣由?我和你聊了二十分鐘,你以爲你的哪些非技術性的綜合素質可能不如其餘候選者?

  • 薪資

  • 你有什麼想問的嗎?

 

拼多多三面面試題答案:

 

 

這三年來,我是如何自學的?

 

(1)觀看零基礎學習視頻

 

看視頻學習是最快捷也是最有效果的方式,跟着視頻中老師的思路,首先學習Java語法基礎,再到框架,從基礎到深刻,仍是很容易入門的。至於視頻,網絡上實際上有一大堆,我這邊是學長給個人珍藏版,應該是搜索不到,若是你須要,固然我也能夠免費分享給你。

 

 

Java零基礎視頻(五十五個階段)

 

(2)閱讀前輩的一些書籍和筆記

 

當我學到必定基礎,有本身的理解能力的時候,會去閱讀一些前輩整理的書籍或者手寫的筆記資料,這些筆記詳細記載了他們對一些技術點的理解,這些理解是比較獨到,能夠學到不同的思路。

 

 

書籍和筆記

 

 

SpringBoot核心技術筆記

 

(3)動手實操作一些小項目

 

光學理論是沒用的,要學會跟着一塊兒敲,要動手實操,才能將本身的所學運用到實際當中去,因此當我把框架學完以後,就本身去動手去作了個小的商城項目。關於這個商城項目的教程,你有須要我也能夠分享出來。

 

 

 

(4)加一些社羣,找一個好師傅

 

若是真考慮要轉行學習Java,那就多交一些志同道合的朋友,甚至是去找一個好的師傅帶帶你,這是我給你最真實的建議。加入一些社羣,參與到一些技術討論時,可以極大地提高我本身的學習積極性,另外找一個師傅帶帶本身,學習和實操過程當中遇到的不少問題就比較好解決一些,整個效率也就提高得比較快了。

 

 

總結

 

對於轉行作程序員,我能成功靠什麼?兩個關鍵詞,決心和毅力!

 

若是你下定決心,作了選擇,就必定要堅持到最後。

文章中所涉及到的一些學習視頻、學習資料或是項目,均可以避免費分享出來,若你須要這些:

https://gitee.com/biwangsheng/personal.git

 

現在我已成功轉行,如今在這個行業只算得上一個新人,但隨着歲月增加,我會慢慢成爲一名「老猿」,但我也會依然把本身這顆學習的心保持到老。一樣的,我也但願你在青春迷茫時,能不要放棄,由於每一個人,都有柳暗花明的那一刻。

相關文章
相關標籤/搜索