2023/03/06~【System Developer 約聘】錄取
由智誠科技的 Reese 直接寄信提供:
Job Description
#
Build an automated test platform.
Skill Request
#
- Experience creating web technology and have solid understanding of frontend and backend development
- Possess a solid understanding of CI/CD and SDLC/TDLC concepts: code review best practices, code coverage analysis, continuous test, and delivery.
- Strong knowledge of networking concepts
- Excellent verbal and written communication skills
- Proficient in at least one programming language (JavaScript, NodeJS, or TypeScript).
- Proficient in automation technologies such as Ansible, YAML.
- Skilled with git and branching processes
工作地點:台北南港惠普office(鄰近捷運南港展覽館站)
上班時間:上下班為彈性不打卡
通話之後額外取得下列資訊:
開頭因面試官個人因素耽誤 15 分鐘,Team Lead Jeremy 負責 Live Coding,Theo 負責開放式提問。
Follow Up:
目前的產品線有哪些?
讓內部使用的 Testing Automation Framework
各產品使用的技術棧?
js, ts, mongodb, openapi, aws microservice, rabbitmq, react
目前有遇過什麼樣的技術挑戰?
- 硬體相容性
- on-premise 設備的網路容錯性
能否描述一下關於這個職位一天的概況?
按照 Scrum 流程運作
HP 主管提供的天花板價為 ,因遠低於我的期望,未繼續進行下去。
專案已開源於 Githubopen_in_new。
解法一:從左右兩側使用 Two Pointer 掃描。
class Solution: def sortedSquares(self, nums: List[int]) -> List[int]: left, right = 0, len(nums) - 1 ans = [] while left <= right: if abs(nums[left]) < abs(nums[right]): ans.insert(0, nums[right] * nums[right]) right -= 1 else: ans.insert(0, nums[left] * nums[left]) left += 1 return ans
解法二:從中間往兩側使用 Two Pointer 掃描。
class Solution: def sortedSquares(self, nums: List[int]) -> List[int]: non_negative_i = len(nums) for i, n in enumerate(nums): if n >= 0: non_negative_i = i break left = non_negative_i - 1 right = non_negative_i ans = [] while left >= 0: n_num_square = nums[left] * nums[left] left -= 1 while right < len(nums): p_num = nums[right] p_num_square = p_num * p_num if p_num_square <= n_num_square: ans.append(p_num_square) right += 1 else: break ans.append(n_num_square) ans.extend([n*n for n in nums[right:]]) return ans
解法一:Single Pointer。
掃描陣列中的數字,若遇到非零者就將該數字寫入到寫入指標所在位置,並且遞進寫入指標,完成掃描後,再讓寫入指標一路補零到結尾。
class Solution: def moveZeroes(self, nums: List[int]) -> None: n = len(nums) write = 0
for num in nums: if num != 0: nums[write] = num write += 1 while write < n: nums[write] = 0 write += 1
解法二:Two Pointer,可以最小化操作次數。
使用第一個指標 持續追蹤最左側的 0 所在的位置,並使用另一個指標 掃描陣列,掃描過程遇到非零者就與最左側的 0 交換數字。需注意此做法成立的條件是必須保持 ,如此迭代的過程才能往答案逼近,否則像是 這樣的反例就會找不到答案。
class Solution: def moveZeroes(self, nums: List[int]) -> None: zero_index = 0 n = len(nums) while zero_index < n and nums[zero_index] != 0: zero_index += 1 for i in range(zero_index + 1, n): num = nums[i] if nums[i] != 0: nums[zero_index], nums[i] = nums[i], nums[zero_index] while zero_index < n and nums[zero_index] != 0: zero_index += 1