Dcard Backend Intern 面試心得

鼎鼎大名的Dcard在今年開了前端和後端的intern,都非常有競爭力。

我這次面試的是後端,這篇文章只會分享後端面試前的作業還有一面會問的內容,因為我一面完就被刷掉了🥲

作業 - 廣告投放API

這次的作業要用Go實作兩個API,一個是新增廣告,一個是查詢廣告。查詢廣告這支API要能夠達到10000QPS,然後還有條件篩選的功能。

我一開始用了酷酷的Encore框架來試試看微服務的感覺,有聽說Dcard是由很多個微服務組成的,所以想說用這個框架應該會有加分。

但是因為Encore有內建許多的middleware,我也不太知道要怎麼把它關掉,後來就換用Gin實作這個作業。

這個作業我覺得最難的地方是要達到10000QPS。首先要對系統設計有一些了解,知道怎麼實作才可以比較高效能。

我在這方面沒有很在行,但是用k6測出來的時候一開始的設計就有超過10000QPS了,所以我就沒有再做更多的優化。

這也導致我在面試的時候被問倒了。

作業Github

一面

從Dcard表定的報名截止時間到收面試通知信大概過了3天左右,他們時間都會公布在Dcard Lab的IG,排的還蠻緊湊的。

剛進Dcard公司的時候他會先帶你看一下Dcard這間公司的歷史,然後導覽工作環境,大概15分鐘左右,有舒緩緊張的效果,這是我覺得Dcard和別人不一樣的地方。

HR關

HR關的時候會先自我介紹,然後問你應徵動機、遇過甚麼困難、怎麼解決、跟其他人合作的經驗,等等比較基本的問題。

他們也會跟你介紹Dcard的運作方式,還有實習生的流程等。

只要放輕鬆回答就好,HR們都很親切。

這關大概花了30分鐘。

技術關

技術關是由Backend team的兩個工程師來面試。

他們會先針對你的履歷的專案問你怎麼做的,簡單回答就好。

再來就是一連串的後端技術轟炸,他們問的題目都會從你用過的技術出發,然後再一步一步深入。

像是我有用過Nginx,他們會問我怎麼用、他還可以怎麼使用、有沒有用過他們的load balance等等。

大家都會問的問題可能是下面這些

  1. ACID是什麼,I的不同級別有哪些

  2. Go的goroutine怎麼用、和thread的差別

  3. Go buffered/unbuffered channel差別

  4. 水平擴展資料分片問題,怎麼分片、怎麼合併 (我直接倒地)

  5. 說明SQL index

其他的應該都是看你的回答再問下去。

再來還有問作業實作的細節,還有問你是怎麼設計整個服務的。

我有在Database和快取之間加了一層singleflight防止快取穿透,但是沒有很了解他的原理,面試官問我的時候就答不太出來。

因為用的是Postgres資料庫,他們竟然問我Postgres的View要怎麼用,這東西我上次用是資料庫概論的作業,也不知道用這個有什麼好處,直接倒地。

最後也有考一題SQL白板題,跟join table和group by有關。也會問你跟left join還有inner join的差別。

這關花了整整一小時。

結語

我覺得Dcard的面試技術關真的問的很細,要有很多基礎知識才可以應付的來。

我這次就是因為基礎不夠扎實,很多問題都答不出來,真的很可惜。

不過我覺得Dcard的面試流程很好,HR關可以讓你放鬆,技術關可以讓你知道自己的不足,也可以學到很多東西。

收到感謝信大概是二面開始後的第3天,信裡面還有給你一些做得好的地方和可以進步的地方。

只能說各種地方都能感受到Dcara的用心。下次有機會還是會再試試看的!

  1. 作業 - 廣告投放API
  2. 一面
    1. HR關
    2. 技術關
  3. 結語