別の会社の筆記試験

1416 ワード

トポロジーソート:トポロジーソート方法は以下の通りである:(1)有向図から前駆(すなわち入度0)のない頂点を選択して出力.(2)その頂点を網から削除する、その頂点から発せられた全ての有向辺を削除する.(3)残りの網に前向きな頂点がなくなるまで、上記の2つのステップを繰り返す.
メモリの割り当て遅延:
mallocやmmapなどの関数を使用してメモリを割り当てると、mallocやmmap関数ではすぐにこのメモリが割り当てられず、使用時にのみ割り当てられます.また、LINUXはページ管理メモリなので、別のページのメモリを使用すると割り当てられません.
Belady's anomalyアルゴリズム:OPTアルゴリズムで、ページを置換する必要がある場合、将来最も長く使用されないページを置換します.私がはっきり説明すれば分かります.このアルゴリズムは未来を予知しなければならない.明らかに不可能で、アインシュタインの同級生も喜ばないだろう.このアルゴリズムは最も優れているが実現できない.
ループの中でfork、出力はありますか?意味が全然分からないので、次の2つのコードを見てください.
#include<stdio.h>
#include<unistd.h>
int main()
{
    int i;
    for(i=0;i<2;i++){
        fork();
        printf("-");
    }
    return 0;
}
#include<stdio.h>
#include<unistd.h>
int main()
{
    int i;
    for(i=0;i<2;i++){
        fork();
        printf("-
");     }     return 0; }

2つのプログラムはそれぞれいくつ「-」?結果と分析については、私は書かないで、私が理解するまで待っています.
わかりました.はっきり言えないのではないかと思います.答えは同級生が分析し、クールシェルの検証を経て、次はクールシェルのリンクです.http://coolshell.cn/articles/7965.html
基本点はprintfが行リフレッシュである行リフレッシュフラグサブプロセスが親プロセスを継承するバッファ
最初のプログラムは8個印刷され、2番目のプログラムは6個印刷されます.サブプロセスは親プロセスのバッファを継承するため、最初のプログラムは8個です.2番目のプロセスの鍵はもちろん、この文字は行リフレッシュフラグであり、標準出力printfのバッファは行リフレッシュであり、つまりバッファがいっぱいになったり、flushがリフレッシュされたりするフラグに遭遇しなかった場合、文字はprintfバッファにバッファされ、印刷されません.この行のリフレッシュフラグに遭遇すると、親プロセスのバッファがリフレッシュされ、サブプロセスが空のバッファを継承するため、6つ印刷されます.