簡單介紹下背景:本人已工做兩年,此次屬於社招,不是校招哦!投遞的崗位base是北京。java
先上正文面試
給出兩個 非空 的鏈表用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式存儲的,而且它們的每一個節點只能存儲 一位 數字。算法
若是,咱們將這兩個數相加起來,則會返回一個新的鏈表來表示它們的和。數組
您能夠假設除了數字 0 以外,這兩個數都不會以 0 開頭。緩存
示例:服務器
輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)網絡
輸出:7 -> 0 -> 8數據結構
緣由:342 + 465 = 807多線程
給定一個數組表明股票天天的價格,請問只能買賣一次的狀況下,最大化利潤是多少?日期不重疊的狀況下,能夠買賣屢次呢?閉包
輸入: {100, 80, 120, 130, 70, 60, 100, 125}
1)只能買一次:65(60 買進,125 賣出)
2)能夠買賣屢次: 115(80買進,130賣出;60 買進,125賣出)
輸出買賣的序列和最大利潤
三面反問環節,問:我咋樣?(措辭是: 這簡短的面試交談過程當中,您以爲我咋樣?), 面試官說,我這一年來成長不大,幾乎沒變化,但是我以爲這一年來纔是稍微有點兒進步的呀。
不過,通過這麼一問,以爲反問環節也挺有意思,之後若是再有面試,反問環境能夠多問些面試官關於咱們本身的評價和見解,好比:上面說的您以爲通過這一小時的交流,我總體怎麼樣?若是像上面的面試官說最近一年進步不大,那麼應該繼續追問:那您以爲應該向什麼方向去深刻學習和思考比較好呢?態度誠懇一點就行,做爲面試官人家仍是樂意幫你指出不足之處的。
而上述的兩個問題:我咋樣和如何改,拋開offer不談,這兩個問題我以爲能夠說是正常面試最大的收穫了。而面試以前準備的那些知識畢竟比較零散,仍是須要靠平時的積累來鞏固。面試最重要的是讓他人來評價你,之前沒反問這兩個問題的時候,這些評價人家面試官基本不會主動告訴你,只會整理一下而後錄入到公司的人才管理系統,以供後續評價。
但你如今反問一下,就能夠得知這兩條信息,這些評價信息對你來講纔是最有用的,放在公司它只是大量候選人評價數據中的一份,無關緊要。但對你來講倒是個寶貴的信息,你能夠據此從別人的視角來審視本身,這種換個角度的審視比本身平日裏思考寫總結來得客觀。畢竟你表現出來的纔是客觀的,內在的其餘沒表達出來的方面只能說你表達能力不行,也是種缺點,須要反思之一。
若是沒有進行這樣的反問,就不能更加全面的得知別人對你的見解,也就錯過發現本身弱點和改正的機會,之前面試反問環節都是傻傻的問一些沒多大意義的問題。從此應當多注意,要懂得跟面試官「要回」屬於你的那份評價信息。
以上就是面試過程當中涉及的一些內容,屬於流水記帳式的列了一下。
上述的感想也是比較離散、雜碎。還想再分享一下我的的一些學習經驗,歡迎交流指正。
技術面結束以後,從此對於基礎的知識的學習可能沒有這幾天這麼緊湊了,短期填鴨式的學習大腦有點忙,不過這種感受也還行,接觸到了新知識有點成就感。當你在瀏覽面經的時候,裏面提到的問題你以爲你都會了,是否是也有種自我確定的情緒呢。
不過,面經裏面提到的知識都是比較分散的,畢竟在那麼短的面試時間內,面試官也只能隨機抽樣的檢查,沒時間作太全面的交流。這也致使咱們看面經的時候都是比較分散的知識點,因此須要在從此,持續的學習,每段時間都專心研究某個知識系列,系統性的學習比較有效果,也比較全面。好比MySQL、Redis、ZooKeeper、MQ、JVM、OS、網絡、算法等。
就算法來講,它是須要長時間的積累,短期內的突擊效果不是特別大,也累。因此從此對於算法的學習能夠這麼來:每日一題、或者以前作過的題目天天拿一兩題出來再作一遍,從新思考,深刻的多看看題解體會體會,再也不是趕時間的去衝量。學會總結,理解每一個算法與數據結構的含義,時間久了就能作到不變應萬變。
另外,算法大部分仍是屬於背誦題,很多題目把模板寫出來就完成的差很少了,只須要把細節處理一下就差很少了。時間久了,這些模板題就變成條件反射,此時對高級的數據結構也會有進一步的瞭解,思考速度和解題能力都有所進步。
OS和網絡也差很少,這三者屬於平日工做都不多直接可以體現出來的知識,平日工做用得少,又沒去複習時間一久就會忘記, 用進廢退, 人之常情嘛。因此纔像上面說的,應該要堅持每日一題、或者時不時挑一些作過的題目從新作作,主要是爲了保持手感,而作過的題目拿出來再作一遍也不會花太多時間,這樣在平常工做之餘也比較容易堅持下來。
經過這段時間的面試準備,算是把算法入門,找到刷題的狀態了,此後應該如上所說,堅持每日複習作作老題,偶爾週末時間充裕跟着「每日一題」作作新題,保持下去。
說回OS和網絡,這類知識對於邏輯思惟的要求沒有算法題那麼高,算法題屬於「CPU至關密集型」,不練就不會。而OS和網絡這類可能更多的是理解以後帶點記憶的知識,作點輸出存到筆記或者博客,按期來回顧回顧就行,屬於「輕微IO密集型」,看完以後一段時間,也多少還有些印象,可以知個大概。每兩年重看相關書籍,複習一下就能夠鞏固。
整個計算機體系,包括底層硬件組成原理、再上的操做系統和網絡,這些之間其實都是有邏輯關係在的。能夠OSI七層或者TCP/IP四層模型來看,它們就是個總體,所有理清以後,在大腦內能夠存在至關長的時間。平常工做和生活中,只要遇到計算機相關的問題,大多均可以從這個總體來思考,這種思考也算是種回顧複習。
相比而言,算法算是比較離散的,排序、BFS/DFS、DP等以前的聯繫不是特別的緊密,至少沒有像上述OSI七層模型這種遞進關係相互依賴的狀況,學習的時候也就能夠單獨知識點一個個擊破了。
關於從此保持基礎知識學習的想法,首先算法就如上述所言,每日一題、或者作過的題目重作,這樣是爲了避免給原本就忙碌的工做日增長太大的壓力,用簡單的算法題來放鬆放鬆就行,搞幾個AC找找成就感。
而對於基礎知識,前期打算繼續多翻閱翻閱面經,以面經中的題目爲切入點,來複習(好像技術博客首頁的文章也是個不錯的切入點)。複習過程當中再由點及面的去谷歌各類不明白,每一個疑問點在輸入谷歌以後,一次性多打開幾個頁面,多看多對比而後結合整理本身的理解,輸出到日記或者博客中。
好比,最近看到個比較經典的題目是MySQL的隔離級別,這個問題谷歌一搜,大部分都有提到MVCC、當前讀、快照讀、行鎖、間隙鎖,都什麼知識啊,反正對於工做經驗尚淺的我來講,已經觸及到知識盲點了。也好,這些點都記下來,一個也別想跑,而後再分別谷歌這些知識點,可能又會引出一些更加底層的、你沒見過的知識點,也不要緊,繼續記錄繼續搜。
從此可能又會看到MySQL索引相關的面試題,搜這個的時候,也許會碰到MyISAM、InnoDB、B/B+樹、磁盤IO塊與系統頁、主索引與輔助索引、m叉樹的分裂與合併……之類的,這樣對MySQL的認知又多了一些。過些時日,你可能想着完整的去學一遍,這時候買本《高性能MySQL》來看,並且你以前學到的隔離級別、索引它裏面都提到了,而且更加全面和仔細,從基本概念的出現到最終的經常使用場景,都給你列出來了。
上述之因此要先從面經題目切入學習是由於我的在看書的時候,總有種大而全的感受,書畢竟比較理論,面面俱到,有用的沒用的都會列出來。而面經上的題目是面試官結合當下工做內容提出的,有可能就是他最近工做中遇到的問題,直接拋給你看你怎麼思考。那麼這種面經題目就比較有意思,貼合實際工做,可以更好理解,通過面試官這麼一折騰印象也更加深入。這種零散的知識點學的差很少了,再來看書,就比較有感受,知道書中哪些地方是重要知識,哪些地方其實沒那麼實用做爲了解便可。
其實,平常工做中無論是用到的知識,仍是遇到Bug,所涉及的知識點也是比較隨機離散的,相似上面瀏覽面通過程中遇到的問題,看緣分。而在項目排期不那麼緊的時間段裏,找本書系統化的把以前的碎片化知識點串起來,就頗有必要了,既是總結也是鞏固。
任何事物都是從小發展到大,學習的時候應該從它過去小的規模,跟着時間推移發展壯大,逐步去了解。好比學習Linux內核能夠從早期低版本、JVM、Spring也相似,早期規模小,結構相對簡單,比較容易理解。再逐步的按照發展須要,增長各類功能模塊,直到當前最終版本。這樣的學習路徑能夠清楚的知識系統中各個模塊的由來與做用,也可以知道哪些是基礎重要模塊,而哪些是爲了解決歷史特定問題的模塊,理清主線。
再舉個例子,前些時候看到一篇關於限流的文章。文章一開始先從簡單計數談起,對於早期應用來講,簡單的計數算法確實夠用,後來隨着業務的發展細化,簡單計數粒度不夠細,因此須要有相似滑動窗口這種效果的限流,也就衍生出了令牌桶和漏桶兩種限流算法。
最後放上一個不錯的記憶法——艾賓浩斯記憶規律,嗯就是小時候書上介紹的那個。新知識學習以後,分屢次,每次不一樣間隔的去複習,大概十來次就能較好的將短時間記憶轉化爲長久記憶了。並且學過以後,第二遍開始從新複習就簡單多了,由於都理解過並整明白了,再從新複習更容易,更快,更省時。
以前考研的時候,背單詞就隱約有用到這種方式。整本單詞書,第一遍先花個三個月背一遍。以後,第二遍開始就愈來愈短,愈來愈快(這都什麼虎狼之詞)。前些時候背誦《道德經》也是相似,用了個APP,把天天背誦好的篇章截個圖放到這個APP中,而後它會根據艾賓浩斯曲線的規律節點,按期提醒你複習。你要作的就是當它提醒的時候,打開快速默唸一遍,默寫一遍就能夠勾掉了。仍是那句話,第二遍越到後面,所花時間 就愈來愈短,愈來愈快。
以上,關因而學習方式和記憶方法的一些經驗分享。
最後再說句,任何工做和學習都是須要背誦記憶的,以此爲基礎來進行創做、推理和總結。好比何潔,他也是背過了大量的棋譜以後,再結合自身的想象力和邏輯能力,纔有精湛的棋藝;好比鋼琴家,也是須要背大量的琴譜、*,以後基於此再結合生活經驗和靈感,來進行創做。巧婦難爲無米之炊,腦中記憶的內容就是咱們的大米,只有擁有大米,纔有作出香噴噴的米飯的前提。而且大腦擅長的就是記憶,他就像是緩存,以前推理過的經歷過的直接緩存在大腦中,以後若是再次碰見,直接查出來返回便可。
之因此還要再囉嗦的說下關於人盡皆知的記憶方法,是想強調任何學習和工做,它首要作的就是先去記憶,背一些概念。因此學習新知識的時候,遇到太多的概念不用慌,先背下來,背不住的就記在小本本上,常回顧。背到必定量以後就能產生質變,以後各類脈絡也就慢慢打開了。
若是你以爲這篇內容對你還蠻有幫助,我想邀請你幫我三個小忙: