Навык решить задачу не идеально, а в заданном ограничении по времени для минимального решения - очень важный навык.
С чего Вы взяли, что кандидаты начнут с stateless решений, зачем?
Я наблюдал это в подавлящем большинстве случаев, когда я задавал этот вопрос. Я могу вспомнить только 3 или 4 случая, когда человек сразу начинал с рекурсивного решения, и, вроде, только один кто сразу начал строить карту и строить очередь на посещение.
Нормальное решение минут пять-десять только голосом объяснять
А что вы понимаете под нормальным решением? 🤔 Я в таких случаях прошу написать основной алгоритм, а детали заполним уж как успеем.
Причём опыт gamedev или подобных контестов имеет определяющее значение
Если человек с таким опытом, я скорее задам другой вопрос. Мне важно видеть то, как человек решает задачу которую он НЕ знает, то есть, вынужден думать и искать решение, чем проверять его память.
Как было у Стругацких: любой может решить решаемую задачу, нам надо решить не решаемую :)
Именно к этому я и веду: нет, нельзя спрашивать "напишите обход дерева". Какого? Зачем? Чтобы что? Нельзя спрашивать "напишите A* поиск пути". Есть практическая ситуация: вот робот, надо почистить весь дом. Уже пришёл к тому, что надо строить карту, на карте надо помечать где был, через какую сторону не смог пройти между ячейками. Пришёл к тому, что надо найти ближайшую не чищенную клетку, и надо найти дорогу туда. Все, пишем заголовок функции, и продолжаем основную логику. Есть время? Можно подумать и написать её тоже. Не хватило? Неважно, взяли библиотечную.
Если человек умеет думать и декомпозировать задачу - задача решается на ту степень детальности, на которую было времени.
Вопросы уровня "назовите пять протоколов когерентности кеша процессора" оставьте шарашкам, именующим себя универами... Это там проверяют кеш студента, "что из лекций он ещё не забыл со вчера"
Например, аббревиатура LRU. С ходу я не помню что это
Посмотрите еще раз как задаётся задача. Суть вопроса -- "напишите проход по матрице". Так же и дальше, не надо спрашивать "напишите обход дерева" или "Напишите LRU кеш". Это тупо. Есть псевдо-задача, решение для неё органично через обход дерева или через кеш. Я ожидаю что сеньёр знает кеши и деревья и может продемонстрировать это знание, ничего больше.
"начинаем кодить на доске"
отсылка на интервью когда почему-то нельзя пользоваться ничем кроме доски. я как не понимал этого подхода -- так и не понимаю... :D хорошо, что сейчас чаще это удалённо, поэтому как минимум редактор с подсветкой...
Это вопрос "напишите обход матрицы". Вариант "прогнать черепашку чтобы карту построила" -- идеален для мвп, потому что пока строится карта -- всё еще и почищено.
Антивирус это по сути реактивная защита -- он останавливает для тех, кто как раз "был в отпуске", если, разумеется, нагрузка была уже передана антивирям и попала в базы, и базы обновились на клиенте.
Просто фронтлайн точно получит нагрузку в обход антивируса -- её просто рассылать не будут пока антивирусы на неё агрятся.
А, да, есть ещё 2 решения... 😂
Ограничить дерево - это один из способов, да.
Второй вариант: амортизация, если подсчёт перенести в построение или изменение дерева, то получение суммы будет вообще константа.
Третий вариант: в дереве нужны ссылки на родителя и соседа, тогда можно сделать обход без дополнительной памяти через конечный автомат.
Ещё можно использовать модификацию дерева, тогда не требуется дополнительная память.
Навык решить задачу не идеально, а в заданном ограничении по времени для минимального решения - очень важный навык.
Я наблюдал это в подавлящем большинстве случаев, когда я задавал этот вопрос. Я могу вспомнить только 3 или 4 случая, когда человек сразу начинал с рекурсивного решения, и, вроде, только один кто сразу начал строить карту и строить очередь на посещение.
А что вы понимаете под нормальным решением? 🤔
Я в таких случаях прошу написать основной алгоритм, а детали заполним уж как успеем.
Если человек с таким опытом, я скорее задам другой вопрос. Мне важно видеть то, как человек решает задачу которую он НЕ знает, то есть, вынужден думать и искать решение, чем проверять его память.
Как было у Стругацких: любой может решить решаемую задачу, нам надо решить не решаемую :)
Есть как минимум 3 решения.
Согласен. На бесконечности.
Вот только батарея не может быть бесконечной, даже если она на миллион шагов, и то не всегда достаточно: https://pythononline.net/#80Qwbf
У нас еще осталось 40 минут до лонча, давайте попробуем сделать какой-либо детерминированный алгоритм, чтобы пользователи меньше жаловались? :)
Именно к этому я и веду: нет, нельзя спрашивать "напишите обход дерева". Какого? Зачем? Чтобы что?
Нельзя спрашивать "напишите A* поиск пути".
Есть практическая ситуация: вот робот, надо почистить весь дом.
Уже пришёл к тому, что надо строить карту, на карте надо помечать где был, через какую сторону не смог пройти между ячейками.
Пришёл к тому, что надо найти ближайшую не чищенную клетку, и надо найти дорогу туда.
Все, пишем заголовок функции, и продолжаем основную логику.
Есть время? Можно подумать и написать её тоже.
Не хватило? Неважно, взяли библиотечную.
Если человек умеет думать и декомпозировать задачу - задача решается на ту степень детальности, на которую было времени.
Вопросы уровня "назовите пять протоколов когерентности кеша процессора" оставьте шарашкам, именующим себя универами... Это там проверяют кеш студента, "что из лекций он ещё не забыл со вчера"
"Чисто" для MVP - робот хотя бы один раз бывал на клетке.
Да, интересный подход, и однажды его приводили.
А есть доказательство, что рандомный поворот и движение приведёт к обходу всей доступной площади? 😁
Посмотрите еще раз как задаётся задача. Суть вопроса -- "напишите проход по матрице".
Так же и дальше, не надо спрашивать "напишите обход дерева" или "Напишите LRU кеш". Это тупо. Есть псевдо-задача, решение для неё органично через обход дерева или через кеш. Я ожидаю что сеньёр знает кеши и деревья и может продемонстрировать это знание, ничего больше.
отсылка на интервью когда почему-то нельзя пользоваться ничем кроме доски. я как не понимал этого подхода -- так и не понимаю... :D хорошо, что сейчас чаще это удалённо, поэтому как минимум редактор с подсветкой...
Неважно -- вопрос всегда заканчивается тогда, когда заканчивается время. Обычно 45 минут на кодинговую часть.
Это вопрос "напишите обход матрицы". Вариант "прогнать черепашку чтобы карту построила" -- идеален для мвп, потому что пока строится карта -- всё еще и почищено.
"Что еще спросить" -- это другие вопросы. Конкретно этот вопрос -- "напишите обход матрицы".
Показывает, умеет ли думать кандидат. Всё остальное можно нагуглить.
Согласен, мы внесём это в бэклог для следующей версии прошивки.
Прикольно, но нет -- текст мой :)
А вот картинку заставить сгенерить правильную было сложно.
Он вместо того, что я хотел, сгенерил мне вот такое:
пришлось давать референс...
Йуххуу! Привет, АиЮкоз!
прекратите называть всё "AI". 16G никакого отношения к AI не имеет...
Пора учить албанский?
Антивирус это по сути реактивная защита -- он останавливает для тех, кто как раз "был в отпуске", если, разумеется, нагрузка была уже передана антивирям и попала в базы, и базы обновились на клиенте.
Просто фронтлайн точно получит нагрузку в обход антивируса -- её просто рассылать не будут пока антивирусы на неё агрятся.
И как антивирусы помогли вам...? 😁
А то советуете, а зачем - чёт непонятно...
"Говорят что в новый год всё подряд сбывается. Даже то, что целый год сбыть не получается"