На самом деле хороший интервьер может вполне ждать описанного ответа, а вот если соискатель пытается на бумажке ловко в 10 строк запилить бинарные деревья - то это проблема. Я считаю что вполне можно задавать на собеседованиях разные вопросы в том числе которые здесь и сейчас не имеют хорошего решения.
Откуда ж соискателю знать, чего хочет интервьюер? Моих представлений о сложности задачи? Пруф оф концепт? Набросок решения в рамках (хз каких) с точностью до (хз чего)?
Почему нельзя на собеседовании нарисовать просто B-дерево, самую базовую структуру данных, без прицела на практическое применение в БД, транзакционность и lock-free доступ? Когда просят список перевернуть, никто же не собирается получившийся код в продакшн систему засовывать.
Потому, что базовая структура B-дерева - слишком простой вопрос на собеседовании, а полная реализация - слишком сложный. Ответ на первый вопрос никому не интересен, а на всторой - выходит за рамки собеседования.
Что я хочу сказать, так это про что угодно можно сказать либо «это слишком просто», либо «это слишком сложно». Над любым вопросом интервьюера можно многозначительно хмыкнуть, мол, что за глупости, кто так делает. Вы предложите свой вопрос - я хмыкну над вашим, я предложу свой - вы хмыкнете над моим. Все понимают недостатки всех. Но штука в том, что что-то спрашивать нужно.
Большая часть того, что перечислено выше, мною реализована. НО! В режиме LSM tree (append-only MVCC), а-ля Кассандра, но с обязательным уплотнением (при слиянии уровней LSM дерева удалённые элементы действительно удаляются, что в Кассандре может и не случится, как я понимаю).
Первое, что хочу заметить, это язык - C#. То есть, это только чуть лучше Си, не в разы. Второе - весь мой код, вместе с необходимым для поддержки совместимости с BerkeleyDB (даже на уровне странного поведения) и многопоточности занял 3800 строк. А это и построение (не изменение, всегда построение) B+-tree и целая куча других вещей (всякие разные выборки и тому подобное).
Собственно, я хочу указать на возможность получить весь вышеуказанный функционал заметно меньшими затратами труда. Примерно вдвое меньшими, если не больше.
Comments 44
Reply
Причем о сеньорах оно обычно говорит много больше, чем они хотели бы сказать даже под пытками.
Reply
Reply
Reply
(The comment has been removed)
Reply
Reply
Reply
Reply
Reply
Большая часть того, что перечислено выше, мною реализована. НО! В режиме LSM tree (append-only MVCC), а-ля Кассандра, но с обязательным уплотнением (при слиянии уровней LSM дерева удалённые элементы действительно удаляются, что в Кассандре может и не случится, как я понимаю).
Первое, что хочу заметить, это язык - C#. То есть, это только чуть лучше Си, не в разы. Второе - весь мой код, вместе с необходимым для поддержки совместимости с BerkeleyDB (даже на уровне странного поведения) и многопоточности занял 3800 строк. А это и построение (не изменение, всегда построение) B+-tree и целая куча других вещей (всякие разные выборки и тому подобное).
Собственно, я хочу указать на возможность получить весь вышеуказанный функционал заметно меньшими затратами труда. Примерно вдвое меньшими, если не больше.
Reply
Leave a comment