一些面試2

2022-05-09 05:51:12 字數 929 閱讀 7422

1.最短路徑演算法  //**:

迪傑斯特拉演算法:不能處理負權的邊,因為它的過程就是尋找到源點最短的邊,可能會找不到最短的邊。如

存在三個點,1和2之間權值為3,1和3之間權值為4,2和3之間權值為-2.這樣的話d[1,2]就會被錯求為3.而正確答案是2.

也就是說乙個已經被標記為訪問過的點(已經找到到源點的最短路徑的點)很有可能是可以通過乙個負權邊,存在更短的最短路徑的。

弗洛伊德演算法:就是乙個三重迴圈,對每兩個節點計算出中間有其他節點作為中間節點時的距離,檢視是不是更小。

貝爾曼福特演算法:可以用於存在負權邊的單源最短路徑演算法。就是每次迴圈都更新所有點的dist,若n-1次之後仍可進行鬆弛操作,那麼就說明存在負值迴路。bellman-ford演算法是否一定要迴圈n-1次麼?未必!其實只要在某次迴圈過程中,考慮每條邊後,都沒能改變當前源點到所有頂點的最短路徑長度。 //其實這個還不太明白。。

spfa:也就是對點進入佇列,標記,出佇列取消標記,可能多次進入佇列,直到隊列為空即完成單源最短路徑的求解。

2.簡要描述乙個程序在記憶體中分布情況。

包括棧區、堆區、未初始化全域性變數區,已初始化全域性變數區,可執行檔案。jin

3.程序間有哪些通訊機制?

管道:管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。

訊息佇列:程序可以放訊息進訊息佇列,也可以從中取。

共享記憶體:也就是乙個程序建立,但是多個記憶體都可以訪問。

訊號量:是乙個計數器,對多個程序訪問共享資源進行控制,作為一種鎖機制,防止乙個程序訪問資源時,其他程序也訪問。

4.多執行緒之間共享哪些資源?

答:堆、全域性變數區、靜態變數、檔案等公用資源 這是共有的。棧、區域性變數、程式計數器、執行緒id是獨享的。

5.執行緒同步有哪些機制?

互斥量,訪問互斥量前對其加鎖,訪問之後釋放鎖。

一些面試題

q 您在什麼情況下會用到虛方法?它與介面有什麼不同?a 當在繼承類中想重寫某一方法時會用到虛方法 虛方法是類的成員函式,介面相當於抽象類.q override與過載有什麼區別?a override 就是覆蓋的意思,覆蓋父類的同名方法,而過載則是通過參數列來呼叫方法.q 值型別與引用型別有什麼區別?a...

一些面試題

1.如何檢視埠8080的程序 netstat anp grep 8080 lsof i 8080 2.在 tmp目錄下建立test.txt檔案,內容為 hello,world 用乙個命令寫出來。echo hello,world tmp test.txt 3.敘述下列服務的預設埠號。ftp 20,21...

一些面試題

1.給你乙個長度為n的鍊錶。n很大,但你不知道n有多大。你的任務是從這n個元素中隨機取出k個元素。你只能遍歷這個鍊錶一次。你的演算法必須保證取出的元素恰好有k個,且它們是完全隨機的 出現概率均等 解 先選中前k個,從第k 1個元素到最後乙個元素為止,以k i i k 1,k 2,n 的概率選中第i個...