北京Linux培训
达内北京天坛中心

010-62126400

热门课程

北京linux培训 > 雇主企业 > 企业笔试题 >Linux面试题,Linux面试技巧

Linux面试题,Linux面试技巧

  • 时间:2018-08-31 20:15
  • 发布:北京linux培训
  • 来源:企业笔试题

面试是一个不断学习提升的过程,既是面试官考核面试者,也是面试者学习、考核你未来的上级的过程。如下是我面试一大型互联网公司的题目:

题目

一种常见的场景,比如说日志文件: 文本1中含有若干行query词,其中query词可能有重复,文本2中也含有若干行query词,query词也有重复。并且重复的query词并不一定相邻。如何快速找到2个文本中相同的query词?

我当时并不熟悉uniq -d可以仅仅显示重复的行这个命令,所以没能用Linux命令快速实现,而仅仅会用Awk脚本来完成。

方法一:Linux命令行

下面给出了Linux命令的一种方法

sort -u A1 >A1.s && sort -u A2 >A2.s && cat A1.s A2.s | sort | uniq -d >duplicate

很简洁,但是算法复杂度为O(nlogn+mlogm),主要时间耗在排序之上。另外,提醒一下大家,uniq之前一定要先sort,因为uniq只对相邻的行来进行处理。

这是百度的一位同学给出的答案,后来跟他交流了一下,他说大数据处理写脚本,无非是cat,sort,uniq。可见这三个命令的重要性,所以大家努力掌握吧。

方法二:Awk脚本 

若使用awk,则有

awk  'NR==FNR{A[$1] = $1;} NR >FNR {if ($1 in A)print  $0}' A1 A2 >same

算法复杂度为O(m + n),这是因为awk中数组是基于Hash的。NR,表示awk开始执行程序后所读取的数据行数。FNR,与NR功用类似,不同的是awk每打开一个新文件,FNR便从0重新累计。所以可以用NR和FNR比较区分两个文件。

 

上一篇:Linux面试题:删除一个目录下的所有文件,但保留一个指定文件
下一篇:推荐20条关于Linux命令的面试问答

Linux面试题,Linux面试技巧

Linux面试题:删除一个目录下的所有文件,但保留一个指定文件

选择城市和中心
贵州省

广西省

海南省