Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];

Вниз

Как вам такое тестовое задание?   Найти похожие ветки 

 
Александр Иванов ©   (2007-01-09 14:22) [0]

Сделать просят на Яве.

Задача 1 (Mapping). Требуется написать программу, которая на основании исходного файла сформирует все варианты использованных транслитерационных схем. Транслитерационной схемой называется множество отображений (не обязательно однозначных) некоторого упорядоченного множества английских букв в соответствующие им русские буквы согласно следующим правилам:
1. Если одна буква (или сочетание букв) имеет несколько вариантов обратной транслитерации, то в качестве основного варианта выбирается тот, который чаще встречается. Другие варианты сохраняются, но добавляются новые — созданные на основе этих и удлинненные за счет контекста до тех пор, пока не станут однозначными. Например, буква "c" имеет в слове "seeneecyn" вариант "ц", а в слове "moscow" — "к" (при том, что в целом "cow" отображается на "ква"), а в "nocowa" — "с" . Если второй вариант менее частый, то вместо отображения "c->к" должен быть вариант "cow->ква", а вместо "c->с" — "sowa->сова".
2. Если более длинный вариант может быть собран из более коротких, которые не имеют "конкурентов" по количеству, то длинный вариант не нужен. Например, не нужен вариант "sk->ск", если и у "s" и у "k" и так наибольшее количество по преобразованию в соответственно "с" и "к".
Результат записывается в файл (scheme) в формате английский вариант<табуляция>русский вариант<табуляция>количество<перевод строки> Количество --- это сколько раз данная замена встречается в исходном файле (knownmapping).
Файл должен быть отсортирован по убыванию длины английского варианта, далее по убыванию количества, далее по возрастанию в алфавитном порядке.
Главный класс должен называться ru.hflabs.testalgo.retranslit.MappingMaker и принимать следующие аргументы командной строки:
knownmapping_filename, scheme_filename
Задача 2 (Retranslit). На входе:
1. полученная в результате решения Задачи 1 схема обратной транслитерации (scheme).
2. файл, состоящий из записанных по одному в каждой строке транслитерированных (английских) названий (src).
3. файл, состоящий из записанных по одному в каждой строке русских названий (суть есть справочник) (dictionary).
Требуется написать программу, которая выполнит обратную транслитерацию каждого названия из транслитерированного файла по следующиму правилу:
1. Пробуем подобрать такую схему, чтобы результат обратной транслитерации оказался в справочнике (dictionary).
2. Если не получается, то транслитерируем наиболее вероятным способом. При прочих равных выбирается более длинное подмножество из схемы, при одинаковой длине --- с большим количеством.
Результат записывается в файл (output) в формате русское название<табуляция>английское название<табуляция>+, если попали в справочник, -, если не попали<перевод строки>
Главный класс должен называться ru.hflabs.testalgo.retranslit.Retranslit и принимать следующие аргументы командной строки:
scheme_filename src_filename dictionary_filename output_filename

Общие требования:

1. Код должен быть откомментирован
2. Код должен быть покрыт jUnit-тестами
3. Если принять размеры всех файлов (кроме scheme) равных 10000 записей, то Задача 1 должна выполняться не более, чем за 10 минут, а Задача 2 не более чем за 5 минут (P-IV, 3GHz), и обе задачи не должны требовать более 64М оперативной памяти.
4. Если в каких-то местах получится достичь существенной оптимизации, необходимо кратко описать суть решения и желательно оценить выигрыш по сравнению с прямым перебором.


 
Александр Иванов ©   (2007-01-09 14:24) [1]

Прошу поделиться мнением можно ли такое использовать как тестовое задание. И может ли тестируемый быть уверен, что ему не поручили бостаточно большой кусок, который будут использовать, вне зависимости от результатов тестирования. Т.е. грубо говоря "кинут".


 
Ega23 ©   (2007-01-09 14:26) [2]

В принципе на нормальный курсовик тянет.


 
clickmaker ©   (2007-01-09 14:26) [3]


> при том, что в целом "cow" отображается на "ква"

это уже перевод, а не транслитерация


 
Александр Иванов ©   (2007-01-09 14:27) [4]

> [2] Ega23 ©   (09.01.07 14:26)

Волнует даже не размер, а законченность задания, т.е. и комменты им и тесты к коду


 
Ega23 ©   (2007-01-09 14:28) [5]


> Прошу поделиться мнением можно ли такое использовать как
> тестовое задание. И может ли тестируемый быть уверен, что
> ему не поручили бостаточно большой кусок, который будут
> использовать, вне зависимости от результатов тестирования.
>  Т.е. грубо говоря "кинут".


Слишком тяжёлое - это зависит от вакансии. Может ищут супер-java-программиста  на оклад $3000.
А насчёт второго - ИМХО могут и кинуть.


 
Ega23 ©   (2007-01-09 14:30) [6]


> Волнует даже не размер, а законченность задания, т.е. и
> комменты им и тесты к коду
>


Я в универе нечто подобное делал в рамках курсовика. Но, конечно, не вылизывал его на супер-производительность, да и исходников с комментами особо никто не требовал.


 
clickmaker ©   (2007-01-09 14:31) [7]

Одного моего знакомого на интервью спросили про вложенные транзакции в мс скл 2005. После того, как он честно ответил, что не при делах, работодатель печально вздохнул "ну вот, я и сам не знаю, думал вы мне расскажете..."



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.043 c
15-1168127114
AntiUser
2007-01-07 02:45
2007.01.28
Великая тайна воды


15-1168438608
vasIzmax
2007-01-10 17:16
2007.01.28
"...свиные консервы..." :)


2-1168508786
Shuttle
2007-01-11 12:46
2007.01.28
плиз


15-1167925331
ProgRAMmer Dimonych
2007-01-04 18:42
2007.01.28
Областная олимпиада


15-1168463921
PHPdeveloper
2007-01-11 00:18
2007.01.28
бизнес модель ShareWare продукта





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский