<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                你好,我是楊曉峰。今天是周末,我們稍微放松一下來聊聊“Java 核心技術”之外的內容,正好也借這個機會,兌現一下送出學習獎勵禮券的承諾。我在每一講后面都留下了一道思考題,希望你通過學習,結合自身工作實際,能夠認真思考一下這些問題,一方面起到檢驗學習效果的作用,另一方面可以查漏補缺,思考一下這些平時容易被忽略的面試考察點。我并沒有給出這些思考題的答案,希望你通過專欄學習或者查閱其他資料進行獨立思考,將自己思考的答案寫在留言區與我和其他同學一起交流,這也是提升自己重要的方法之一。 截止到今天,專欄已經更新了 15 講,走完了基礎模塊正式進入進階模塊。現在也正是一個很好的時機停下來回顧一下基礎部分的知識,為后面進階的并發內容打好基礎。在這里,我也分享一下我對 Java 學習和面試的看法,希望對你有所幫助。 首先,有同學反饋說專欄有的內容看不懂。我在準備專欄文章的時候對一些同學的基礎把握不太準確,后面的文章我進行了調整,將重點技術概念進行講解,并為其他術語添加鏈接。 再來說說這種情況,有人總覺得 Java 基礎知識都已經被講爛了,還有什么可學的? 對于基礎知識的掌握,有的同學經常是“知其然而不知其所以然”, 看到幾個名詞聽說過就以為自己掌握了,其實不然。至少,我認為應該能夠做到將自己“掌握”的東西,**準確地表達出來**。 愛因斯坦曾經說過,“如果你不能把它簡單地解釋出來,那說明你還沒有很好地理解它”。了解 - 掌握 - 精通,這是我們對事物掌握的一個循序漸進的過程。從自己覺得似乎懂了,到能夠說明白,再到能夠自然地運用它,甚至觸類旁通,這是不斷提高的過程。 在專欄學習中,如果有些術語很陌生,那么了解它就達到了學習目的,如果能夠理解透徹達到掌握的程度當然更好。樂觀點來看,反正都是有收獲,也完全不必過分擔心。 從學習技巧的角度,每個人都有自己的習慣,我個人喜歡動手實踐以及與人進行交流。 * 動手實踐是必要一步,如果連上手操作都不肯,你會發現自己的理解很難有深度。 * 在交流的過程中你會發現,很多似是而非的理解,竟然在試圖組織語言的時候,突然就想明白了,而且別人的觀點也驗證了自己的判斷。技術領域尤其如此,把自己的理解整理成文字,輸出、交流是個非常好的提高方法,甚至我認為這是技術工作者成長的必經之路。 再來聊聊針對技術底層,我們是否有必要去閱讀源代碼? 閱讀源代碼當然是個好習慣,理解高質量的代碼,對于提高我們自己的分析、設計等能力至關重要。 * 根據實踐統計,工程師實際工作中,閱讀代碼的時間其實大大超過寫代碼的時間,這意味著閱讀、總結能力,會直接影響我們的工作效率!這東西有沒有捷徑呢,也許吧,我的心得是:“**無他,但手熟爾**”。 * 參考別人的架構、實現,分析其歷史上掉過的坑,這是天然的好材料,具體閱讀時可以從其修正過的問題等角度入手。 * 現代軟件工程,節奏越來越快,需求復雜而多變,越來越凸顯出**白盒**方式的重要性。快速定位問題往往需要黑盒結合白盒能力,對內部一無所知,可能就沒有思路。與此同時,通用平臺、開源框架,不見得能夠非常符合自己的業務需求,往往只有深入源代碼層面進行定制或者自研,才能實現。我認為這也是軟件工程師地位不斷提高的原因之一。 那么,源代碼需要理解到什么程度呢? 對于底層技術,這個確實是比較有爭議的問題,我個人并不覺得什么東西都要理解底層,懂當然好,但不能代表一切,畢竟知識和能力是有區別的,當然我們也要尊重面試官的要求。我個人認為,不是所有做 Java 開發的人,都需要讀 JVM 源代碼,雖然我在專欄中提供了一些底層源代碼解讀,但也只是希望真的有興趣、有需要的工程師跟進學習。對于大多數開發人員,了解一些源代碼,至少不會在面試問到的時候完全沒有準備。 關于閱讀源代碼和理解底層,我有些建議: * **帶著問題和明確目的去閱讀**,比如,以 debug 某個問題的角度,結合實踐去驗證,讓自己能夠感到收獲,既加深理解,也有實際幫助,激勵我們堅持下來。 * **一定要有輸出**,至少要寫下來,整理心得,交流、驗證、提高。這和我們日常工作是類似的,千萬不要做了好長一段時間后和領導說,沒什么結論。 大家大都是工程師,不是科學家,軟件開發中需要分清表象、行為(behavior),還是約定(specification)。喜歡源代碼、底層是好的,但是一定要區分其到底是實現細節,還是規范的承諾,因為如果我們的程序依賴于表現,很有可能帶來未來維護的問題。 我前面提到了白盒方式的重要性,但是,需要慎重決定對內部的依賴,分清是 Hack 還是 Solution。出來混,總是要還的!如果以某種 hack 方式解決問題,臨時性的當然可以,長久會積累并成為升級的障礙,甚至堆積起來愈演愈烈。比如說,我在實驗 Cassandra 的時候,發現它在并發部分引用了 Unsafe.monitorEnter()/moniterExit(),這會導致它無法平滑運行在新版的 JDK 上,因為相應內部 API 被移除了,比較幸運的是這個東西有公共 API 可以替代。 最后談談我在面試時會看中候選人的哪些素質和能力。 結合我在實際工作中的切身體會,面試時有幾個方面我會特別在乎: * **技術素養好,能夠進行深度思考,而不是跳脫地夸夸其談**,所以我喜歡問人家最擅長的東西,如果在最擅長的領域尚且不能仔細思考,怎么能保證在下一份工作中踏實研究呢。當然這種思考,并不是說非要死扣底層和細節,能夠看出業務中平凡事情背后的工程意義,同樣是不錯的。畢竟,除了特別的崗位,大多數任務,如果有良好的技術素養和工作熱情,再配合一定經驗,基本也就能夠保證勝任了。 * **職業精神,是否表現出認真對待每一個任務**。我們是職場打拼的專業人士,不是幼兒園被呵護的小朋友,如果有人太挑活兒,團隊往往就無法做到基本的公平。有經驗的管理角色,大多是把自己的管理精力用在團隊的正面建設,而不是把精力浪費在拖團隊后腿的人身上,難以協作的人,沒有人會喜歡。有人說你的職業高度取決于你“填坑”的能力,我覺得很有道理。現實工作中很少有理想化的完美任務,既目標清晰又有挑戰,恰好還是我擅長,這種任務不多見。能夠主動地從不清晰中找出清晰,切實地解決問題,是非常重要的能力。 * **是否 hands-on,是否主動**。我一般不要求當前需要的方面一定是很 hands-on,但至少要表現出能夠做到。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看