Meta intern最近開放了 Software Engineer Intern,崗位有一點要求需要注意下 ‘This internship has a minimum twelve (12) week duration with 2025 start dates only’,必須是2025年畢業並且實習最少12周,最近也有不少小夥伴收到了Meta intern的面試,offer已經拿到了,start date February 3, 2025,現在分享下近期Meta intern的面試真題。
Meta Intern VO 1
Give two strings judge if one is a subsequence of another
Example:input: s = "abc", t = "ahbgdc"
output: true
Follow up question:
Given a string s and an array of strings words, return the number of words[i] that is a subsequence of s
Example:input: s = "abc", words = ["a", "bb", "acd", "ace"]
output: 2
解題思路
基本问题解法
双指针法:
- 用兩個指標分別遍歷兩個字串。
- 如果當前字元匹配,兩個指標都移動;否則只移動主字串指標。
- 如果子字串的指標能遍歷完,說明它是子序列。
時間複雜度:O(n),其中 n 是主字串的長度。
Follow up解法
暴力法:
- 對
words中的每個字串,用雙指標法判斷是否是s的子序列。 - 時間複雜度:O(m * n),其中 m 是
words的長度,n 是s的長度。
最佳化方法:
- 預處理主字串
s:- 建立一個雜湊表或陣列
charIndex,儲存主字串中每個字元的出現位置。 - 利用二分查詢快速找到匹配位置。
- 建立一個雜湊表或陣列
- 使用二分法快速定位:
- 對每個字串中的字元,按照順序在
s中用二分法找到下一個位置。 - 時間複雜度:O(n + m * k * log(n)),其中
k是words中字串的平均長度。
- 對每個字串中的字元,按照順序在
Meta Intern VO 2
長度為 n 的陣列 array,其中每個元素 x 滿足 0 ≤ x ≤ n-1。找到陣列中所有重複的元素。
Example
input: [3, 1, 2, 3, 0]
output: [3]
Follow up question
不能使用額外空間,不能遞迴呼叫或 func 呼叫
核心思想:原地修改陣列,遍歷陣列中的每個元素,將元素放在正確的位置,將元素交換到正確的位置,如果該位置已被佔用,則該元素是重複的
時間複雜度 O(n),空間複雜度 O(1)
Meta internship schedule
- 實習時間表(假設為12周):
- 第1-3周:入職培訓
- 第5-6周:週期中期回顧
- 第10-11周:最終決定是否發放 offer(return offer 在此決定)
- 第11-12周:放鬆身心,享受樂趣。只有你在第1-10周的表現才會計入你的實習考核
告別面試煩惱,直取理想Offer!
經過我們的強力 VO 輔助 ,候選人透過這些面試題的解析和溝通,面試官不僅瞭解了候選人的程式設計能力,也看到了我在解決問題過程中清晰的思路和有效的溝通技巧。這些不僅有助於應對 Meta 的面試,同時也能提升我們解決實際程式設計問題的能力。祝大家面試順利!