A. 演算法-面試題系列 - 求數組左部分最大值減去右部分最大值的絕對值
給定一個數組arr長度為N,你可以把任意長度大於0且小於N的前綴作為左部分,剩下的作為右部分。
但是每種劃分下都有左部分的最大值和右部分的最大值
請返回最大的, 左部分最大值減去右部分最大值的絕對值 。
演算法流程
我們要求左邊最大減去右邊最大,max肯定是在左邊數組和右邊數組中的最後參與決策的最大數。
假設12在左邊數組中,右邊數組剩下[5,6,7]
因為把max放入了左邊的數組,所以, 我們需要右邊數組的最大值盡可能的小 ,數組個數越少,他的最大值就是盡可能的小,比如剩下[5,6,7]的情況,我們可以看到我們區arr[N-1]這個數作為右側數組,是最滿足 左部分最大值減去右部分最大值的絕對值 條件的。
同理 把max劃分到右側數組,左側數組a[0]劃分是最符合條件的。
B. 面試會出哪些經典演算法題
如下:
1、排序演算法∶快速排序、歸並排序、計數排序
2、搜索演算法∶回溯、遞歸、剪枝技巧
3、圖論∶最短路、最小生成樹、網路流建模
4、動態規劃:背包問題、最長子序列、計數問題
5、基礎技巧:分治、倍增、二分、貪心
6、數組與鏈表:單/雙向鏈表、跳舞鏈
7、棧與隊列
8、樹與圖:最近公共祖先、並查集
9、哈希表
10、堆:大/小根堆、可並堆
11、字元串∶字典樹、後綴樹
演算法簡介:
演算法(Algorithm)是指解題方案的准確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。
如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間復雜度與時間復雜度來衡量。
演算法中的指令描述的是一個計算,當其運行時能從一個初始狀態和(可能為空的)初始輸入開始,經過一系列有限而清晰定義的狀態,最終產生輸出並停止於一個終態。一個狀態到另一個狀態的轉移不一定是確定的。隨機化演算法在內的一些演算法,包含了一些隨機輸入。
形式化演算法的概念部分源自嘗試解決希爾伯特提出的判定問題,並在其後嘗試定義有效計算性或者有效方法中成形。
這些嘗試包括庫爾特·哥德爾、Jacques Herbrand和斯蒂芬·科爾·克萊尼分別於1930年、1934年和1935年提出的遞歸函數,阿隆佐·邱奇於1936年提出的λ演算,1936年Emil Leon Post的Formulation 1和艾倫·圖靈1937年提出的圖靈機。即使在當前,依然常有直覺想法難以定義為形式化演算法的情況。
C. 演算法崗面試都會考代碼嗎
會。
演算法崗面試的第一關,手撕代碼環節,主要考察你對數據結構和一般演算法的掌握,以及作為碼農最基本的編程能力。二至三道編程題寫完之後,就進入到了面試的第二關,演算法基礎知識考察環節,這里的演算法指的是機器學習、深度學習以及細分方向上,比如CV、NLP相關的演算法知識。
D. 百度計算機視覺演算法工程師面經(research 崗,已offer)
一面(技術面):
1、相機外參,相機內參
2、分水嶺演算法
3、目標檢測了解嗎
4、3D這塊有了解嗎
5、論文是你寫的嗎
6、介紹一下圖像分割
7、Deeplab v1, v2, v3, v3+
8、U-net後續改進
9、Non-local
10、經典三維重建公式
11、分割常用backbone
二面(技術面):
1、數據增強方法
2、dropout方法
3、圖像分割常見深度學習方法
4、簡單介紹一下三維重建項目,平行還是stereo,如何估計的depth map
5、deep lab v3與deep lab v3+的區別
6、深度可分離卷積介紹,輸入輸出,channel數
7、為什麼mobile net要用深度可分離卷積
8、數據集imbalance如何處理
9、常見的圖像分割損失函數
10、iou能作為損失函數嗎
11、linux 下shell命令行開發熟悉嗎
12、組里以發論文為主,寫論文的意願
13、相機內外參
14、現在大幾,可實習到什麼時候
15、希望自驅性比較高
三面(hr面)
因為是日常實習崗不是校招所以沒有...
總結
二次面試過程中我都有些太隨意了,有過一些打斷面試小姐姐說話的舉動,謝謝說的比較少,中間不舒服還活動了下嗓子...還好問的問題比較簡單最後過了。
E. 百度面試:如何用Redis實現限流
限流是高並發系統中重要的功能,旨在維持系統穩定性和可用性。其核心在於對數據流量、請求頻率或資源消耗進行有計劃的限制。限流能有效避免系統負載過高,防止性能下降或崩潰,確保服務質量。
常見的限流演算法包括計數器演算法、滑動窗口演算法和令牌桶演算法。計數器演算法通過維持一個計數器並設置過期時間來限制請求,但存在突刺問題。滑動窗口演算法利用有序集合存儲請求時間,通過窗口內請求數量判斷是否限流。令牌桶演算法通過定時任務在Redis中添加令牌,程序通過獲取令牌執行操作。
使用Redis實現限流具有靈活性和高性能的優點,但也存在一些挑戰,如並發控制和資源管理。微服務中選擇限流策略需考慮整體架構、性能需求以及分布式環境下的協調問題。此外,Redis在大規模場景下的擴展性和一致性問題也需要特別關注。
本文詳細介紹了使用Redis實現限流的三種常見演算法,並探討了每種演算法的特點及其適用場景。通過實踐代碼示例,讀者能夠更好地理解限流實現的細節。同時,課後思考部分引導讀者思考使用Redis限流的優缺點,以及為何在微服務環境中可能不選擇Redis作為限流工具。
本文內容已整理至www.javacn.site面試小站,涵蓋Redis、JVM、並發、MySQL、Spring、Spring Boot、Spring Cloud、MyBatis、設計模式、消息隊列等模塊,旨在幫助開發者深入理解並應用這些技術。