Сначала по коду.
Почитайте все таки PSR.. после методов скобка { переносится на новую строку. Ставить ; после закрывающей } не нужно.
Блоки кода if оборачивайте в {} даже если там 1 строка.
Половина названий методов в camelCase половина в snake_case, определитесь (лучше к первому).
комментарии **** PUBLIC *** мусор. Пишите перед методами public function, как и в случае с private.
Именуйте файлы согласно имени класса, используйте namespase'ы.
Не понятно зачем в контексте данной задачи интерфейс, и уж тем более, зачем в интерфейсе конструктор.
Теперь по задаче.
Не обязательно в рамках маленькой задачки писать громадные конструкции, чтобы показать все, что вы знаете. Работодатель хочет посмотреть на то, как вы мыслите и как решаете задачу, а примеры кода можно показать отдельно.
function countAndSort($string)
{
preg_match_all("/[a-zа-я]+/ium", $string, $words);
$counts = array_count_values(array_map('mb_strtolower', $words[0]));
$words = array_keys($counts);
array_multisort($counts, SORT_NUMERIC, SORT_DESC,
$words, SORT_STRING);
return array_map(function($a, $b) {
return "$a $b";
}, $words, $counts);
}
$str = "лось бык кот кот кот кот лось лось лось бык бык бык быки быки быки быки олень олень олень олень олень олень олень олень олень
кот лось лось ,быки лось кот кот кот лось бык";
echo "<pre>";
print_r(countAndSort($str));
echo "</pre>";
die();