Tìm kiếm chuỗi trong 10 triệu file text

Hôm nay mình đi phỏng vấn gặp phải câu hỏi như sau :
Giả sử có 10 triệu file text, mỗi file text chứa một đoạn văn bản nhỏ
Viết thuật toán tìm kiếm một chuỗi cho trước trong 10 triệu file text đó

Mình hoang mang ko biết trả lời thế nào , xin mọi người chút ý tưởng hoặc key word :slight_smile:
mình xin cảm ơn

1 Like

Linux command:

ls * | xargs grep -il search_string

-i : ignore case
-l : show the file(s) which contained the string.

4 Likes

mình nghĩ câu hỏi này liên quan đến thuật toán

Mở từng file rồi đọc. Chắc chỉ có cách vậy.

1 Like

Cái này thì đọc từng file thôi, nhưng làm sao để tối ưu ->concurrency
Khi đọc file thì program cần phải đơi file được đọc lên thì mới xử lý tiếp được.
nếu chỉ có 1 thread thì nó như sau:

  5 seconds reading file A (ví dụ 1 file đọc 5s)
  2 seconds processing file A ( tìm kiếm chuỗi mất 2s)
  5 seconds reading file B
  2 seconds processing file B
-----------------------
 14 seconds total

nếu có 2 thread

  5 seconds reading file A
  5 seconds reading file B + 2 seconds processing file A
  2 seconds processing file B
-----------------------
 12 seconds total

Như vậy sẽ ok hơn,
Nhưng bao nhiêu thread thì tối ưu?, đọc định luật Amdahl nhé
http://ktmt.github.io/blog/2014/05/19/dinh-luat-amdahl/

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?