现在的位置: 首页 > 综合 > 正文

@经典面试题(二)@

2013年09月16日 ⁄ 综合 ⁄ 共 1156字 ⁄ 字号 评论关闭

一、动态链接库与静态链接库的区别(  静态链接库是.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;

抱歉!评论已关闭.