3/28 ~ 4/3 週記
放連假,拿著相機紀錄當下
本週增廣見聞
連假讀了兩本書
這次讀了兩本,一天讀一本,看完一次寫下的簡單摘要。
第一本是「懶經濟」,主要是告訴我們該怎麼偷懶,而且強調這不僅不是壞事,甚至偷懶才是「比較聰明」的工作法。
另一本是「深度工作力」,作者認為深度工作會是讓你在工作上能夠脫穎而出的「必要關鍵」,盡量減少讓人分心的「雜事」,因為專注力會被白白消耗掉,要把注意力集中在那些「只有你能做」的事,做到最大的產出。
技術
Sliding Window 演算法
主要用來快速找出連續的SubString, SubArray,並找出符合條件的最小or最大值。時間複雜度為O(n),相較暴力窮盡的解法O(n³),速度快上許多。
該怎麼準備FAANG的面試?
FAANG為Facebook, Amazon, Apple, Netflix, Google,不只這五家,你可以替換為任一家軟體業的大公司,例如中國的百度、阿里巴巴等,目前就職於Google的工程師,分享他準備面試的經驗。
https://www.notion.so/FAANG-453a1151fdec433196caa59bf2d13d08
簡單來說最重要的有幾點:
- 準備好再去。
這些公司在聘僱上是「寧缺勿濫」,他們知道請到一個好的工程師,可以抵好幾個普通的工程師 - 熟悉資料結構與演算法。
雖然你之後不一定會用到,但他們會考你,多多練習leetcode上的題目,而且要知道原理,不是死背就好。 - 模擬面試。
讓自己習慣真實面試的那種「壓力」感,可以請朋友或是認識的人幫你,只要有個人坐在你前面就差很多了。
react function component & class component 的差異
https://blog.techbridge.cc/2020/06/13/class-function-component-and-useeffect/
重點
- 此文章用reCaptcha這個組件作為範例
- 其中有個function(reCaptcha的render函式)只能被「呼叫一次」(註冊一次)
- class component比較直覺簡單,因為組件在渲染之後,其中的methods不會再被重複呼叫,而且只需要呼叫一次,callback則不需另外處理
- function component比較不一樣的是,只要有props的onChange更新,其中的callback需要隨著更新,但是reCaptcha的render函式只能呼叫一次,所以需要用ref動態更新與抓取最新的callback
function ReCaptca = ({ onChange }) => {
//...
const callbackRef = useRef(onChange);
// 更新callback
useEffect(() => { callbackRef.current = onChange; }, [onChange])const handleCb = () => {
callbackRef.current();
};useEffect(() => {
const handleLoad = () => {
//...
callback: handleCb,
// 必須用綁定function的形式,每次都重新抓到最新的callback ref // 而非直接綁定ref,在第一次effect觸發之後,即便ref「被更新了」,
// 這裡面的ref「也不會更新」,因為早就被呼叫了!
}
handleLoad();
}, [])return (
<></>
)
}
雜談&回顧
分享一些看到的文章以及整理後的心得。
會閱讀但看不懂考題怎麼辦?
- 學科的整合
此文提到可以先用平易近人的文章,來引導學生進入該學科的領域範疇,接觸類似「科普文章」那種形式的教材,結合更貼近生活的範例。而非直接講結論或公式,或是一開始就給一堆專有名詞(F=ma, E = mc²),先讓學生們能夠去思考整體的內涵,到了解整個「脈絡」,再來閱讀該學科的課本,或許就能減少這些專門領域學科閱讀的障礙。
- 數位閱讀和紙本閱讀的差別
必須提升學生(大人也是)用網路閱讀的習慣。現在使用網路大多是「休閒娛樂」為主,用於線上學習和讀電子書的比例大約都只有「三成」。我認為這樣非常可惜,網路資源應該要被更多用在學習上,培養用數位裝置閱讀的能力,習慣將用途轉為「學習」,進而讓知識的獲取更加多元。
紙本與數位同樣都需要提取重點、整合推論…等,不過數位閱讀的主要差別在於讀者需要花「更大的力氣」去做訊息搜集、瀏覽整合,並且還要同時分辨資訊的正確性,這樣增加讀者更多的認知負擔,因此在不習慣數位閱讀的情況下,會比讀一般紙本書更加累人。這也是為什麼在做筆記或是深入閱讀時,紙本更受青睞的原因。(我自己也是,而且比較專心投入在閱讀上,更容易沈浸在該主題之中)
巷弄間品茶
喝茶大有學問 — 磨磨茶
不是烏龍茶就一定是「半發酵」,餐點的綠茶就是用烏龍茶製成的,所以我才問為什麼明明烏龍茶卻又是綠茶(笑。
原來茶葉品種與烘焙法是分開的,例如阿薩姆紅茶,只是因為阿薩姆這種茶葉品種「很適合」作為完全發酵茶,老闆也說過他喝過阿薩姆的「生茶」,實在不太好喝,我猜應該是挺澀的。
這就跟什麼人適合做什麼職業一樣,每個東西都有其「合適的用途」。
茶有分兩種「喫茶」(食茶)和「お茶を飲む」(飲用茶水),老闆雖然是說日本都是用「吃」的在說喝茶這件事,但我查了一下,其實也是用「お茶を飲む」在表達喝茶這件事。「喫茶」指的是「お茶を飲むこと」也就是說指的是「喝茶這件事」。而「食茶」則是在客家語或粵語中會出現,通常是在品嚐那些「不是用」茶壺沖泡茶葉的茶,而是吃那些用磨出來的,尤其是客家文化的「擂茶」就是如此(不過當時我是猜的,老闆還以為我是客家人(笑),是用「吃」的方式來品嘗擂茶,
而連同茶梗一起磨,是因為甜味在梗的部分,這樣磨出來比較「有梗」,喝起來比較甜。
雖然只是間小店,但整體很有氣氛,是間老屋改裝的小茶館。而且我最喜歡的是一開始老闆的簡短介紹,讓客人能夠知道店家的特色,為什麼要用磨的,而且為何是綠茶,跟日本抹茶(まっちゃ)有什麼差別,講一些茶葉的小知識,提供一個不是只有吃的「體驗」,也可以知道相關的故事,喝起茶來更能感到「歷史的韻味」。
餐點/飲料部分,很特別的是自製的「草莓」果醬+綠茶,乍看之下是個奇怪的組合,但偷聽到其他客人說的,好像還不錯,而且還沒攪開之前有點像是宇治金時的感覺…該不會就是刻意作成這個樣子吧? 🤔 早知道也點這個試試看了,不過可以想像是酸酸甜甜的草莓酸味,配上微苦的綠茶,品嚐起來應該挺特別的。
明明是可以避免的人為疏失
在本週的4/2,台鐵的太魯閣號發生了嚴重的出軌事故,最終造成50人不幸喪生。看到這起事件發生原因的來龍去脈之後,第一個想到的是,「便宜行事」終究會釀成大錯,或許就是這個樣子吧,可以說是「必然的偶然」。
雖然事故很嚴重,看了心中很難過,但想想自己也沒辦法幫上什麼忙,也只能盡量不關注太多的新聞報導,讓自己不想太多,只希望還有機會搶救回來的旅客能夠順利康復。
而自己目前唯一能做的事情,就是鞭策自己在做事時能夠盡可能地謹慎小心,不要因為快速方便就偷工減料,寫程式、做設計時做好自己該做的最基本要求,盡可能地將各種案例都做好測試,把系統完善到最穩定的狀態,不要給其他人留下「爛攤子」。
這讓我想到,現在公司沒有QC(品管測試人員),雖說公司目標是要有這個職位,做產品測試這件事,但到現在仍然沒有人做這件事,都是工程師自己測一測、PM按一按,覺得OK就丟給客戶了,但實際上不管工程師還是PM,都沒有時間(也不該)做窮盡的測試,工程師能做好單元測試就已經謝天謝地了,而PM也只會依照規格需求去審核,所以不會將所有的可能性都測過。然而這樣的後果就是,常常會被客戶、使用者發現一些「錯誤」。
把需求做得好,並「不會」增加好感,畢竟這只是理所當然,但每一次錯誤都會「大幅降低」好感,因此只要每次發生錯誤之後,沒有好好地彌補,漸漸的對方就會失去信心。想想有個人每次都跟你承諾會做到好,但好幾次的結果都發生了些小差錯,即便這些錯誤不大,但還是讓心裡有些疙瘩,漸漸地產生懷疑,也就不太信任對方了。
因此在聘用員工、選擇廠商甚至是選擇伴侶,都需要在意那些「小細節」,仔細審核對方的行事原則,是否有一定的標準,會不會在意安全與細節,還是常常在「瞎忙」,完全不在意安全的處理,小細節也都大而化之的帶過,隨便應付了事而已?
我認為這些都是挑選對象的必要關鍵,俗話說「寧缺勿濫」正是如此,遇到那些「不適合」的人,當下做了些「看起來好像OK的事」,但之後常常還要花時間替這些人善後「擦屁股」,這可真的是得不償失。