前言
先來自我介紹:
老家農村塘安,家里好不容易把我送到大城市讀書糠涛,大學非985,211兼犯,但在我們老家忍捡,能出一個本科大學生也是非常不容易的。因為農村信息的相對閉塞切黔,我對大學專業(yè)一無所知砸脊,加上分數并非前茅,最后被調劑一個我并不喜歡的專業(yè)纬霞,這里就不透露自己是什么學校了凌埂,只能說畢業(yè)之后為了能多賺點,選擇了送外賣诗芜,這一送就送了將近3年的時間瞳抓。
為什么學編程埃疫?
接觸到編程是一次很偶然的機會,有一次送外賣孩哑,對方是自己的學長栓霜,他是計算機專業(yè)的,畢業(yè)后就進了一線互聯(lián)網公司横蜒,那之后就偶爾有跟他聊人生聊未來叙淌,一次契機,他勸我何不自學編程愁铺,來做程序員鹰霍?后來考慮了很久,自己也綜合對比了各行各業(yè)的發(fā)展茵乱,最后決定學習編程茂洒,選擇了Java方向。
拼多多大廠錄取通知
自學方法有哪些瓶竭?
學習類網站:這類網站主要包括了各種語言與各種原理的學習,基本上覆蓋了需要,很完整的一套視頻教程.
博客類網站:這類網站可以吸收一下大牛的思想,順便可以供自己做一下筆記,"有事沒事"就寫一篇博客.
書本:書本的話也是一個自學的好途徑督勺,這個要看自己的需要,是編程語言方面的還是系統(tǒng)方面的還是網絡方面的斤贰。一本好的書可以幫助你少走很多的彎路智哀。
自學的方法有哪些?
1.自學于文本
第一級荧恍,是有一個問題瓷叫,你能不能從一堆書里找到答案。一個問題要是用搜索引擎就能解決送巡,那就太簡單了摹菠。我們關注的是你在學業(yè)中自發(fā)地冒出來的大問題。比如你用一本中國出版的教科書學量子力學骗爆,公式和做題你都會了次氨,但是你感覺自己對“不確定性原理”這個概念沒有搞清楚,那你怎么辦摘投?課本只是指向月亮的一根手指煮寡,我們追求的是月亮本身,多參考幾根手指更容易定位犀呼。有時候你會驚訝地發(fā)現(xiàn)像“不確定性原理”這么基本的概念幸撕,不同的書講法都不一樣,而有的書明顯是講錯了圆凰!這能讓你收獲一股巨大的自信力杈帐!你的見識体箕,超過了那個作者专钉。
第二級挑童,是建立自己的系統(tǒng)。知識是個系統(tǒng)跃须。而作為自學者站叼,你的個人知識系統(tǒng)應該是具體的 —— 也就是說你得把它寫下來。你應該對每一個課題都有一個筆記本菇民,根據自己的思路劃分章節(jié)和專題尽楔,用自己的語言整理好所有的要點、心得和應用技巧第练。這個系統(tǒng)是你自己的阔馋,而你的關注點跟別人完全不同,所以沒必要事無巨細娇掏,要字字見血呕寝,直指人心。 但是這個系統(tǒng)得有一定的完備性婴梧。最好從學習一開始就有所規(guī)劃下梢,這門學問有哪些要點和問題,你要得到什么塞蹭,自己給自己一個教學大綱孽江。完備性的好處是能讓你發(fā)現(xiàn)系統(tǒng)的漏洞。你需要再想辦法彌補番电。系統(tǒng)要不斷地完善岗屏。面對一個形成實體的系統(tǒng),你會有一種強烈的成就感漱办。我上大學的時候有好幾個筆記本担汤。為了準備GRE物理專項考試,我還弄了一個綜合所有課程的復習要點手冊洼冻。那個手冊其實對別人沒用崭歧,但我當時的成就感實在太強,以至于專門讓校印刷廠把它裝訂成了一本小書的樣子撞牢。有了系統(tǒng)率碾,你在文本意義上的學習就算差不多了。但是文本學習還遠遠不夠屋彪。
2.自學于操作
我們學習并不是為了一講話能說出個一二三四所宰、擺個有學問形象。我們學習是為了應用畜挥。你需要在實踐中得到反饋仔粥。你需要找人切磋一下,參加一個什么測試甚至比賽,才知道自己學的到底怎么樣∏現(xiàn)在人們對網絡公開課的一個詬病就在于它在反饋這方面不如線下谭羔,不過考慮到大多數人在學校里上課的時候也沒有得到太多反饋,我到是覺得為了網課的高效率而犧牲一點反饋機會是值得的麦向。但是你仍然需要反饋! 自學最大的坑在于沒有精準的反饋瘟裸,于是做過的事就不知對錯,就沒有意義诵竭。所以话告,自學最關鍵的問題就是要找到盡量精準反饋渠道。你不需要等到實際工作才能獲得反饋卵慰。你可以把自己的作品放網上讓人看看沙郭。而像數學和編程這樣的項目特別適合自學,因為會不會裳朋、做得對不對棠绘,你立即就能知道。答案和結果就是反饋再扭。數學和編程不是文化欣賞項目氧苍。對于一個嚴肅的學習者灰羽,這些是訓練項目朦拖。上課只是提供一個交流平臺,真正的功夫都在自己的練習之中黑滴。你的信心和水平只能在每一次成功解題和程序成功運行中提高罢荡。真正的程序員不可能去專門報個什么班來學習一種新出的編程語言赡突。是先有一個什么需求,現(xiàn)用現(xiàn)學∏裕現(xiàn)用現(xiàn)學聽起來有點不靠譜惭缰,但這才是最原始的學習沖動和最實在的學習行為。我要用笼才,我不會漱受,那我就學唄?你要做的是上網找個最簡單的教程現(xiàn)用現(xiàn)學骡送,先把這個問題對付過去再說“合郏現(xiàn)在人們對 YouTube 和 B站的一個用法,就是想干什么事兒不會摔踱,上去看看別人干這件事兒的視頻虐先。我就曾經跟著 YouTube 給廚房換了一個下水道攪拌機,還給汽車換了個門把手派敷。 b站是個自學的好地方蛹批,很冷門的單證考試都有大量考過人員的心得分享撰洗、推薦教材,以及各種專業(yè)技能的培訓課程腐芍。這種自學可以說是“自學于無形” —— 不需要什么儀式差导,沒有那么多情緒波動,我們需要用啥就能學啥甸赃,學啥就能會啥 —— 這豈不就等于說,沒有我們不會的東西了嗎冗酿?而反過來說埠对,大多數人學英語最大的問題恰恰是學而不用,把學英語變成了健身項目和行為藝術裁替。
拼多多面試經歷:(還原現(xiàn)場五面)
1.拼多多Java一面:
HashMap和HashTable以及CocurrentHashMap詳細說明
網絡IO模型项玛?什么是多路復用IO?select和epoll的差別弱判?
TCP三次握手的過程襟沮,如果沒有第三次握手有什么問題?
常用的線程池有哪些?各自的應用場景?
Java類加載機制昌腰?雙親委派模型的好處开伏?
JAVA并發(fā)包組件了解多少?
什么時候多線程會發(fā)生死鎖?怎么來預防
操作系統(tǒng)的用戶態(tài)和核心態(tài)切換條件以及為什么要切換
數據庫事務特點?事務隔離級別遭商?項目中的事務實現(xiàn)固灵?臟讀、不可重復讀劫流、幻讀各舉個例子巫玻?
2.拼多多 Java二面:
有接觸過哪些消息隊列中間件?如何來選型祠汇?
談談你對SOA以及微服務的理解仍秤?
具體談談Spring Cloud服務和注冊?
分布式的cap了解么,分別指什么?
網絡編程nio和netty相關可很,netty的線程模型诗力,零拷貝實現(xiàn)?
spring 和 springboot的關系你是怎么理解的?
Spring IOC和AOP說一下你的理解
為什么用消息隊列我抠?
對于消息的重復消費你有什么設計方案嗎姜骡?
3.拼多多Java三面:
數據庫索引?B+樹屿良?為什么要建索引圈澈?什么樣的字段需要建索引,建索引的時候一般考慮什么尘惧?索引會不會使插入康栈、刪除?
設計模式,單例模式啥么,怎么保證線程安全登舞?鎖效率太低,怎么提高效率悬荣?
CAS菠秒?CAS本質是什么?什么是原子性氯迂?Compare and Swap兩步***作践叠,為什么能保證原子性(涉及到CPU指令)?
分布式鎖的實現(xiàn)知道到哪些嚼蚀?你更推薦哪一種鎖?
Redis的持久化操作有哪些禁灼?
如何利用redis處理熱點數據
為什么選擇Redis作為緩存?
為什么Redis的性能十分的高轿曙?
說一下單進程弄捕、單線程的Redis和你平時寫的多線程程序的對比
10個多線程保證 i從0加到10 (差點翻車,主線程忙等另外10個線程完結)
反轉鏈表
上臺階(n=80)
4.拼多多Java 四面:
你怎么學的Java暗嫉邸守谓?
設計模式了解嗎?單例講一下您单,懶漢餓漢double-check分飞,怎么實現(xiàn)。策略模式睹限,外觀模式譬猫,適配器模式,裝飾器模式羡疗,分別講一下
聯(lián)合索引什么時候不會觸發(fā)索引染服?
AOP了解么,有什么好處叨恨,如何使用柳刮,怎么實現(xiàn)的?
支付寶到銀行的轉賬業(yè)務怎么實現(xiàn)?
redis實現(xiàn)分布式鎖
三臺機器集群痒钝,按不同權重訪問秉颗,怎么做?
談談高并發(fā)場景下削峰送矩,限流的實現(xiàn)蚕甥?
你之前工作的項目里個人最滿意的,談談你的架構設計思路栋荸?
5.拼多多多Java五面:
為什么要從上一家公司離職?
為什么要選擇這里菇怀?
如何看待加班問題凭舶?
平時自己是怎么學習技術的,除了Java相關爱沟,還會去了解其他什么技術帅霜?
期待的薪資是多少?
未來2年是怎樣打算的呼伸?
在基礎不好的背景下如何更好的學習身冀?
01.多刷題沖刺:
面試之前,可以多刷題沖刺,下附最新Java面試合集
02.可多讀源碼括享,看些實戰(zhàn)筆記搂根,學習大神的思路
程序員要想快速認知并學習架構,讀源碼是必不可少的奶浦。閱讀源碼兄墅,是解決問題 + 理解事物踢星,更重要的:看到源碼背后的想法澳叉;程序員說:讀萬行源碼,行萬種實踐沐悦。
Spring源碼深度解析:
Mybatis 源碼深度解析:
Redis學習筆記:
Spring Boot核心技術-筆記:
03.多看視頻資料成洗,理解更透徹:
B站上也有很多學習視頻,唯一的缺點就是免費的容易過時
后話:只有技術過硬藏否,在哪兒都不愁就業(yè)瓶殃,“萬般帶不去,唯有業(yè)隨身”學習本來就不是在課堂那幾年說了算副签,而是在人生的旅途中不間斷的事情遥椿,行動起來,讓學習成為一種享受淆储。