MST

星途 面试题库

面试题:Ruby复杂文件操作与性能优化

假设你有一个非常大的日志文件,其格式为每行是一个JSON字符串,表示一条日志记录。要求使用Ruby读取这个文件,解析每条JSON记录,根据记录中的某个特定字段(如 'category')进行分类统计,并输出每个分类的记录数量。同时,需考虑性能优化,尽量减少内存占用。
42.2万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试
require 'json'

category_count = Hash.new(0)

File.foreach('large_log_file.log') do |line|
  begin
    record = JSON.parse(line)
    category = record['category']
    category_count[category] += 1
  rescue JSON::ParserError
    # 处理JSON解析错误,跳过当前行
    next
  end
end

category_count.each do |category, count|
  puts "#{category}: #{count}"
end

上述代码中:

  1. 使用 File.foreach 逐行读取文件,避免一次性加载整个大文件到内存中。
  2. 对每行JSON字符串进行解析,若解析失败(通过 rescue JSON::ParserError),则跳过当前行。
  3. 根据 category 字段统计每个分类的记录数量,并最终输出每个分类及其对应的数量。