HackRank
理解題目
在刷題或是測驗時,解題前你必須先理解題目,並掌握確切的題目範圍,許多人會過於擔心、緊張,一看到題目就動手做,但卻忽略了真正的問題內容。若因此疏忽,很可能導致未依照規定回傳結果而沒有得分。
時間分配
常有測驗者會因為題目有趣、、或一開始就被題目卡住,導致後面的題目未完成,JECHO 會建議人選在一開始先大致將題型瀏覽一遍,再開始進行測驗。
**小提醒:若使用 Codility 為前測的企業,網頁會記錄整個 coding 流程,把求職者的思維模式、編寫過程完整地紀錄下來,以供考官綜合評量,因此請在 Codility 上編寫,以留下紀錄。
版面配置
避免雜亂的程式碼,排版不清可能會造成考官在檢視時不好閱讀,因此版面配置也是很重要的!
https://jecho.me/blog/codility-leetcode-hackerrank/
https://blog.techbridge.cc/2018/07/07/resrc-for-swe/
何謂「對症下藥」?~
1. 刷題最重要的事情是要先知道自己對於哪個主題的題目不太熟悉,需要多加練習。在學習資料結構與演算法的過程中,你一定會碰到你不熟悉的主題,或是比較不那麼融會貫通的演算法。此時你要做的事情是把他列出來,把最不熟悉的東西放在第一順位,排序好後接著進行下一步。
2. 找到不熟悉的主題後,以這個主題作為搜尋的關鍵字,找出所有與他有關的題目。以我自己為例,我自己對於dynamic programming很不熟,把dynamic programming作為query搜尋後,會得到如下圖得結果。
https://haren.medium.com/leetcode%E5%88%B7%E9%A1%8C%E6%96%B0%E6%89%8B%E5%85%88%E5%82%99%E8%88%87%E7%9B%B8%E9%97%9C%E7%9F%A5%E8%AD%98%E5%88%86%E4%BA%AB-681328997c86
=======
5個重點,幫助軟體工程師職涯成長
1) 資料結構與演算法的重要性
LeetCode不是資料結構與演算法DSA(Data Structure and Algorithm)課程,如果之前沒有在這方面的主題上做任何的準備,那會建議參加一些DSA的課程,學習基本知識,因為LeetCode沒有提供知識的教學。不過在具體的題目上,他能做到非常詳細的解答與說明。
為何說資料結構與演算法很重要?有紮實的數據結構基礎,對每個開發人員來說都是必不可少的,因為他能做到的事情太多了,舉一個例子,Rockstar遊戲公司的工程團隊,就曾經以簡化演算法的方式,幫助GTA V減少了70%的讀取時間。除此之外,網路上也有需多工程師透漏,改變演算法,除了能減少讀取時間,還能更清楚的紀錄資料。
2) 總有人知識比你淵博、經驗比你豐富
每次寫完一個程式、寫出答案時,都有無比的成就感,相信只要是軟體工程師,應該都體會過。但當你在LeetCode上完成題目時,再看看討論區,你的成就感馬上就煙消雲散了。因為厲害的人實在是太多了!有時候,你甚至還能看到比官方給出的答案更有效率的建置。
其實有使用LeetCode經驗的人都會說,你會有一半的時間,花在理解其他人的程式編碼,以及如何將它放到自己的建置內,讓自己的程式編碼更有效率。
重點是,在LeetCode的平台上,你會不斷的學習,不管是如何優化程式編碼、Debug等等,而開始上班之後更是如此。公司的前輩,除了在技術方面可以教你很多,心態方面也能協助你,使你在吸取知識,學習新東西,更加順利。所以加緊時間利用LeetCode先來熟悉這件事!
3) 邊界條件的問題可以毀了你美好的一天
在你真正開始工作之前,犯了錯誤,也沒有真正的風險。但是開始工作後,就完全不同了,因為你所生產程式編碼庫中,將有成千上萬的人與之互動,出了任何的錯誤,甚至是微小的影響、邊界條件,都可能會成為一個問題,並且有可能帶給客戶不便,甚至因而導致公司有所損失。
還好LeetCode上的練習場非常的卓越,每一個問題都有上百種測試方法,基本上已經包括了絕大部分的邊界條件的問題了。職場上,有些人會分享,那時候在用LeetCode時只是覺得方便,但開始工作後,才發現它能交給你的基礎有多重要。
4) 勤奮勝過天賦
Hard work beats talent when talent doesn’t work hard.
蒂姆·諾克
努力的平凡人,將會超越不努力地天才!這句話,尤其在使用LeetCode的時候,有深深的感受。其實很多人非常地聰明,但是久而久之,你會發現往往可以撐到最後,成功的人、拿到工作的人,是那些努力不懈的人!從LeetCode中,你可以學習到如何正確的使用一些工具,還可以學到如何開發出合適的結構來解決問題,這些都要靠不斷地努力練習,才會熟悉。
很多人在開始時,甚至連最簡單的問題都解不了。但是在不斷的練習中、學習新方法,一步步地越來越熟練。
網路上也有其他人分享過,當初為了進某一家公司,從使用已久Python需要轉成使用Java。當然一開始,一定會很多不習慣,而那也是大多人放棄的地方。但是LeetCode的切換程式語言,真的很方便,讓你可以用兩個語言交叉比對。所以只要願意努力、不怕辛苦,很快就可以上手了!
5) 規劃是軟體開發的非常重要的一部分
面對過實際面試中的問題後,你會很快意識到編碼只是軟體開發的一部分,而且有經驗的人也一定知道,在看完題目,立即編寫解決方案,是一個非常嚴重的錯誤。軟體開發充滿了意想不到的結果,面試考試時,問題常常會試圖通過提供模棱兩可或不完整的問題,讓你疑惑。
https://glints.com/tw/blog/leetcode%e5%88%b7%e9%a1%8c%ef%bc%9a500%e9%a1%8c%e5%be%8c%ef%bc%8c5%e5%80%8b%e9%87%8d%e9%bb%9e/
留言
張貼留言