Фон
Меня просто попросили в техническом интервью написать алгоритм для прохождения «объекта» (обратите внимание на кавычки), где A равно B, а B равно C, а A равно C.
Вот и все. Это вся информация, которую мне дали.
Я спросил интервьюера, какова была цель, но, видимо, ее не было, просто «пересек» «объект».
Я не знаю ни о ком другом, но мне кажется, что это глупый вопрос. Я снова спросил: «Я ищу значение?». Нет. Просто "пройти" это.
Зачем мне когда-нибудь бесконечно проходить через этот "объект" ?? Чтобы расплавить мой процессор может быть ??
Ответ в соответствии с интервьюером, что я должен был бы написать рекурсивную функцию.
Хорошо, так почему бы просто не попросить меня написать рекурсивную функцию? И кто написал бы рекурсивную функцию, которая никогда не заканчивается?
Мой вопрос:
Является ли этот вопрос актуальным для всех вас, и если да, то можете ли вы дать намек на то, чего мне не хватает? Возможно, я слишком много думаю о решении проблем реального мира. Я давно успешно пишу код, но этот процесс технического интервью заставляет меня чувствовать, что я ничего не знаю.
источник
Ответы:
Это непонятный, недействительный вопрос для интервью. Интервьюер не мог четко сформулировать, что именно он / она искал, и ожидал, что вы прочитаете его / ее мысли вместо того, чтобы осмысленно ответить на ваши соответствующие попытки прояснить формулировку проблемы. Считай, что тебе повезло, что ты не получил работу.
На мой взгляд, значение глагола «траверса», работающего с общим «объектом», неоднозначно. Начните заменять слово «объект» множеством разных существительных, и быстро становится очевидным, что обход объекта имеет смысл только для небольшого подмножества вселенной вещей, которые являются объектами.
Имеет смысл «пересечь» узлы «двоичного дерева». Нет смысла «пересекать» «клоуна». Тем не менее, объект может так же легко представлять «клоуна», как он может представлять «двоичное дерево».
источник
Я вижу три возможности здесь.
источник
Это просто дикая догадка, но, если интервьюер говорит об указателях ссылок (и это вопрос с подвохом), ответ таков: проходить нечего, потому что все ссылки указывают на один и тот же объект.
Рекурсивная функция? Это для обхода дерева. Я не вижу ничего в исходном вопросе, который бы подразумевал, что он говорит о дереве.
источник
Несмотря на то, что я не могу говорить за этого конкретного интервьюера, я видел подобные вопросы в интервью для внешнего разработчика, поэтому в этом примере я буду использовать язык JavaScript.
Дано:
Типичный неправильный ответ может «пересечь» только первый уровень и распечатать / сравнить:
Таким образом, при кодировании рекурсивного примера, который будет проходить через все уровни, я бы упомянул такие вещи, как:
Таким образом, «решение», которое, как я предполагаю, искал интервьюер, состояло в том, чтобы начать разговор по, казалось бы, простому вопросу, который имеет много продвинутых тем - рекурсивность, указатели / ссылки, ожидания и т. Д.
источник
Некоторые интервьюеры специально пытаются задать вопросы, чтобы убедиться, что кандидат достаточно умен и честен, чтобы дать один из следующих двух ответов:
Я не знаю.
или, может быть:
Я не могу ответить на это, как указано.
Они не хотят кандидата, который примет чистую BS как спецификацию, и потратит время своего работодателя и заплатит, пытаясь осуществить это.
источник
Мне кажется, что это (плохо сформулированный) вопрос о круговом связанном списке. Я бы, вероятно, спросил, если это было то, что имелось в виду (потому что ответ, безусловно, будет отличаться от другого выше, то есть они все ссылки на один и тот же объект).
Если это был вопрос со связанным списком, то у вас (в данном случае) есть односвязный список, где конечный узел указывает на другой конец (хотя, если он был сформулирован, как вы говорите - тогда он может быть дважды связан, если A указывает на B и C - но разъяснения со стороны интервьюера помогли бы в этом).
A -> B -> C -> A
Кроме того (и это происходит постоянно), интервьюер, возможно, прочитал этот вопрос, подумал, что это был «хороший» вопрос, но на самом деле сам не знал ответа (или даже того, что он имел в виду).
источник
Часть задачи здесь состоит в том, чтобы получить более подробную информацию, задавая конкретные вопросы, чтобы выяснить, существует ли древовидная структура и какие компоненты участвуют в выполнении обхода. Возможно, было предположение, что существует не так много других структур данных, которые можно пройти, кроме деревьев, но это немного прыжок для меня.
источник
Они могут попытаться выяснить, как вы справляетесь со странными проблемами. Но в данном случае это никак не связано с «техническим интервью». Это больше похоже на психологическое интервью.
источник
Кажется, что большинство людей предполагают, что A, B и C являются указателями, но они также могут быть клоунами. (Или члены класса клоунов.) Или они могут быть именами клоунов. (Или имена классов. Или подклассы класса клоуна.)
Я бы перевернул таблицы и спросил, так ли они обычно готовят спецификации разработки, а затем рассказал бы им, как я мог бы помочь им на стадии разработки спецификации требований. Плохая коммуникация ожиданий приводит к плохому продукту работы Либо они получат это, либо не получат. Если они этого не получат, я уйду.
источник
В то время как вопрос был сформулирован плохо, и интервьюер явно не помогал в определении направления, я немного по-другому смотрю на вопрос.
Я думаю, что интервьюер искал решение, которое бы проходило через структуру объекта, используя какой-либо тип отражения. Информация о том, что три объекта были равны, должна была вызвать диалог сравнения идентификаторов объектов (A == B означает, что объекты в действительности являются одним и тем же объектом в памяти), или сравнение объектов на равенство (A == B означает, что значения объектов тот же самый).
Тот факт, что интервьюер сказал, что ответ является «рекурсивной» функцией, вероятно, указывал на то, что ожидалось обсуждение глубокого и мелкого копирования и сравнения.
источник
Приходит очень поздно на эту вечеринку, но я думаю, что интервьюер неправильно задал этот вопрос:
Напишите алгоритм для обхода массива и определите, что A равно B, а B равно C и A равно C, в этом порядке.
Тогда правильным ответом будет рекурсивный алгоритм.
источник
object
В вопросе состоит из частейA,B and C
, и он образуетtriangle
. Человек просто спрашивает, содержит ли объект (коллекция) все равные части.Интервьюер хочет знать, представлены ли части с частями,
A, B and C
можно ли сказать, что все они равны, не зацикливаясь на бесконечности. Этот вопрос глупо просто понять, и все же им удалось его обдумать.Они все равны когда
A == B && B == C && A == C
, но это можно упростить до справедливостиA == B && A == C
.Простота вопроса привела к путанице, и она действительно сформулирована плохо.
Правильная формулировка должна была быть.
Да, вы можете ответить на вопрос,are all my parts equal
используя рекурсивные функции. Нет, это не эффективное решение.РЕДАКТИРОВАТЬ : После некоторой мысли. Нет, невозможно проверить, что коллекция содержит все равные части, используя рекурсивную функцию.
Наиболее эффективное решение заключается в следующем.
Эта проблема возникает в программировании, и попросить кого-то написать алгоритм для проверки коллекции - это совершенно нормально. В зависимости от языка программирования эту проблему часто можно решить всего одной строкой кода.
Формулировка, как они сделали, и ожидание неправильного ответа не является нормальным. Так как этот вопрос был задан год назад. Я искренне надеюсь, что вы закончили работать где-то еще. Мне было бы интересно услышать из оригинального поста, как обстоят дела для него / нее.
источник
Был ли это вопрос об интервью на Java, если да, возможно, он хотел проверить ваши навыки с помощью переопределения «хэш-кода» и «равно».
Вам придется переопределить эти два метода и использовать переопределенный метод equals, чтобы остановить рекурсию при сравнении A с A.
Без переопределения, ваше сравнение «объекта» от A до B, от A до C и от A до A все будет иметь значение true, но после переопределения, только когда объект A по сравнению с объектом A вернет true, тогда как другие сравнения вернут false.
источник