ARTS 挑戰(第二週)

iVerywang發表於2019-03-31

每週完成一個ARTS: 每週至少做一個 leetcode 的演算法題、閱讀並點評至少一篇英文技術文章、學習至少一個技術技巧、分享一篇有觀點和思考的技術文章。(也就是 Algorithm、Review、Tip、Share 簡稱ARTS)

Algorithm

主要是為了程式設計訓練和學習。每週至少做一個 leetcode 的演算法題(先從Easy開始,然後再Medium,最後才Hard)。進行程式設計訓練,如果不訓練你看再多的演算法書,你依然不會做演算法題,看完書後,你需要訓練。關於做Leetcode的的優勢,你可以看一下我在coolshell上的文章 Leetcode 程式設計訓練 - 酷 殼 - CoolShell。

LeetCode 1. 兩數之和 解題語言 PHP

題:

 給定字串J 代表石頭中寶石的型別,和字串 S代表你擁有的石頭。 S 中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。

J 中的字母不重複,J 和 S中的所有字元都是字母。字母區分大小寫,因此"a"和"A"是不同型別的石頭。

示例:

輸入: J = "aA", S = "aAAbbbb"
輸出: 3

解:

class Solution {

    /**
     * @param String $J
     * @param String $S
     * @return Integer
     */
    function numJewelsInStones($j, $s) {

        $jArr = str_split($j);
        $sArr = str_split($s);
        $i = 0;
        foreach($sArr as $sItem){
            if(in_array($sItem, $jArr)){
                $i++;
            }
        }
        return $i;

    }
}

排名

執行用時 : 16 ms, 在Jewels and Stones的PHP提交中擊敗了97.44% 的使用者

記憶體消耗 : 14.2 MB, 在Jewels and Stones的PHP提交中擊敗了100.00% 的使用者

Review

主要是為了學習英文,如果你的英文不行,你基本上無緣技術高手。所以,需要你閱讀並點評至少一篇英文技術文章

What are some of the most basic things every programmer should know?

  • 糟糕的架構比程式碼更可能導致問題。
  • 最好的程式設計師在持續編碼。
  • 你需要花更多的時間去思考而非敲程式碼。
  • 總有一種更好的解決方案。(比如演算法題的答案)
  • 同行的 CodeReview 會使你的程式碼更完美。
  • 如果程式碼沒有測試就不要上線。
  • 不要重複造輪子。
  • 難以維護的程式碼,基本上沒什麼價值可言。

Tip

Tip:主要是為了總結和歸納你在是常工作中所遇到的知識點。學習至少一個技術技巧。你在工作中遇到的問題,踩過的坑,學習的點滴知識。

  • Mac 視訊剪輯軟體 Final Cut Pro
  • MySQL 的引擎原來是針對表的,InnoDB 按頁儲存資料,每頁大小 16k。因此欄位內容不宜過大,否則每頁儲存資料量少從而影響效能。
  • 資料儲存開銷:數字 > 日期/二進位制 > 字元型別;比如日期欄位:時間戳 > Datatime > char。
  • InnoDB 在建表時若未定義主鍵則會自動生成 6 個位元組的隱含主鍵。故最好人為定義主鍵。
  • 表結構設計時嚴禁設定預留欄位,因後期業務需要很可能不符合當時考慮。修改欄位和新設立欄位一樣費時。

    Share

Share:主要是為了建立你的影響力,能夠輸出價值觀。分享一篇有觀點和思考的技術文章。

最近因為市場環境不好,公司業務受到影響。所有技術都被停薪留職,也算是變相讓員工自願離職。下週開始 就要投簡歷了。回顧敲程式碼這幾年經歷的三家公司:

第一家公司的主要業務是 SAAS 平臺,出來以後才發現原來當時公司提供了接觸高併發的機會,公司的主營業務也涉及到很多小公司涉及不到的技術。但是當時浮燥,眼高手低。離開公司以後做了一段時間業務,但是高估了自己的能力和甄別事物的判斷力。中間脫離技術大半年也導致的自己杭州醫保斷繳費,2019年的購房計劃被延後了一年。這一年需要承擔房價上漲的風險。雖然結果是得不償失,但這段經歷也讓我意識到自己需要在技術有所沉澱。

第二家公司做的是 P2P 業務,小公司的人員架構也很簡單基本上就是每個端一個技術。沒有運維也就需要後端兼做運維,所幸遇到一個技術不錯的 JAVA ,跟著他的指導和自己的摸索一步一步把專案部署上線。遇到願意幫助你成長的同事,真是幸運。

第三家公司做的是屬於金融行業,當時有 3 個 offer。一家外包公司,另外兩家公司業務基本相同。因為 Laravel 對 後期學習 Java 有幫助,而且很希望深入學習一個框架。所以當時對 Laravel 框架情有獨鍾,而這家公司就是用的 Laravel。前後做了兩個專案:
第一個是汽車金融專案:汽車貸款和汽配商城( B2C )兩個模組。但是 1.0 版本上線後專案就擱淺了。另一個是小額貸款推廣平臺。通過兩個專案的實戰,對 Laravel 的運用熟練了還多。也養成了比較規範的編碼習慣。

後面兩家公司的業務都屬於賺快錢的行業,業務本身就屬於不可持續發展的模式。最終在這兩家公司被迫離職,現在來看就並非偶爾了。

工作的幾年裡接觸到了技術大牛-陳皓的文章,真是知道得越多不知道得就越多。重新審視了自己的技術規劃,在思考三五年之後的我應該是怎樣的職業狀態。眼下不應該一味地追求高工資,而是得踏實的在技術上有所沉澱,而且也不能被侷限與 PHP。因為客觀來看,PHP 的發展潛力確實有限。未來的計劃是好好學習基礎知識比如:HTTP協議,資料結構與演算法。而且發現英語對於程式設計師來說也很重要。

阿里前端於江水 寫過歷經 20 天,我終於完成了這份專為程式設計師編寫的英語學習指南對於學英語來說很不錯,接下來計劃跟著它學習英語。目前音標學的差不多了。近幾年也考慮 PTE

PTE 學術考試是於 2009 年 10 月 26 日推出的新一代的國際性英語水平測試,由金融時報的母公司英國培生集團以及 GMAT 的開發機構管理專業研究生入學考試委員(GMAC)共同研究主辦。

逛了下招聘網發現本科生比專科生多了很多面試機會。明年 10 月份也可以拿到本科學歷了。高併發這塊比較欠缺,所以之後會惡補這塊。

相信未來會越來越好!

本作品採用《CC 協議》,轉載必須註明作者和本文連結

善始善終 嗯!

相關文章