Является ли это только мне или это сложный вопрос о техническом интервью? [закрыто]

Фон

Я просто попросил в техническом интервью написать алгоритм для прохождения «объекта» (обратите внимание на кавычки), где A равно B, а B равно C, а A равно C.

Вот и все. Это вся информация, которую я получил.

Я спросил интервьюера, какая цель была, но, видимо, не было ни одного, просто «пересечь» «объект».

Я не знаю никого, но это кажется глупым вопросом для меня. Я снова спросил: «Я ищу ценность?». Неа. Просто «переверните» его.

Почему я когда-либо хотел бы бесконечно прокручивать этот «объект»? Чтобы расплавить мой процессор, возможно?

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

ОК, так почему бы просто не попросить меня написать рекурсивную функцию? И кто будет писать рекурсивную функцию, которая никогда не заканчивается?

Мой вопрос:

Является ли это правильным вопросом для всех вас, и если да, можете ли вы дать нам подсказку о том, что я могу потерять? Возможно, я слишком много думаю о решении реальных проблем. Я долгое время программировал кодирование, но этот технологический процесс интервью заставляет меня чувствовать, что я ничего не знаю.

153 голоса | спросил Matt Cashatt 13 AMpFri, 13 Apr 2012 01:10:12 +040010Friday 2012, 01:10:12

13 ответов


305

Это непонятный, неверный вопрос интервью. Интервьюер не мог четко сформулировать то, что он искал, и ожидал, что вы прочтете его /ее ум вместо того, чтобы в полной мере ответить на ваши соответствующие попытки прояснить постановку проблемы. Считайте, что вам повезло, что вы не получили работу.

Значение глагола «траверс», действующего на общем «объекте», по моему мнению, неоднозначно. Начните заменять множество различных существительных для объекта слова, и быстро становится очевидным, что обход объекта имеет смысл только для небольшого подмножества вселенной вещей, которые являются объектами.

Имеет смысл «пересечь» узлы «двоичного дерева». Не имеет смысла «пересекать» «клоуна». Тем не менее, объект может так же легко представлять «клоуна», поскольку он может представлять «двоичное дерево».

ответил Matt 13 AMpFri, 13 Apr 2012 01:46:53 +040046Friday 2012, 01:46:53
39

Здесь я вижу три возможности.

  1. Она была совершенно некомпетентной. Не намного больше сказать об этом.
  2. Она сознательно делала это двусмысленным, чтобы понять, насколько хорошо вы будете делать, задавая вопросы, чтобы выяснить, что вы должны были делать, и что она действительно была.
  3. По какой-то причине она решила, что не хочет, чтобы вы наняли, поэтому она задала вопрос, который был безответным, как указано. Когда ее спросили о ваших навыках, она пропустила эту часть и сказала что-то вроде: «Я спросил его о том, как пересечь граф с тремя узлами, и он был полностью полностью я даже не знаю, с чего начать. Очевидно, что он грубо некомпетентен! Мы даже не должны нанимать его.
ответил Jerry Coffin 13 AMpFri, 13 Apr 2012 02:28:15 +040028Friday 2012, 02:28:15
32

Это просто дикая догадка, но, предполагая, что интервьюер говорит о ссылках на указатели (и это вопрос трюка), ответ таков: нет ничего, чтобы пройти, потому что все ссылки указывают на один и тот же объект.

Рекурсивная функция? Это для пересечения дерева. Я ничего не вижу в исходном вопросе, который подразумевал бы, что он говорит о дереве.

ответил Robert Harvey 13 AMpFri, 13 Apr 2012 01:13:57 +040013Friday 2012, 01:13:57
15

В то время как я не могу говорить за этого конкретного интервьюера, я видел подобные вопросы в интервью с начальным разработчиком, поэтому язык, который я буду использовать в этом примере, будет JavaScript.

Дано:

var A = {
    key1: 'value1',
    key2: 2,
    key3: {
        innerkey1: 'value3'
    }
}

Типичный неправильный ответ может «пересекать» только первый уровень и печатать /сравнивать:

'value1'
2
[Object object]

Поэтому, кодируя рекурсивный пример, который пересекает все уровни, я бы упомянул такие вещи, как:

  • Циклическая обработка ссылок
  • Как обрабатывать массивы (если они тоже будут рекурсивно пройдены?)
  • Должны ли оцениваться функции и обрабатываться их возвращаемое значение?
  • Для JavaScript: следует ли сравнивать прототип и унаследованные свойства?

Итак, «решение», которое, как я предполагаю, собеседник собирался, заключалось в том, чтобы начать разговор по простому вопросу, который имеет много продвинутых тем - рекурсивность, указатели /ссылки, ожидания и т. д.

ответил WSkid 13 AMpFri, 13 Apr 2012 01:27:04 +040027Friday 2012, 01:27:04
9

Некоторые интервьюеры специально пытаются задавать вопросы, чтобы убедиться, что кандидат умный и честный, чтобы дать один из этих двух ответов:

Я не знаю.

или возможно:

Я не могу ответить на это, как указано.

Они не хотят, чтобы кандидат принимал чистую BS как спецификацию и тратил время своего работодателя и платил за ее реализацию.

ответил hotpaw2 13 AMpFri, 13 Apr 2012 09:10:41 +040010Friday 2012, 09:10:41
7

Мне кажется, что это (плохо сформулированный) вопрос относительно кругового связанного списка. Вероятно, я спросил бы, что это значит (потому что ответ будет, конечно, отличаться от другого, что означает, что все ссылки на один и тот же объект).

Если это был связанный вопрос списка, то у вас (в данном случае) есть отдельный список, где конечный узел указывает на другой конец (хотя, если он был сформулирован так, как вы говорите, тогда он может быть дважды связан, если A указывает на B и C - но разъяснение на стороне интервьюера поможет этому).

A -> B -> C -> А

Также (и это происходит все время), интервьюер, возможно, прочитал этот вопрос, подумал, что это был «хороший» вопрос, но на самом деле не знал сам ответ (или даже то, что он имел в виду).

ответил Maich 13 AMpFri, 13 Apr 2012 05:16:20 +040016Friday 2012, 05:16:20
5

Часть проблемы здесь заключается в том, чтобы получить более подробную информацию, задав конкретные вопросы, чтобы выяснить, что есть древовидная структура и каковы компоненты, участвующие в обходе. Возможно, было предположение о том, что не так много других структур данных, которые пересекаются, кроме деревьев, но это немного скачок к моему мнению.

ответил JB King 13 AMpFri, 13 Apr 2012 01:42:52 +040042Friday 2012, 01:42:52
3

Они могут попытаться выяснить, как вы справляетесь со странными проблемами. Но в этом случае это не имеет никакого отношения к «техническому интервью». Это больше похоже на психологическое интервью.

ответил BenjaminB 13 AMpFri, 13 Apr 2012 01:39:41 +040039Friday 2012, 01:39:41
3
  

Напишите алгоритм для перемещения «объекта» (обратите внимание на кавычки), где A   равна B и B равно C, а A равно C.

Похоже, что большинство людей полагают, что A, B и C являются указателями, но они также могут быть легко клоунами. (Или члены класса клоуна.) Или они могут быть клоунскими именами. (Или имена классов или подклассы класса клоуна.)

Я бы перевернул таблицы и спросил, как именно они обычно готовят спецификации разработки, а затем рассказывают им, как я могу помочь им с этапом разработки требований. Плохая коммуникация ожиданий приводит к плохому рабочему продукту. Либо они это получат, либо они не будут, если бы они этого не поняли, я бы ушел.

ответил Jim 13 PMpFri, 13 Apr 2012 21:25:50 +040025Friday 2012, 21:25:50
2

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

Я думаю, что интервьюер искал решение, которое пересекало структуру объекта, используя некоторый тип отражения. Информация о том, что эти три объекта были равны, должна была вызвать диалог сравнения объектов (A == B означает, что объекты действительно являются одним и тем же объектом в памяти) или сравнение равенства объектов (A == B означает, что значения объектов то же).

Тот факт, что интервьюер сказал, что ответ был «рекурсивной» функцией, вероятно, указывал на то, что ожидается обсуждение глубокого и мелкого копирования и сравнения.

ответил Lucas 13 PMpFri, 13 Apr 2012 19:17:23 +040017Friday 2012, 19:17:23
2

Придя очень поздно к этой вечеринке, но я думаю, что интервьюер неправильно задал этот вопрос:

Напишите алгоритм для перемещения массива и определите, что A равен B и B равно C и A равно C, в этом порядке.

Тогда правильным ответом будет рекурсивный алгоритм.

ответил pgthew 31 +04002013-10-31T01:49:41+04:00312013bEurope/MoscowThu, 31 Oct 2013 01:49:41 +0400 2013, 01:49:41
1
  

Я просто попросил в техническом интервью написать алгоритм для прохождения «объекта» (обратите внимание на кавычки), где 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.

Простота вопроса привела к путанице, и на самом деле это плохо сказано.

Правильная формулировка должна была быть.

  

Напишите алгоритм проверки частей коллекции, чтобы увидеть, все ли они равны друг другу. Следует проявлять осторожность, чтобы не застревать в бесконечном цикле. Например; если части A равны B и B равно C, а A равно C, может вызвать проблемы.


  

Ответ, по словам интервьюера, состоял в том, что я должен был написать рекурсивную функцию.

Да, вы можете ответить на вопрос are all my parts equal, используя рекурсивные функции. Нет, это не эффективное решение.

EDIT : после некоторого раздумья. Нет, невозможно проверить, что коллекция содержит все равные части, используя рекурсивную функцию.

Наиболее эффективное решение заключается в следующем.

function are_all_equal(parts)
{
   for(int i=1; i < parts.length; i++)
       if parts[i] is not same as parts[0]:
           return false;
   return true;
}

print are_all_equal(parts) ? "yes" : "no";

Эта проблема возникает в программировании, и попросить кого-то написать алгоритм для проверки коллекции совершенно нормально. В зависимости от языка программирования эта проблема часто может быть решена только с одной строкой кода.

Формулировка, как и они, и ожидание неправильного ответа не является нормальным. Поскольку этот вопрос задавали год назад. Я действительно надеюсь, что вы оказались в другом месте. Мне было бы интересно услышать от оригинального сообщения, как все получается для него /нее.

ответил cgTag 17 J0000006Europe/Moscow 2013, 21:28:00
0

Был ли это вопрос интервью с Java, если так, может быть, он хотел проверить свои навыки с переопределением «hashcode» и «equals».

Вам придется переопределить эти два метода и использовать метод переопределенных равных, чтобы остановить рекурсию при сравнении A с A.

Без переопределения ваше сравнение для «объекта» от A до B, от A до C и от A до A будет иметь значение true, но после переопределения только тогда, когда объект A по сравнению с объектом A вернет true, когда другие сравнения вернут false.

ответил rpatali 16 PMpMon, 16 Apr 2012 22:01:50 +040001Monday 2012, 22:01:50

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132