最近去「美商訊能集思」面試「Senior IoT 後端工程師」的紀錄。
職缺內容(104)
工作內容
- 工作內容
- IoT平台的後端開發
- 基於已有的系統延伸功能
- 在原有的架構新增功能
- 開發獨立的Micro Service
- 責任
- 與團隊合作,設計規劃開發平台的整體架構
- 提升解決方案的效能,穩定性,可擴充性和發展彈性
- 與產品開發、專案支援以及QA等團隊密切合作,合作產出軟體產品
- 熟悉Agile開發流程,並配合CI/CD,DevOps等開發模式
- 能快速學習且適應變化,以滿足不斷改變的環境需求
- 與團隊及外部合作夥伴保持良好的關係
- 熟悉並運用雲相關的技術與服務
- 支援Core Agile團隊的開發工作,例如幫助維護backlog, 優化, sprint planning, and sprint
- 確保符合標準和開發的最佳方法,包括系統更新管理, 版本更新管理, 及程式碼管理
- 主要條件
- 熟Java / Sprint Boot
- 熟PostgreSQL
- 熟RESTful API設計
- 會使用Maven
- 會使用Docker / Docker compose
- 熟Linux操作
職務類別
軟體設計工程師
工作待遇
年薪1,000,000元以上 (固定或變動薪資因個人資歷或績效而異)
工作性質
全職
上班地點
台北市信義區松仁路277號11樓
管理責任
不需負擔管理責任
出差外派
無需出差外派
上班時段
日班
休假制度
週休二日
可上班日
不限
需求人數
1人
條件要求
工作經歷
5年以上
學歷要求
大學
科系要求
不拘
語文條件
不拘
擅長工具
Linux、Github、Git、Java、PostgreSQL
贊助提升專業能力
工作技能
系統架構規劃、軟體工程系統開發、軟體程式設計、資料庫程式設計
其他條件
- 加分條件
- 使用過MQTT
- 使用過Kafka
- 使用過gRPC
- 使用過Zookeeper
技術問題
因為隔一天才紀錄有些問題忘了。
Q:履歷有寫過Java和Go,那這兩語言有什麼差異?
A:回答Struct與Class、原始碼結構、命名慣例、介面實作方式,方法定義,Pointer,Concurrency實作等差異,還有Go沒有多載。
Q:説説前份工作做了那些服務?
A:老實說前份工作真的想不起來做了微服務中的什麼服務,對於業務邏輯真的毫無印象。
Q:有沒有用過Maven的Module?
A:沒有,工作中沒用到或別人設定好了,我有提到Parent pom(記得多年前練習寫過「使用Eclipse建立Maven Spring Boot多模組專案」),但面試官說不是。
Q:有沒有用過Docker?
A:在工作中少碰到,只知道基本概念。
Q:什麼是Kafka?
A:沒用過,我記得是一種資料庫。
Q:Override和Overload?
A:Override:複寫父類方法實作;Overload:方法參數不同可有多個相同命名。
Q:之前工作中怎麼設計API URL?
A:舉個之前工作的例子。
Q:RESTful設計原則?
A:不知道,沒研究過,通常會遵循現存程式的慣例。
Q:Jaskson函式庫回傳資料若為null則不包含在JSON怎麼設定?
A:有annotation可以設在field上即可忽略null。
Q:HashMap和HashTable差別?
A:HashTable執行緒安全且效能較差;HashMap無執行緒安全。順便提到了ConcurrentHashMap。
Q:Two Sum
A:口頭給暴力解及最佳解及時間複雜度。
Q:Two Sum 多種組合情況的個數
A:口頭給暴力解,放棄想出最佳解。
Q:給兩個分別為6公升水桶和10公升的水桶,要怎麼裝出8公升的水?
A:我回答看過布魯斯威利和山繆傑克森(motherfucker)演的終極警探3的拆炸彈場景。
10公升桶裝滿然後倒滿6公升桶,10公升桶剩4公升。6公升桶的水全倒掉,把10公升剩的4公升桶倒入6公升桶,則6公升桶有4公升水,在把10公升桶裝滿後倒滿6公升桶則剩下8公升。後來回家又想一下,想說各把10公升桶和6公升桶裝一半滿,再把6公升桶半滿的水倒進10公升桶不就剛好8公升了(No, must be precise! Boom!)。
感想
面試氣氛融洽。
除了以上還有一些問題可惜忘了。整體回答得不好,有些主流工具沒用過也要花時間要了解一下。
面試問題結束後有反問關於這職缺、技術及公司的一些問題。我對這職位的認知是負責實作收集IoT資料並匯入AI Core的程式中間層及管理資料的使用者介面。
無聲卡一張。
沒有留言:
張貼留言