面試問答
如果要做一個每分鐘限制60個連線數的功能,你怎麼處理?
一開始本來提redi...
敲定面試時間後,於約定時間,HR會先透過google meeting 說明面試流程,
接著與一位資深工程師 & 部
門主管進行面試,
首先是30分鐘的Leetcode白板題,難度偏easy,但優化減少時間複雜度要想一下。
時間到之後先做自我介紹,再來面試官會根據自介去問問題。
問答結束後開始介紹公司產品與職位工作內容,最後等hr進來做個結尾,等待二面,一面歷時約2小時。
二面與資深技術副總面試,流程與一面相同,hr介紹完面試流程後,隨即與技術副
總面試,過程中較為關心為何選擇此職位及職涯發展方向,結束後由hr作結尾,二面歷時約1小時。
面試問答
如果要做一個每分鐘限制60個連線數的功能,你怎麼處理?
一開始本來提redis hyperloglog來處理,但面試官認為其實不需要用到,
可以使用redis incr,正解應該是使用當下時間yyyy/mm/dd hh:ii作為key,
只要有用戶使用就對這個key+1,且設定ttl為60s,讓它自然過期。
會不會使用原生redis command & sql command
主要是因為裡面使用php slim framework,redis & sql可能都要自己下原生指令,沒
有ORM可以使用,面試官也透漏面試過不少框架使用者,比如:Laravel等等,他們不
太會下原生指令,所以這點滿重要的,我以前有寫過Native php,加上時常會需要使
用GUI下指令查表,對sql query還是有一定程度理解,redis 亦同,時常會上機器透
過cli 下查詢,面試當下也據實回答。
可否分享遇過最困難的挑戰?以及如何克服?
這點每個人答案都不同,於是我只把題目丟出來。
今天要設計一個留言板,且每篇post底下會有reply,你會怎麼設計資料表
我本來提開兩張表,一張post一張reply,且關係為一對多,
面試官馬上問說,那如果合併到一張表呢?
我本來先提把reply內容變成json,塞到post表的欄位中,
但由於會需要查詢,用json的話會慢很多,
最後面試官提出他的想法,把資料攤平,
把reply欄位加到post表中,一個post是一條row data,
一個reply也是一條row data,reply 的row data再補上一個post_id,
這樣取post資料時,可以透過relation查出關聯 reply資料,這樣搜尋上會比較舒服
前面有提到,你把重要資料放redis,那redis炸掉時,你有配套措施嗎?
因為沒處理過這種狀況,我直接炸開...,
面試官在意的是,因為redis使用記憶體存放資料,
炸掉的話資料就全部不見,
不過說不定可以做master->slave,
slave定時同步master,slave只負責讀,master負責寫,
除非全部同時炸掉,才會資料全部不見
面試建議
此職缺主要是開發與維護 浪live,主要使用php slim開發,可能也會需要golang/node.js,偶爾會需要支援node.js,golang主要用於refactor php API
面試前建議刷一下題目,白板題面試官會跟你互動,給予引導
一二面的面試官人都滿不錯,很願意給予指導