互聯(lián)網(wǎng)公司最常見的面試算法題有哪些?
時間:2023-12-22 05:24:01 | 來源:網(wǎng)站運營
時間:2023-12-22 05:24:01 來源:網(wǎng)站運營
互聯(lián)網(wǎng)公司最常見的面試算法題有哪些?:這個問題,我應(yīng)該是最有發(fā)言權(quán)的吧!首先,讓我們回顧幾個有意思的經(jīng)典互聯(lián)網(wǎng)公司的面試題目,熱熱身。
1. 給你一個長度為 n 的數(shù)組,其中只有一個數(shù)字出現(xiàn)了奇數(shù)次,其他均出現(xiàn)偶數(shù)次,問如何使用優(yōu)秀的時空復(fù)雜度快速找到這個數(shù)字
2. 給你一個長度為 n 的數(shù)組,其中只有一個數(shù)字出現(xiàn)了大于等于 n/2 次,問如何使用優(yōu)秀的時空復(fù)雜度快速找到這個數(shù)字。
3. 給你一個
n*m
的二維數(shù)組,每行元素保證遞增,每列元素保證遞增,試問如何使用優(yōu)秀的時間復(fù)雜度找到某個數(shù)字(或者判斷不存在)。
4. 給你兩顆二叉搜索樹,如何使用線性的時間復(fù)雜度,將它們合并成一顆二叉搜索樹。
5. 假設(shè)有
100
層的高樓,給你兩個完全一樣的雞蛋。請你設(shè)計一種方法,能夠試出來從第幾層樓開始往下扔雞蛋,雞蛋會碎。 當(dāng)然,這個問題還有推廣版本,有興趣的同學(xué)可以思考一下。 假設(shè)有
n
層樓,給你
k
個完全一樣的雞蛋,請問最壞情況下,至少需要試驗多少次才能知道從第幾層樓開始往下扔雞蛋,雞蛋會碎。
接下來,再認真回答一下這個問題。先劃重點:
面試
和
算法題
。作為在電話 / 現(xiàn)場面試中短短不到一個小時時間內(nèi),提供給面試者白板編程解決的算法題目,它與筆試上機、編程競賽中的題目在難度與形式上還是有一些不同的。
這里有一張互聯(lián)網(wǎng)公司面試中經(jīng)常考察的問題類型總結(jié)的思維導(dǎo)圖,我們可以結(jié)合圖片中的信息分析一下。
可以明確的一點是,面試算法題目在難度上(尤其是代碼難度上)會略低一些,傾向于考察一些基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)與算法,對于高級算法和奇技淫巧一般不作考察。
代碼題主要考察編程語言的應(yīng)用是否熟練,基礎(chǔ)是否扎實,一般來會讓面試者寫出代碼完成一些簡單的需求或者使用遞歸實現(xiàn)某些功能,而數(shù)學(xué)題傾向于考察概率相關(guān)的問題。以上這兩類問題,出現(xiàn)的頻率不會很高,即使出現(xiàn)了也應(yīng)該是面試中的簡單部分,相信一定難不倒在座的各位。
算法與數(shù)據(jù)結(jié)構(gòu)是面試考察的重中之重,也是大家日后刷題時需要著重訓(xùn)練的部分。簡單的總結(jié)一下,大約有這些內(nèi)容:
算法 - Algorithms
- 排序算法:快速排序、歸并排序、計數(shù)排序
- 搜索算法:回溯、遞歸、剪枝技巧
- 圖論:最短路、最小生成樹、網(wǎng)絡(luò)流建模
- 動態(tài)規(guī)劃:背包問題、最長子序列、計數(shù)問題
- 基礎(chǔ)技巧:分治、倍增、二分、貪心
數(shù)據(jù)結(jié)構(gòu) - Data Structures
- 數(shù)組與鏈表:單 / 雙向鏈表、跳舞鏈
- 棧與隊列
- 樹與圖:最近公共祖先、并查集
- 哈希表
- 堆:大 / 小根堆、可并堆
- 字符串:字典樹、后綴樹
對于上面總結(jié)的這部分內(nèi)容,力扣(LeetCode) 已經(jīng)為大家準(zhǔn)備好了相關(guān)專題,等待大家來練習(xí)啦。
算法部分,我們開設(shè)了 初級算法 - 幫助入門、中級算法 - 鞏固訓(xùn)練 、 高級算法 - 提升進階 三個不同的欄目,包含:數(shù)組、字符串、搜索、排序、動態(tài)規(guī)劃、數(shù)學(xué)、圖論等許多內(nèi)容。大家可以針對自己當(dāng)前的基礎(chǔ)與能力,選擇相對應(yīng)的欄目進行練習(xí)。為了能夠達到較好的效果,建議小伙伴將所有題目都練習(xí) 2~3 遍,吃透每一道題目哦。
數(shù)據(jù)結(jié)構(gòu)部分,我們開設(shè)了一個 數(shù)據(jù)結(jié)構(gòu)探索板塊,其中包含:隊列與棧、數(shù)組與字符串、鏈表、哈希表、二叉樹等豐富的內(nèi)容。每一個章節(jié)都包含文字講解與生動的圖片演示,同時配套相關(guān)題目。相信只要認真練習(xí),一定能受益匪淺。
力扣將
Top Interview Questions
里比較新的題目按照類別進行了整理,以供大家按模塊練習(xí)。
模擬
- 134. 加油站
- 146. LRU緩存機制
- 202. 快樂數(shù)
- 289. 生命游戲
- 371. 兩整數(shù)之和
- 412. Fizz Buzz
數(shù)組
- 152. 乘積最大子序列
- 169. 求眾數(shù)
- 189. 旋轉(zhuǎn)數(shù)組
- 217. 存在重復(fù)元素
- 283. 移動零
- 384. 打亂數(shù)組
- 350. 兩個數(shù)組的交集 II
- 334. 遞增的三元子序列
- 240. 搜索二維矩陣 II
- 238. 除自身以外數(shù)組的乘積
鏈表
- 138. 復(fù)制帶隨機指針的鏈表
- 141. 環(huán)形鏈表
- 148. 排序鏈表
- 160. 相交鏈表
- 206. 反轉(zhuǎn)鏈表
- 234. 回文鏈表
- 237. 刪除鏈表中的節(jié)點
- 328. 奇偶鏈表
堆
- 155. 最小棧
- 215. 數(shù)組中的第K個最大元素
- 295. 數(shù)據(jù)流的中位數(shù)
- 378. 有序矩陣中第K小的元素
- 347. 前K個高頻元素
棧
- 150. 逆波蘭表達式求值
- 227. 基本計算器 II
- 341. 扁平化嵌套列表迭代器
哈希 / Map
- 171. Excel表列序號
- 454. 四數(shù)相加 II
- 380. 常數(shù)時間插入、刪除和獲取隨機元素
隊列
樹
- 230. 二叉搜索樹中第K小的元素
- 236. 二叉樹的最近公共祖先
- 297. 二叉樹的序列化與反序列化
線段樹
排序
- 179. 最大數(shù)
- 324. 擺動排序 II
二分檢索
- 162. 尋找峰值
- 287. 尋找重復(fù)數(shù)
- 315. 計算右側(cè)小于當(dāng)前元素的個數(shù)
滑動窗口
動態(tài)規(guī)劃
- 124. 二叉樹中的最大路徑和
- 128. 最長連續(xù)序列
- 198. 打家劫舍
- 279. 完全平方數(shù)
- 300. 最長上升子序列
- 322. 零錢兌換
- 329. 矩陣中的最長遞增路徑
圖論
- 127. 單詞接龍
- 200. 島嶼的個數(shù)
- 207. 課程表
- 210. 課程表 II
數(shù)學(xué) & 位運算
- 136. 只出現(xiàn)一次的數(shù)字
- 149. 直線上最多的點數(shù)
- 166. 分?jǐn)?shù)到小數(shù)
- 172. 階乘后的零
- 190. 顛倒二進制位
- 191. 位1的個數(shù)
- 204. 計數(shù)質(zhì)數(shù)
- 268. 缺失數(shù)字
- 326. 3的冪
字符串
- 125. 驗證回文串
- 131. 分割回文串
- 139. 單詞拆分
- 140. 單詞拆分 II
- 208. 實現(xiàn) Trie (前綴樹)
- 212. 單詞搜索 II
- 242. 有效的字母異位詞
- 387. 字符串中的第一個唯一字符
- 344. 反轉(zhuǎn)字符串
前方干貨預(yù)警
力扣君特別為大家總結(jié)了“高頻算法面試題匯總”卡片,在力扣探索頻就可以找到,希望對各位即將面試的程序員小伙伴有幫助。最后,祝各位刷題愉快,早日拿到屬于自己的Dream Offer。
歡迎各位知友關(guān)注力扣官方微信公眾號:「
LeetCode力扣」,更多關(guān)于程序員面試、技術(shù)干貨的內(nèi)容等你來啃!