免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: rdcwayx
打印 上一主题 下一主题

[学习共享] 【考题】最新的面试题,有兴趣的做一下。 [复制链接]

论坛徽章:
3
摩羯座
日期:2014-03-05 14:58:52巨蟹座
日期:2014-04-03 15:14:32摩羯座
日期:2014-04-24 12:50:34
31 [报告]
发表于 2014-03-20 14:32 |只看该作者
本帖最后由 jackhuntcn 于 2014-03-21 10:35 编辑

看到各位大神都不愿意答题。我只好勉为其难翻译一下来引诱下大神的答案了~~

( 1 ) 写一个命令:删除当前目录中所有文件名含有3个字母字符的文件。

( 2 ) 写一个命令:删除当前目录中所有文件名含有3个数字字符的文件。

( 3 ) 写一个命令:删除当前目录中所有文件名开头是大写字母并且结尾是数字的文件。

( 4 ) 写一个命令:拷贝所有当前目录中文件名开头是t的文件到一个名为x的目录中。

( 5 ) 写一个命令:执行一个a.out的程序,它的标准输入是一个名为input的文件,它的标准输出到一个名为output的文件,并且它的标准错误重定向到一个名为errorlog的文件。

( 6 ) 写一个命令:删除当前目录及其子目录中所有文件名含有3个字母字符的文件。

( 7 ) 有一个文件名为junk的文件,写一个命令可以显示该文件中含有junk的行。

( 8 ) 仅用一个参数来调用echo命令,输出字符表中的前10个字符,以空格隔开。

( 9 ) 假设你执行了如下命令:
echo abcdefg > data.crucial
cat data.crucial data.crucial > data.crucial
现在data.crucial的内容是什么?

( 10 ) 写一个命令:将当前日期写入到一个名为$d的文件中。

( 11 ) 写一个shell脚本,能显示它执行时的第3个参数。

( 12 ) 写一个shell脚本,能显示它执行时的所有参数。

( 13 ) 写一个shell脚本,能显示它执行时开头是字母X的参数,每一个显示为单独的一行。
例如 ./a.sh X ab Ac Xa Xb
输出应该为
X
Xa
Xb

( 14 ) 写一个shell脚本,能在一行内显示它执行时的所有参数的反序。例如执行program ax by c d,执行后的输出应该为d c by ax

( 15 ) 写一个shell脚本,它的参数为一个文件的文件名,执行后能打印出这个文件中元音字符(aeiouAEIOU)占该文件中所有字符的百分比。

( 16 ) 与(15)相同,不过不是文件而是计算标准输入中元音字符占所有字符的百分比。

( 17 ) 写一个shell脚本,它能隔行打印标准输入。

( 18 ) 写一个shell脚本,它的参数为非负整数,输出这个数的阶乘结果。(n的阶乘就是1*2*3...*n)

( 19 ) 假设一个a.cpp文件,它所定义的所有函数都有返回类型,并且在同一行中,且同一行中还有函数体的大括号。写一个shell脚本,打印出a.cpp中所有定义的函数名。
例如这样的一个文件:
Void Point(int xval, int yval) {
  x = xval;
  y = yval;
}
void move(int dx, int dy) {
  x += dx;
  y += dy;
}
int get_x() {
  return x;
}
int get_y() {
  return y;
}
执行脚本后打印出
Point
move
get_x
get_y

( 20 ) 写一个脚本,它从标准输入中读取每一行,并且打印出每一行的第一个词,然后是省略号...,接着是最后一个词。
例如
how are you
how...you                #输出
i am fine, thank you.
i...you                #输出

( 21 ) 写一个脚本,它从标准输入中读取每一行,并打印每一行的每个词的第一个字母,中间已空格隔开。
例如
how are you
h a y                                # 输出

( 22 ) 写一个shell脚本,它的参数为一个文件的文件名,执行后能打印出这个文件中大写字符占该文件中所有字符的百分比。

( 23 ) 假设一个目录包含文件t1.in, t2.in, t3.in, (如此类推)等文件。这个目录同时也包含另外两个文件:reference.cpp和student.cpp。每个".in"文件是reference.cpp的测试输入。student.cpp的作用与reference.cpp相同。写一个脚本,如果student.cpp编译失败,中止并返回1;如果编译成功但是与reference.cpp对于任意一个".in"的输出结果不一致则中止并返回2;如果student.cpp编译成功,且它对于".in"的输出结果与reference.cpp输出一致则中止并返回0。另外:当程序中止时,目录中所剩下的文件都是原来的文件(就是".in"文件和两个".cpp"文件)
(这个我翻译的很烂~~)

( 24 ) 给出一个keyword.cpp,该文件含有所有C++中的关键字,写一个脚本打印出一个a.cpp文件中的所有定义。(没太理解~~)

( 25 ) 写一个脚本,能打印输入中的最长的重复字符的重复次数。例如输入是
meeeska mousska mouskateers
hmmmm, hmmmm. OMG!!!!!!
Yummy! To be continued ....
输出应该是6  (最长是6个叹号) 。If you wish, you can assume that there is no "#" in the input. (好像这句话没啥影响就不用翻译了)

( 26 ) 写一个shell脚本,它能检查出第一个出现重复词的行。要求输出第一个重复行的行数,重复的词,及这一行的内容。例如,文件内容如下:
Oh, how I
truly love
Paris in the the
spring
执行脚本后应该输出:
3: the: Paris in the the
如果没有重复的词,就不需输出。

( 27 ) $RANDOM是shell的一个特殊的内置变量,调用它时,每次会返回一个非负整数。要求写一个脚本,既能随机生成非负整数,也能随机生成负整数。

( 28 ) 写一个脚本,它从命令行中接收一个正整数参数N,并能打印从1到N的数字队列(不够位数的数字左边需用0补齐)。例如,N=154时,输出:
001
002
...
009
010
011
...
099
100
101
...
154

( 29 ) 写一个脚本,它从命令行中接收一个正整数参数N,并生成N个文件(文件名为test001.data,test002.data,test003.data等)。每个文件的内容是:第一行为一个随机数K,其余行为K个随机整数。

( 30 ) 写一个脚本,它接收两个文件名作为参数,合并输出这两个文件的内容(file1的第1行,file2的第1行;file1的第2行,file2的第2行;等等)。假设两个文件都不包含字符"#"。请注意:在一些有过滤功能的程序如cat命令等,"-"字符作为参数表示用标准输入当作程序的输入,所以 cat x - y 的意思是从x文件中读入输入,然后是标准输入,然后是从y文件中读入输入。提示:考虑使用例如 echo '#####' | cat x - y | ... 作为技术手段,这样管道可以表示x,y两个文件的边界。
(这题翻译得不是太好。而且这个要求好像不是太难,后面这些说明不知道作何用?)

论坛徽章:
0
32 [报告]
发表于 2014-03-20 16:33 |只看该作者
本帖最后由 ljwd1000 于 2014-03-20 16:38 编辑

第二十五题的:
  1. awk -F ''  '{for(i=1;i<=NF;i++)if($i==$(i-1)){j++;max=max>j?max:j}else{j=1}}END{print max}'
复制代码
第二十六题的:
  1. awk '{for(i=2;i<=NF;i++)if($i==$(i-1))print NR": "$i": "$0}'
复制代码

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
33 [报告]
发表于 2014-03-21 01:33 |只看该作者
本帖最后由 yestreenstars 于 2014-03-21 01:42 编辑

回复 31# jackhuntcn

翻译辛苦了,有点晚了,我先做5道题,不一定正确,有异议的可以直接指出,谢谢~

(1) 写一个命令:删除当前目录中所有文件名含有3个字母字符的文件。
ls | grep -E '[[:alpha:]]{3}' | xargs rm -rf

(2) 写一个命令:删除当前目录中所有文件名含有3个数字字符的文件。
ls | grep -E '[0-9]{3}' | xargs rm -rf

(3) 写一个命令:删除当前目录中所有文件名开头是大写字母并且结尾是数字的文件。
ls | grep -E '^[A-Z].*[0-9]$' | xargs rm -rf

(4) 写一个命令:拷贝所有当前目录中文件名开头是t的文件到一个名为x的目录中。
cp -rf t* x

(5) 写一个命令:执行一个a.out的程序,它的标准输入是一个名为input的文件,它的标准输出到一个名为output的文件,并且它的标准错误重定向到一个名为errorlog的文件。
./a.out input >output 2>errorlog

注:我对文件的理解是:一切皆文件。

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
34 [报告]
发表于 2014-03-21 07:24 |只看该作者
本帖最后由 rdcwayx 于 2014-03-21 07:25 编辑

回复 33# yestreenstars
删除文件的话,一定不要用 -r 这个选项,还有,只有100%确信,才可以加上 -f,否则就太危险了。

   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
35 [报告]
发表于 2014-03-21 08:48 |只看该作者
回复 34# rdcwayx

版主可能没有看到我下面说的这句话:
注:我对文件的理解是:一切皆文件。

所以,我的文件是包括目录的,所以需要-r,至于-f,确实得谨慎使用~
   

论坛徽章:
3
摩羯座
日期:2014-03-05 14:58:52巨蟹座
日期:2014-04-03 15:14:32摩羯座
日期:2014-04-24 12:50:34
36 [报告]
发表于 2014-03-21 10:24 |只看该作者
基本翻译完了。大家凑合看下吧~~

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
37 [报告]
发表于 2014-03-21 10:34 |只看该作者
@jackhuntcn谢谢,我在首页更新了,提到了你的翻译

论坛徽章:
1
处女座
日期:2014-04-25 21:29:27
38 [报告]
发表于 2014-03-21 10:47 |只看该作者
第二十一题

#!/bin/bash
cat wenben|while read hang
do
for i in $hang
do
abc=`echo -n "$i" |cut -c 1`
echo -n "$abc"
done
echo -en "\n"
done

论坛徽章:
1
处女座
日期:2014-04-25 21:29:27
39 [报告]
发表于 2014-03-21 10:53 |只看该作者
第九题貌似是空的,并且在cat data.crucial data.crucial > data.crucial 的时候还会有报错,提示输入文件和输出文件是同一份文件
我用的系统是suse,不知道其他系统是不是也是这样

论坛徽章:
1
处女座
日期:2014-04-25 21:29:27
40 [报告]
发表于 2014-03-21 11:45 |只看该作者
第二十九题
#!/bin/bash
filenum=$1
filen=0
until [ "$filen" == "$filenum" ]
do
touch test${filen}.dat
number=$RANDOM
echo "$number" > test${filen}.dat
numn=0

until [ "$numn" == "$number" ]
do
echo $RANDOM >> test${filen}.dat
let numn=$numn+1
done
let filen=$filen+1
done
~     
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP