owned this note
owned this note
Published
Linked with GitHub
# 面試
## 為什麼想換工作
希望尋求更多發展和發揮自己的機會。
我們是作 ai 語音相關的 tts 服務,但主管主要都是關注在 ai 模型的成果,對於實際應用的需求和商務模式,沒有太多規劃和思考。到最後設計的應用的需求就只是單純的如何使用 app 操作這些 ai 服務。
我們的 ai 服務是使用者登入後,可以錄製 411 句句子,然後開始訓練模型,未來只要輸入文字和選擇模型,就可以產生自己的聲音。 所以 app 內就是讓使用者看到句子, 錄音,送出訓練和等待,送出文字產生聲音...都是些很直觀的功能。再加上主管沒有軟體需求迭代的概念,所以對於應用的需求就一直停留在這。
另外,在我工作的這兩年, 上線時間已經延後了 4, 5 次,原因就是主管主觀認為 ai 模型產生的聲音還不夠好聽,還不要上線。所以 app 和系統完成後,都一直停留在公司內部自己使用,還沒有發布到市場上進行驗證。
總之,想換工作的原因是希望尋求更多發展和發揮自己的機會。
(還有原本部屬在 aws 上,最近很有可能要拉回本地部屬)
why aws to local?
## 公司工作內容技術
### aten
這個專案已經開發兩年,有一個前後端沒有完全分離,用 python starlette + vue 開發的網站,然後用 http 的方式分派任務丟給 worker 。
架構主要分成執行商業邏輯的主要 server 和執行 ai 任務的 worker。
主要 server 使用 python 的 starlette 框架來開發,使用者資料存在 postgresql database 內。執行商業邏輯的 server 收到 tts 任務後,就是放到 rabbitmq 上排隊,讓其他有 gpu 資源的 worker 去慢慢消化。tts 任務完成後再 pub-sub 通知主要 server。
而 tts 完成後產生的音檔和每個使用者的語音 ai 模型,會存在一個 nfs server 上,這個 nfs server 在主要 server 和 workers 中都可以存取。
另外,產出的 log 也會寫入到 es 內,方便觀看和 debug。
pg, rabbitmq, es, nfs, secret manager 使用 aws 的服務,server 和 worker 則是都容器化,部屬於 eks 內。
公司內有自架 gitlab ,推上去後觸發 gitlab ci 和 gitlab runner 自動跑測試和自動 build image, push 到 ecr, 之後再手動用 kubectl 連 k8s cluster,並重新啟動 development。 (這段可自動化)
(公司不想多花錢,所以都是預先開好的 ec2 instance 們,沒有使用 auto scaling)
why rabbitmq?
學習曲線比 kafka 緩和
這種東西的市場不可能像是電商一樣,會有很大的流量, pm 也定義每日活躍使用者大概是 100,其實不是很高,所以在技術選型時就沒選 kafka。
why no s3?
因為想掛在 file system, 讓 ai engineer 直接取用,他們不必去理解如何從 s3 拿到檔案。
### biggo
8 個月
分成兩個部份
一開始進去的時候,就是單純用 python 寫爬蟲,然後用 crontab 設定爬蟲執行的時間,爬完的資料會寫成 pickle 檔,另外用其他 script 定期把資料寫入到 es 內。
寫爬蟲其實人力需求很大,當時甚至找了很多實習生來專門寫爬蟲。因為各網站常常都在修改,當時的工作內容就是檢查產生的 logfile 中有沒有 error,然後去開 issue 並修改爬蟲程式,都沒問題的話就繼續寫新的網站的爬蟲。
所有爬蟲程式撰寫, 設定執行的時間,這些工作都要由工程師來完成。
這樣的架構後來就慢慢亂掉,人力需求變超高,然後 crontab 設定的越來越雜亂,沒有系統化的安排爬取的時間。
所以後來就和主管規劃了爬蟲管理後台,由我主要開發 api 和後台,另外有一個前端工程師開發 chrome extension 部份。
主要架構是有一台機器部屬了爬蟲後台,另外多台機器上面都各部屬一個簡單的 server,負責接收爬蟲任務和回傳狀態。
爬蟲管理後台使用 python django 開發,大量的使用到 django admin 的界面。 BD 可以使用後台的管理帳號在 chrome extension 內登入。在 chrome extension 內,BD 可以建立爬蟲設定檔,直接在頁面上點選要爬的 elements ,並把相對應的 css selector 存起來,只需要簡單的教育訓練就可以設定,不需要去寫各種 css selector。
登入後台後,可以使用界面設定各個爬蟲執行的時間,原本要使用 terminal 設定 crontab,變成在網頁後台設定,就可以自動寫入到 crontab 內。固定的時間到, crontab 內就會打一個 api 給後台的 server,送要爬的網站 id 過來,後台 server 就會去每一台機器尋找有空檔的,把爬蟲設定檔取出並丟過去,機器就會開啟 selenium 並執行爬蟲。
在後台 server 中,將爬蟲設定檔存在 es 內,其餘使用者資料和網站 id ...等就儲存在 pg 內。
在爬蟲後台可以設定爬蟲執行時間, 檢視爬蟲的紀錄,點選按鈕直接執行爬蟲,使用者登入登出。
## vg
ios 開發的後期其實就慢慢發現自己對刻畫面, ui 的部份還好,對於軟體架構, 資料庫, 雲端的部份更有興趣。
這家公司的老闆也是以前在好想工作室認識的朋友的朋友,是一個富二代,台灣人但長期住在美國。他創了這家公司在美國,台灣就設分公司,讓我那個朋友來管理。
那時的定位是美國公司是家 VC, 台灣這邊就是負責提供他投資的公司的軟體服務。
我朋友就找我過去,主要用 python 的 django 做後端開發,弄 aws 部屬這樣。
因為剛開始,那時架構滿簡單的,就是把 server, 前端, db 都部屬在 ec2 內而已,然後 cicd 用 aws 的 code pipline 。
(codepipline -> codebuild(buildspec) -> codedeploy(appspec))
(而我原本就會寫 Python, 以前是用他來寫爬蟲,把資料放在自己的 app 內。)
中間做的第一個案子是公司內部的管理系統,類似 erp ,開發了員工管理, 報帳, 請假...那些系統....但最後公司就收掉了,所以產品也沒上線。
收掉的原因是因為老闆的爸爸身體不好,所以他要回去接家業,只能把這家公司收掉。
## bummp
是一個獨立音樂的社群平台,有 ios, android 平台,我是負責寫 ios 的部份
中間就是討論, 訪談, 找痛點, 開發, 推廣, 接受一些採訪什麼的...
那時大家都滿菜的,一直開發新功能,但就是沒找到一個很合適的商業模式,就磨了兩年,後來就停止了。
## 怎麼會轉軟體工程師
讀書時候就有寫程式,都是用來做資料分析,沒有做應用端的程式。
第一份工作想說想找多與人接觸的工作,才會當科技業的 PM, 因為可以接受新鮮人。
我也喜歡當 pm, 只是在台灣科技業當 pm 比較無趣,因為是代工廠,工作內容是著重在盯著工廠把產品量產出來,良率低成本低就好,而 rd 就是照著客戶要的需求把東西設計出來,面板也是滿固定的東西,所以需求也沒什麼好來來回回討論的。
後來離職後剛好我朋友在台南的好想工作室接前端案子,我當時就是用 iphone 和 mac,他們那邊也有接 ios 案子的,就問我要不要過去順便學和一起做,才開始正式踏入這個領域。
在那邊就是持續接 ios 的案子,同時也跟在那邊認識的設計師和後端,組團參加政府的比賽,得到些獎金,就一起創業做接下來的 bump。
## 自我介紹
我叫王彥龍,有 5 年多的軟體開發工作經驗,前 2 年專精於 ios 開發,後來發現對軟體架構, 資料庫, 雲端更有興趣,因此轉為後端工程師,目前有 3 年多的 Python 後端開發經驗。
我目前的工作主要做後端程式開發和 AWS 伺服器維運,與 App 工程師, AI 工程師, pm 和設計師進行合作,開發 AI 語音合成的 App (tts)。
空閒的時候,我也喜歡研究新技術和開發個人專案,將想學的技術學習後並實際運用在個人專案上,以加深我對新技術的掌握度並磨練我的學習能力。
## 自我介紹英文
Hi, my name is Yen Lung Wang, you can also call me Jerry. I have more than 5 years of experience in software development, the first 2 years I specialized in iOS development, then I found more interested in software architecture, database and cloud, so I changed my speciality to backend development, and now I have more than 3 years of experience in backend development using Python.
My current job is mainly backend development and AWS management, working with App engineers, AI engineers, pms and designers to develop an AI voice synthesis app (TTS).
In my free time, I also like to research new technologies and develop personal projects.
Learning the technologies that I want to learn and applying them to my personal projects can deepen my understanding of new technologies and practice my learning ability.
## 工作內容介紹
主要使用 python 做後端開發,與 app 工程師, pm 和設計師合作。ai 的部份與 ai 工程師合作,將 ai 工程師提供的 ai 模型包成 worker 在 tts 服務內使用。
另外也負責規劃整個後端和 tts 服務的架構,並部屬在 aws 上。
同時也將部屬的流程, 開發的 api 們全部文件化。
## 工作內容介紹英文
I mainly used python for backend development, worked with app engineers, pms, designers and ai engineers.
The other part of my job was to package the ai models as workers for using in the tts service.
I am also responsible for planning the entire backend and tts service architecture and deploy them onto AWS.
I also documented all processes of deployment and apis.
## 問題
為何會有職缺
薪資結構, 加薪方式, 獎金
職等, 升遷方式
同事組成
會跟哪些部門合作
是團隊合作還是單打獨鬥
開發流程
時程訂定
code review
技術分享
主管做多久, 主管技術專業在哪
遠端文化, 目前的挑戰, 大家都喜歡遠端嘛, 未來遠端政策
產品需求來源
產品使用量
開發和維護的比例
會有機會碰到維運嘛?還是會有專門的 sre?
辦公室氣氛?是否有工程師文化?
---
https://www.youtube.com/watch?v=0YG3vo78gSM
https://www.youtube.com/watch?v=6QGuf0O1j4E
https://www.youtube.com/watch?v=NBi66VNHW18
---
1. 電影搜尋, 登入, 上傳照片 & 心得(公開, 私人)
2.
https://github.com/bxcodec/go-clean-arch
https://github.com/caohoangnam/go-clean-architecture
https://github.com/adigunhammedolalekan/go-contacts
https://github.com/superj80820/2020-ithelp-contest/tree/master/DAY07
https://ithelp.ithome.com.tw/users/20122925/ironman/3537
https://github.com/eminetto/clean-architecture-go-v2/blob/master/api/main.go
---
http://ec2-54-168-241-97.ap-northeast-1.compute.amazonaws.com/api
https://developer.mozilla.org/zh-TW/docs/Learn/Getting_started_with_the_web/HTML_basics#html_元素的組成
https://ec-aws-dev.signin.aws.amazon.com/console
fucking69ev!
jerry0420A
jerrywang