Це тільки я чи це запитальне питання про інтерв'ю? [зачинено]


153

Фон

Мене просто попросили в інтерв'ю з технікою написати алгоритм переходу "об'єкта" (зверніть увагу на лапки), де A дорівнює B, а B дорівнює C, а A дорівнює C.

Це воно. Це вся інформація, яку мені дали.

Я запитав інтерв'юера, яка мета, але, мабуть, не було жодної, а просто "пройшов" об'єкт ".

Я ні про кого іншого не знаю, але це здається мені дурним питанням. Я знову запитав: "Я шукаю цінність?". Ні. Просто "обходьте" його.

Чому я колись хотів би нескінченно прокручувати цей "об'єкт" ?? Щоб розплавити мій процесор, можливо ??

Відповідь в відповідно до інтерв'юером, що я повинен був би написати рекурсивну функцію.

Гаразд, то чому б просто не попросити мене написати рекурсивну функцію? І хто би написав рекурсивну функцію, яка ніколи не закінчується?

Моє запитання:

Чи є це вагомим питанням для всіх вас, і якщо так, чи можете ви надати підказку щодо того, що я можу пропустити? Можливо, я занадто важко замислююся над вирішенням реальних проблем. Я давно успішно кодую, але цей процес інтерв'ю з технологією змушує мене відчувати, що я нічого не знаю.


197
Єдина правильна відповідь тут - "я не розумію питання".
user16764

16
Ну, якщо вони насправді не сказали, що таке A, B і C (як - це об'єкти), і вони ставлять об'єкт в лапки, вони, схоже, мають там свою унікальну термінологію. Якби вони запитали, як пройти графік об'єкта, де об’єкт A посилається на об'єкт B, на який посилається об'єкт C, на який посилається об'єкт A, це було б зрозуміло, але чому він повинен бути рекурсивним, я не знаю. Це не повинно бути нескінченним, якщо ви, до речі, ведете список вже відвіданих об'єктів. Але так, я б заклопотаний тим, щоб працювати в компанії, яка використовує цей тест - вони здаються розгубленими.
пн

77
Описане питання є безглуздим, як і відповідь. Або ви неправильно пам’ятаєте те, що вони запитали, або людина, яка просить, - ідіот, і вам, мабуть, краще не працювати з ним.
Мейсон Уілер

26
Чому інтерв'ю розробників повинні бути болючими? Чи не можемо ми всі просто сісти і подивитися на код один одного і обговорити? Деви будуть знати, де інші біси, роблячи це, і це не займе 6 годин. Кодові тести - найгірші. Я не проти визнати, що я смоктав у наданні оптимальних рішень, в той час як 3 devs я ніколи не зустрічав спостерігати за тим, як я друкую.
Ерік Реппен

19
Мені довелося перевірити ваш профіль, щоб побачити, чи ви живете в тому ж районі, що і я, тому що я короткий час працював на роботі, де співбесідник зі мною запитував: "Ви орієнтовані на деталі?" На що я відповів: "Чи можете ви бути більш конкретними?" І його відповідь: "Я не можу це пояснити, але я знаю людину, орієнтовану на деталі, коли бачу їх роботу". Любов неоднозначність.
Джессі К. Слікер

Відповіді:


305

Це неприємне, недійсне запитання про інтерв'ю. Інтерв'юер не міг чітко сформулювати, що це / він шукав, і очікував, що ти прочитаєш його розум, а не змістовно відповідати на твої відповідні спроби уточнити постановку проблеми. Подумайте, пощастило, що ви не отримали роботу.

Значення дієслова «перейти», що діє на родовий «об’єкт», на мою думку, неоднозначне. Почніть замінювати різноманітні іменники для слова об’єкт, і швидко стає очевидним, що обхід предмета має значення лише для невеликої підмножини всесвіту речей, що є об’єктами.

Має сенс "перетинати" вузли "бінарного дерева". Немає сенсу «обходити» клоуна. Однак об’єкт може так само легко представляти «клоуна», як і «бінарне дерево».


9
Нещодавно я ввійшов у практику заміни іменників у дурних питаннях словом "клоун" +1 сер!
rupjones

108
"Клоун обхід" - який чудовий Меме для "дурного технічного питання". Передати його на!
radarbob

8
Хм, я можу перейти var clown = {hat: "з квіткою", волосся: "яскраво-червоний", ніс: "червона куля", рот: "Червоний рот обрамлений білим кольором", ...};)
mplungjan

37
Увесь мій напрям теоретичних досліджень в галузі CS передбачає ітераційне обхід клоуна, ви нечутливий клоуд!

6
@JackManey: Усі знають, що клоуни повинні проходити рекурсивно .
Адам Робінсон

39

Тут я бачу три можливості.

  1. Вона була абсолютно некомпетентною. Не набагато більше сказати на цьому.
  2. Вона навмисно робила це неоднозначно, щоб побачити, наскільки добре ви робите, задаючи питання, щоб з’ясувати, що ви повинні робити, і що вона насправді хотіла.
  3. З будь-якої причини вона вирішила, що не хоче, щоб вас найняли, тому вона задала питання, яке було невідповідним як дане. Коли її запитали про твої навички, вона пропустила б цю частину і сказала щось на кшталт: "Я запитав його про те, як пройти трехвузловий графік, і він був абсолютно затуманений - не мав навіть поняття, як для початку. Очевидно, він є абсолютно некомпетентним! Ми ​​навіть не повинні роздумувати про те, щоб його наймати ".

7
"Я запитав його про те, як пройти графік з трьома вузлами, ..." Якщо повідомлення в ОП я виправляю, немає ні графіка, ні вузла. просто «об’єкти». Це форма "помилкових показань". Якщо вона щось подібне напише, може бути притягнуто до кримінальної відповідальності!
Еміліо Гаравалья

9
Ви зазвичай вживаєте займенники жіночої статі, коли стать особи не згадується?
Чан-Хо Су

8
@EmilioGaravaglia: Перш за все, це може бути ніколи не написано. По-друге, навіть якщо припустити, що він записаний, ви, безсумнівно, ніколи не отримаєте до нього доступ, лише лист "ми шкодуємо, щоб повідомити вам ...". По-третє, якщо у вас немає запису інтерв'ю, як би ви довели, що інтерв'юер не сказав правди? Підсумок: теоретично ви повинні мати рацію - але насправді шансів практично немає.
Джеррі Труну

11
@ Chan-HoSuh: ОП згадує стать в одному зі своїх коментарів.
Джеррі Труну

4
@JerryCoffin Мої вибачення тоді.
Чан-Хо Су

32

Це лише дика здогадка, але якщо припустити, що інтерв'юер говорить про посилання на покажчики (і це хитромудрі питання), відповідь така: немає чого переходити, тому що всі посилання вказують на один і той же об’єкт.

Рекурсивна функція? Це для обходу дерева. Я не бачу нічого в оригінальному питанні, яке б означало, що він говорить про дерево.


28
Рухайся. Є кращі компанії, для роботи.
shufler

7
Ні. Це втрачена справа. Якби інтерв'юер вважав, що він помиляється, він не ставив би питання в першу чергу. Колись мене попросили написати зразок будь-якою мовою, яку я хотів; людина, яка опитувала мене, припускала, що псевдокод є правильним вибором.
Роберт Харві

8
@Robert Harvey: Що не так з псевдокодом?
Джеймс

6
@ Роберт Харві: Справедливим є те, що всі більшість людей хочуть - це зрозуміти, як ви вирішите проблему, а не дізнатися, чи дізналися ви синтаксис якоїсь конкретної мови. Досить часто алгоритми визначаються в псевдокоді.
Джеймс

8
Яка різниця між псевдокодом і Python? :)
Девід Робінсон

15

Хоча я не можу говорити за цього конкретного інтерв'юера, я бачив подібні запитання в інтерв'ю для розробника позицій, тому мовою, яку я буду використовувати в цьому прикладі, буде JavaScript.

Подано:

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

Типова неправильна відповідь може "перейти" лише першого рівня та надрукувати / порівняти:

'value1'
2
[Object object]

Отже, кодуючи рекурсивний приклад, який би пройшов усі рівні, я зазначив би такі речі:

  • Кругова довідкова робота
  • Як поводитися з масивами (чи слід їх також проходити рекурсивно?)
  • Чи слід оцінювати функції та обробляти їх повернене значення?
  • Для JavaScript: чи повинен збігатися прототип та чи слід успадковувати властивості?

Тож "рішенням", на який я здогадуюсь, інтерв'юер збирався, було розпочати розмову на, здавалося б, просте питання, що має багато розширених тем - рекурсивність, покажчики / посилання, очікування тощо.


5
Це має сенс у тому, як ти це сказав, WSKid. На жаль, нічого з цього контексту не пропонувалося.
Метт Кашатт

3
Щоправда, це справді схоже на соломці. Вони повинні представити випадок використання, або приклад 3 об'єкта, або щось, що може призвести до реальної проблеми.
WSkid

1
Я думав так само, лише щодо атрибутів об’єкта python. Знаючи, на яке питання вони очікували відповіді, було б дуже корисно, але цього можна було б очікувати від контексту позиції, тобто python dev, c # dev, javascript dev, php dev тощо
Кен

2
+1 для пошуку контексту, де питання має певний сенс!
Дональні стипендіати

9

Деякі інтерв'юєри спеціально намагаються задавати питання, щоб дізнатись, чи достатньо розумний та чесний кандидат, щоб дати одну з цих двох відповідей:

Не знаю.

або можливо:

Я не можу відповісти на це, як сказано.

Вони не хочуть кандидата, який прийме чистий BS як специфікацію, і витрачає час свого роботодавця і платить, намагаючись його застосувати.


6
Все наше життя ми, за такого сценарію, як це інтерв'ю, зумовили можливість дати відповідь на запитання. Якщо сказати "Я не знаю" (що я, до речі, було прийнятним) було прийнятним, то мені це слід було б сказати і перед рукою. Спроба добросовісно відповісти на запитання інтерв'ю не обов'язково рівнозначна тому, як можна ставитись до неадекватних специфікацій чи набору вимог. І я думаю, що це вся суть, ці інтерв'ю відмовилися від курсу і у багатьох випадках не вистачає сенсу.
Метт Кашатт

Така гарна відповідь. Однак не забувайте, що для того, щоб сказати це, потрібно багато досвіду. Особисто я можу сказати, що досвід проведення інтерв'ю є важливою частиною роботи. @MatthewPatrickCashatt якщо інтерв'юер не прийме "я не знаю", то не набагато більше, щоб диктувати IMO.
Арін

2
Хитрі питання - це або тролінг, або непридатність. У будь-якому випадку, якщо інтерв'юер задає хитрі запитання, ви не хочете там працювати.
Бен Брокка

7

Мені здається, що це (погано сформульоване) питання щодо циркулярного переліку. Я б, швидше за все, запитав, чи саме це малося на увазі (тому що відповідь, безумовно, була б іншою, ніж інша вище, тобто сказати, що всі вони посилаються на один і той же об’єкт).

Якщо це питання зв'язаного списку, то у вас (у цьому випадку) є окремо пов'язаний список, де кінцевий вузол вказує на інший кінець (хоча якщо він був сформульований так, як ви говорите, - він може бути подвійно пов'язаний, якщо A вказує на В і С - але роз'яснення з боку інтерв'юера допомогло б у цьому).

А -> В -> С -> А

Також (і це трапляється постійно) інтерв'юер, можливо, читав це запитання, вважав це "хорошим" питанням, але насправді не знав відповіді сам (або навіть що це означало).


1
Дякую Майчу - я думаю, що ваш остаточний пункт є найбільш вірогідним.
Метт Кашатт

5

Частина завдання тут полягає в тому, щоб отримати більш детальну інформацію, задаючи конкретні запитання, щоб дізнатися, що існує структура дерева та які компоненти, що беруть участь у проходженні обходу. Можливо, було припущення, що існує не так багато інших структур даних, які проходять окрім дерев, але це мій стрибок.


1
Дякуємо JB King. Це гарне нагадування, щоб задати питання. У цьому конкретному випадку я це зробив. Насправді я навіть запитав, чи це дерево, а відповідь - ні! Але ви добре вважаєте, що я відповідаю за переробку якомога більшої кількості інформації, задаючи питання.
Метт Кашатт

3

Вони можуть захотіти спробувати розібратися, як ви справляєтесь із дивними проблемами. Але в цьому випадку це не має нічого спільного з "інтерв'ю". Це більше схоже на психологічне інтерв'ю.


5
Я хотів би побачити приклад однієї з їх технічних специфікацій для програмного проекту.
Чак Д

Якщо інтерв'ю призначене для аналітика системи або подібної позиції, це цілком влучно: ваше завдання - допомогти клієнтам уточнити їх питання, а не відповідати на них.
reinierpost

1
@ reinierpost - Це не було.
Метт Кашатт

3

Напишіть алгоритм переходу «об’єкта» (зверніть увагу на лапки), де A дорівнює B, а B дорівнює C, а A дорівнює C.

Схоже, більшість людей припускають, що A, B і C - покажчики, але вони також можуть бути клоунами. (Або члени клауну-клоуна.) Або вони можуть бути іменами клоунів. (Або назви класів. Або підкласи клауну-клоуна.)

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


2

Хоча питання було недостатньо сформульоване і інтерв'юер явно не допомагав надавати будь-який напрямок, я трохи по-іншому ставлюсь до того, що йому задавали.

Я думаю, що інтерв'юер шукав рішення, яке б обходило структуру об'єкта, використовуючи певний тип відображення. Інформація про те, що три об’єкти були рівними, повинна викликати розмову порівняння ідентичності об'єкта (A == B означає, що об'єкти дійсно є однаковим об'єктом у пам'яті) або порівняння рівності об'єктів (A == B означає, що значення об'єктів є той самий).

Той факт, що інтерв'юер заявив, що відповідь є "рекурсивною" функцією, ймовірно, свідчить про те, що очікувалося обговорення глибокого та неглибокого копіювання та порівняння.


2

Прийшов дуже пізно до цієї партії, але я думаю, що інтерв'юер невірно поставив це питання:

Напишіть алгоритм проходження масиву та визначте, що A дорівнює B, а B дорівнює C, а A дорівнює C у тому порядку.

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


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за допомогою рекурсивних функцій. Ні, це не ефективне рішення.

РЕДАКТ : Після деякої думки. Ні, неможливо перевірити, чи містить колекція всі рівні частини за допомогою рекурсивної функції.

Найбільш ефективне рішення полягає в наступному.

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";

Ця проблема виникає при програмуванні, і попросити когось написати алгоритм для тестування колекції - цілком нормально. Залежно від мови програмування цю проблему часто можна вирішити лише одним рядком коду.

Сформулювати так, як вони це робили, і очікувати неправильної відповіді - це не нормально. Оскільки це питання було задано рік тому. Я щиро сподіваюсь, що ти закінчився працювати десь іншим. Мені було б цікаво почути з оригіналу публікації, як обертаються справи для нього / неї.


2
Все вийшло чудово - бігали так швидко, як я міг із цієї компанії, і з тих пір були щасливі.
Метт Кашатт

0

Це питання інтерв'ю Java, якщо це так, можливо, він хотів би перевірити свої вміння з переважаючими "хеш-кодом" та "рівними".

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

Без переосмислення ваше порівняння для "об'єкта" від A до B, від A до C і від A до A все призведе до істини, але після переосмислення лише тоді, коли об'єкт A порівняно з об'єктом A повернеться істинним, де, як і інші порівняння, повернеться помилковим.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.