@經典面試題(二)@

一、動態鏈接庫與靜態鏈接庫的區別(  靜態鏈接庫是.lib格式的文件,一般在工程的設置界面加入工程中,程序編譯時會把lib文件的代碼加入你的程序中因此會增加代碼大小,你的程序一運行lib代碼強制被裝入你程序的運行空間,不能手動移除lib代碼。

  動態鏈接庫是程序運行時動態裝入內存的模塊,格式*.dll,在程序運行時可以隨意加載和移除,節省內存空間。

  在大型的軟件項目中一般要實現很多功能,如果把所有單獨的功能寫成一個個lib文件的話,程序運行的時候要佔用很大的內存空間,導致運行緩慢;但是如果將功能寫成dll文件,就可以在用到該功能的時候調用功能對應的dll文件,不用這個功能時將dll文件移除內存,這樣可以節省內存空間。)

二。百度腳本筆試題:

1.寫腳本實現,可以用shell、perl等。在目錄/tmp下找到100個以abc開頭的文件,然後把這些文件的第一行保存到文件new中。

#!/bin/sh
for filename in `find /tmp -type f -name "abc*"|head -n 100`
do
sed -n '1p' $filename>>new
done

註釋:第一,用到了find命令,其中-type f表示選取普通文件,-name用於設定文件名;第二,head -n 100命令用於取出前100項。第三,sed -n ‘1p’用於取出文件的第一行內容。第四,>>new表示追加到文件new中。

2. 寫腳本實現,可以用shell、perl等。把文件b中有的,但是文件a中沒有的所有行,保存爲文件c,並統計c的行數。【本人不懂perl,理解不動,哈哈~】

[rocrocket@wupengchong shellstudy]$ cat roc.pl

#!/usr/bin/perl -w
open B,"<b" or die "b error.($!)";
open C,">c" or die "c error.($!)";
my $find=0;
my ($myb,$mya);
while(<B>){
    $find=0;
    chomp($myb=$_);
    print "B ",$myb,"/n";
    open A,"<a" or die "a error.($!)";
    while(<A>){
        chomp($mya=$_);
        print "A ",$mya,"/n";
        if($mya=~/$myb/){
            $find=1;
            print "FIND!/n";
        }
    }
    if($find==0){
        print C $myb,"/n";
    }
}
close A;
close B;
close C;
$linenum=`cat c|wc -l`;
print "c line count:",$linenum;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章