# Shopback 面試 面試時間兩個小時,分成兩個階段工程師面試與工程主管面試,原本說會考百般題但是沒有考應該是覺得我太廢惹QQ **階段一: 三位工程師面試 時間一小時** 面試官 Linkedin,真的都是在業界超有經驗的人: [Kevin](https://www.linkedin.com/in/powenhsiao/?lipi=urn%3Ali%3Apage%3Ad_flagship3_search_srp_people%3BetL3EVZ9Tc%2Bpd0%2FCiKTkYA%3D%3D&licu=urn%3Ali%3Acontrol%3Ad_flagship3_search_srp_people-search_srp_result&lici=JZJJD5S7QpuD6W9WqDX9hA%3D%3D) [Ian](https://www.linkedin.com/in/ianyuhsunlin/?lipi=urn%3Ali%3Apage%3Ad_flagship3_search_srp_people%3BafKYw48QQu2tDHtl4PDV7w%3D%3D&licu=urn%3Ali%3Acontrol%3Ad_flagship3_search_srp_people-search_srp_result&lici=46LT2DtBSgS9Rlop38gvyQ%3D%3D) 簡短自我介紹後,開始從履歷上問問題。下面所有問題不會的地方補充在[這裡](https://hackmd.io/9PoRwqgxTwu9tK7gWvHh7g)。 * **請說明怎麼用 HTTP request method 設計你專案中的 API** * **HTTP request POST/ GET 差別是什麼?** 只回答了帶值的差別,一個放在 URL 一個放在 BODY。被追問還有沒有,我回答不知道。 這一題 Stone 有說好像可以用冪等性的角度去回答。 [答案參考](https://medium.com/@totoroLiu/http-post-%E5%92%8C-get-%E5%B7%AE%E7%95%B0-928829d29914) * **STYLiSH 的 Load test 怎麼做? 如何優化系統?** 大致上講了一下 artillery 的用法,還有測試的流程(先取得首頁 API,再去打第二次 product detail API)。系統架構上用了 Load balancer 去增加,最快效能雖然變慢了可是平均效能跟最差狀況變好了。然後就被追問有沒有在程式碼上面做效能優化?我回答沒有,但其實應該要講說有用 redis 做Cache 跟 MYSQL 有加 index 的(雖然那是測試前就做了,可是感覺可以講出來嘴一下)。 * **Redis 用來幹嘛?** 我說 STYLiSH 用 Redis 做 Cache。個人專案用 Redis 做 session 來防止觀看次數作弊的可能。因為講到觀看次數作弊防禦機制,所以又繼續追問下去各種繞過作弊的方法問我怎麼防禦(這部分有興趣再直接問我因為有點細節),這個問題幾乎每個面試官都說過破解方法,但沒有人說怎麼做最好XDDD。 * **為什麼用 ORM,好處是什麼?** * **為什麼選擇 MYSQL?知不知道什麼是正規化?能不能畫出你專案的 Table 關聯?** 講完之後就問我有考慮過用 MongoDB 嗎?因為我的專案其實用NOSQL比較合適。 我說有,可是當時候有開發時程壓力所以選擇用自己最熟悉的 MYSQL。還順便嘴一下用 ORM 的好處是未來要用 MongoDB 語法蠻像的。 * **知不知道 Transaction 是什麼?ACID?** 我這邊完全忘記了 XDD 當下覺得無地自容來鬧的 * **知不知道 MYSQL 有什麼引擎?差異分別是什麼?** 只回答了InnoDB,差異在 InnoDB 的 Index Tree 是 B+tree,其他就不知道了。 [如何查找自己的 DB 有支援什麼引擎](http://n.sfs.tw/content/index/10656) * **知不知道要怎麼樣在 MYSQL 存多國語言不會造成亂碼?** 設定編碼 UTF-8_mb4 * **SocketIo 是什麼?請說明 WebSocket 協定跟 HTTP 協定,不用 WebSocket 能不能做即時同步?** 這邊就稍微提到 polling 跟 long-polling * **有沒有對 socketIo 做過 load test?** 回答沒有,可是我猜他會想問 socketio server 承載的問題所以就說明一下如何建置 muti-instance 的 socketio server。 * **你怎麼使用 GIT/ GITHUB?說明一下流程?有沒有做過 PR?解決過 conflict 嗎?知不知道 GIT/ GITHUB 的原理?** 最後一題問的人好像也覺得自己問太難,決定自己解釋,不過我根本沒聽懂只是猛點頭。 * **換我問問題** 1. **未來會不會有新的軟體 feature?** 有!很多,但是都不能告訴你! 2. **工作流程?** 跑 Scrum,一個禮拜一次會議,PM 規劃 Story,開發團隊依據 story 切 task,unitest 看需求緊急程度決定要不要開發,太急就以後再開發,功能施作完成後交給 QA 測試,然後丟給 DEVOPS 發佈,因為有專門的 DEVOPS 所以 server 有緊急狀況不會找上你,不需要 on-call。 3. **團隊分工?** 用產品線來分團隊,所以每個團隊都會有自己的前後端APP,然後也會很常跟國外單位合作。 4. **對新技術的態度是?** 想要用新的技術就要先研究好,以各單位的同仁能夠上手維護為主。 5. **有讀書會嗎?** 會有技術分享兩周一次,想開讀書會就開。 **階段二:工程師主管面試** 面試官 Linkedin: [Eva](https://www.linkedin.com/in/eva-ou-23628044/?lipi=urn%3Ali%3Apage%3Ad_flagship3_search_srp_people%3BkgY7Lm2fTo%2BX7yFNlXNDjA%3D%3D&licu=urn%3Ali%3Acontrol%3Ad_flagship3_search_srp_people-search_srp_result&lici=%2F533emmuQ%2Bipj7fec12BhA%3D%3D) 再自我介紹一次,開始問問題,全部都是問個人特質經歷相關沒有技術相關。 * **在 School 遇過最大的挫折?如何解決?** * **co-working project 有沒有跟同學爭吵過?如何解決?** * **詢問以前的工作內容,平常都在做什麼事?** * **黑客松競賽做了什麼,擔任什麼角色?** * **根據你的自我介紹還有以前的工作經驗,我覺得你當產品經理就好了為什麼想當工程師?** * **有沒有其他 offer 了?都是什麼樣的公司?** * **只讓我問一題因為時間不夠了** * **對新人的基本要求是?** 基本上 Shopback 還是在快速成長中,所以找人還是以 senior 為主,需要即時戰力原則上希望能進入後一個月開始有產出。QQQQQQQQQQQ