Dcard Backend Intern 面試心得
鼎鼎大名的Dcard在今年開了前端和後端的intern,都非常有競爭力。
我這次面試的是後端,這篇文章只會分享後端面試前的作業還有一面會問的內容,因為我一面完就被刷掉了🥲
作業 - 廣告投放API
這次的作業要用Go實作兩個API,一個是新增廣告,一個是查詢廣告。查詢廣告這支API要能夠達到10000QPS,然後還有條件篩選的功能。
我一開始用了酷酷的Encore框架來試試看微服務的感覺,有聽說Dcard是由很多個微服務組成的,所以想說用這個框架應該會有加分。
但是因為Encore有內建許多的middleware,我也不太知道要怎麼把它關掉,後來就換用Gin實作這個作業。
這個作業我覺得最難的地方是要達到10000QPS。首先要對系統設計有一些了解,知道怎麼實作才可以比較高效能。
我在這方面沒有很在行,但是用k6測出來的時候一開始的設計就有超過10000QPS了,所以我就沒有再做更多的優化。
這也導致我在面試的時候被問倒了。
一面
從Dcard表定的報名截止時間到收面試通知信大概過了3天左右,他們時間都會公布在Dcard Lab的IG,排的還蠻緊湊的。
剛進Dcard公司的時候他會先帶你看一下Dcard這間公司的歷史,然後導覽工作環境,大概15分鐘左右,有舒緩緊張的效果,這是我覺得Dcard和別人不一樣的地方。
HR關
HR關的時候會先自我介紹,然後問你應徵動機、遇過甚麼困難、怎麼解決、跟其他人合作的經驗,等等比較基本的問題。
他們也會跟你介紹Dcard的運作方式,還有實習生的流程等。
只要放輕鬆回答就好,HR們都很親切。
這關大概花了30分鐘。
技術關
技術關是由Backend team的兩個工程師來面試。
他們會先針對你的履歷的專案問你怎麼做的,簡單回答就好。
再來就是一連串的後端技術轟炸,他們問的題目都會從你用過的技術出發,然後再一步一步深入。
像是我有用過Nginx,他們會問我怎麼用、他還可以怎麼使用、有沒有用過他們的load balance等等。
大家都會問的問題可能是下面這些
ACID是什麼,I的不同級別有哪些
Go的goroutine怎麼用、和thread的差別
Go buffered/unbuffered channel差別
水平擴展資料分片問題,怎麼分片、怎麼合併 (我直接倒地)
說明SQL index
其他的應該都是看你的回答再問下去。
再來還有問作業實作的細節,還有問你是怎麼設計整個服務的。
我有在Database和快取之間加了一層singleflight防止快取穿透,但是沒有很了解他的原理,面試官問我的時候就答不太出來。
因為用的是Postgres資料庫,他們竟然問我Postgres的View要怎麼用,這東西我上次用是資料庫概論的作業,也不知道用這個有什麼好處,直接倒地。
最後也有考一題SQL白板題,跟join table和group by有關。也會問你跟left join還有inner join的差別。
這關花了整整一小時。
結語
我覺得Dcard的面試技術關真的問的很細,要有很多基礎知識才可以應付的來。
我這次就是因為基礎不夠扎實,很多問題都答不出來,真的很可惜。
不過我覺得Dcard的面試流程很好,HR關可以讓你放鬆,技術關可以讓你知道自己的不足,也可以學到很多東西。
收到感謝信大概是二面開始後的第3天,信裡面還有給你一些做得好的地方和可以進步的地方。
只能說各種地方都能感受到Dcara的用心。下次有機會還是會再試試看的!