Я недавно дал интервью Amazon и получил работу. Однако один из вопросов, которые я получил, заставил меня задуматься о производительности / оптимизации.
Вопрос в том, что вы читаете файл журнала или несколько файлов журнала в поисках конфиденциальных данных и хотите заменить конфиденциальные данные. со словом «УДАЛЕНО».
Мой мыслительный процесс: 1) файл или структура данных, содержащая эти конфиденциальные данные (слово из черного списка) 2) просмотрите файл журнала и найдите слово из черного списка. 3) Если в файле найдено слово из черного списка, замените слово на «УДАЛЕНО»
Мой процесс в основном проходил через файл журнала, слово за словом.
код, который я написал, был что-то вроде
replace(String log) {
HashSet<String> s = new HashSet<>();
s.add("ted"); //keep adding blacklisted word
String[] word = log.split(" "); //assumed that log file is separated on string
//if log files contain other special chracters to be splited on then i would need to handle that
for(int i = 0; i < log.length(); i++) {
if(s.contains(word[i]) {
word[i] = "REDACTED";
}
}
}
Меня спросили, что если бы было несколько файлов журнала, как бы вы справились с этим, и это эффективно?