Интервьюер почти ничего не спросил, выдал ссылку на общий вебовский редактор, где первым заданием было написать структуру односвязного списка с данными. А затем было предложено написать функцию, где на входе два таких списка, а на выходе один, отсортированный по данным из первых двух и без всякого копирования.
Реализованная задумка скорее всего получалась бы такой:
struct list { struct list* next; int my; }; list* joint(list* a, list* b) { list fst = { a }; list scd = { b }; list trd = {0}; list* res = &trd; while (fst.next || scd.next) { int ref = 0; list* dst = 0; bool flg = 0; for (list* src = fst.next? &fst:&scd; src->next; src = src->next->next || flg? src->next : (flg = 1, &scd) ) { if (src->next->my > ref) { ref = src->next->my; dst = src; } } res->next = dst->next; dst->next = res->next->next; res = res->next; } return trd.next; }
Сразу скажу, что писать так нельзя (или можно для себя, какой-нибудь тест).
Вкратце было так: мне дан какой-то неудобный вебовский редактор, с подсказками и подсветками не в тему. Плюс переговариваюсь я на маке и там не программирую. Много опечаток, раздражаюсь.
Интуитивно хочу поменьше писать и все поместить все в два цикла (из соображений сложности алгоритма).
Смастерив тот вложенный for(для двух списков разом), я выдаю замечание, что суть задачи неадекватна предложенной форме исполнения. На что получаю ответ, что он, опытный мастер, наблюдая за моими руками, никакой осмысленности в моем черновом коде не видит. И предлагает на этом завершиться.
Выбесило, но что есть, то есть. Над задачей я не подумал. Там все просто, этот for надо дублировать для каждого из списков, пренебрегая тем, что дублируется и тело цикла один к одному. В процессе дальнейшего кодирования, возможно, я бы это увидел, но это сослагательное наклонение.
Правда, остаются вопросы.
Человек из Яндекса не может прочесть код с оператором “запятая”? В чем глубокий смысл требовать написать код в крайне неестественных условиях (без компилятора и в неиспользованном ранее редакторе)? Не предложив изначально оценить трудоемкость, не давая время на дизайн в минимальной форме? Я вот играю в блиц на класс ниже, чем в обычные шахматы — в Яндекс нужны скорострелы?
Короче, кто туда собирается, должен иметь эти вещи ввиду. Хорошо оплачиваемые работы всегда с каким-нибудь подвохом, им выбраковывать много кандидатов надо 🙂
ссылка на оригинал статьи https://habr.com/ru/post/708318/
Добавить комментарий