Вчера у меня был ужасный опыт в интервью.
Интервьюер спросил меня о чисто виртуальной функции. Я сказал: он может иметь или не иметь определение в базовом классе, но производные классы должны предоставлять определение, если они также не хотят быть абстрактным классом.
Но интервьюер продолжал спрашивать: «Может ли чисто виртуальное иметь определение !!! ???» ... Я сказал да.
Снова он сказал "Чистый?"
Я сказал да. Допускается, что производные классы могут явно вызывать эту функцию, если им нужно именно это поведение.
Он отправил меня. Я уверен, что он не знает, что чисто виртуальная функция может иметь определение.
Как бороться с такими интервьюерами?
Спросив во второй раз, я должен лгать, что у этого не может быть определения? :)
Или я должен придерживаться своих слов и потерять работу?
arr[++i] = i
. И когда я сказал, что это вызывает неопределенное поведение и рассказал ему о точках последовательности , он на мгновение потерял дар речи, а затем выражение его лица и его дальнейшие вопросы заставили меня поверить, что он никогда раньше не слышал этих терминов!Ответы:
Нет. И вы должны поблагодарить своих счастливых звезд, которые вы пропустили этой конкретной пулей. Работа для людей, которые отказываются признать, что они могут не знать всего, и отказываются учиться у других, является ОЧЕНЬ неприятным опытом.
источник
Пример чисто виртуальной функции с определением:
источник
Проблема не в технической корректности, а в навыках общения / общения. Стойте твердо, но признайте точку зрения интервьюера и дайте им возможность сохранить лицо.
Как только вы увидите, на что он ловил рыбу («чистый?» - хорошая подсказка), хороший ответ может быть:
источник
Вы могли бы объяснить, как объявить чисто виртуальную функцию с реализацией.
На самом деле, я бы хотел, чтобы вы были здесь, потому что я тоже не знаю, как это сделать.
источник
Много раз, когда я беру интервью у кандидата, я смотрю, как человек справляется с неопределенностью или сталкивается с конфронтацией. В следующий раз, когда вы проводите собеседование, будьте внимательны к этому и постарайтесь конструктивно ответить на вопрос или объяснить свою позицию. Это может быть важнее, чем правильный ответ.
источник
Я был на интервью, где я знал больше, чем мой интервьюер. Тем не менее, они хотели, чтобы кто-то исполнил роль, и не было никого (конечно), кто мог бы взять интервью на этом уровне.
В вашем случае, вы чувствуете, что это было слепое невежество или подлинное недоразумение? Возможно, последующее письмо с примерами и ссылками: посмотрите, как они реагируют, прежде чем принимать решение.
Я склоняюсь к «слепому невежеству», хотя, основываясь на твоем вопросе, и останусь вполне ясным…
источник
В такой ситуации я бы предложил написать простой класс с виртуальной функцией с телом и посмотреть, скомпилируется ли он. По крайней мере, я бы предложил гуглить тему.
Если интервьюер принимает вызов, признает поражение и не похоже, что он собирается задушить вас после этого, тогда вы должны быть в хорошей форме. В противном случае, это, вероятно, не тот человек, с которым вы хотите работать.
источник
Я полностью не согласен с идеей, что вы должны отказаться от компании, потому что парень, опрашивающий вас, не знает ответа на свой вопрос. Даже когда вы работаете, вы встретите упрямых людей, даже если они не правы. Это хороший навык, чтобы маневрировать людьми на правильный ответ.
В моем случае интервьюер спросил, как рассчитать дисперсию большого числа чисел на многих машинах. Я начал с того, что сказал, что дисперсия - это среднее значение квадратов за вычетом квадрата средних. Он вставил: «Нет, это так»
E[(x - mu)²]
.Я сказал: «Да, вы правы. Но ваша формула такая же, как у меня. Давайте выведем ее вместе». А потом мы вывели это вместе.
В вашей ситуации, когда вы понимаете, что интервьюер недоверчив, вам нужно изменить свой подход. Скажите ему, что это редко известная особенность (это заставляет вас казаться менее всезнайкой), и если он захочет, вы отправите ему пример программы или ссылку на книгу по C ++ после интервью (это так что интервью может изящно двигаться вперед.)
Попробуйте представить вещи с его точки зрения. Однажды вы будете брать интервью у людей, и иногда вы ошибаетесь. Как бы вы хотели, чтобы блестящий кандидат ответил на такой вопрос?
источник
Я думаю, что вы должны были перенести интервью со стола на компьютер с компилятором. Это решило бы проблему.
источник
РЕДАКТИРОВАТЬ: очевидно, я совершенно не прав, см. Комментарии ниже этого ответа. Оставьте ответ здесь в образовательных целях.
К сожалению, вы ошибаетесь. Виртуальная функция может иметь определение; чисто виртуальная функция не может. Недостаток определения - вот что делает его чистым.
источник
Вы знаете, что все, что вы ответили, правильно. По моему мнению, вы хорошо поработали, придерживаясь своего ответа, так как были правы. Не нужно лгать, потому что, если не сегодня, какой-нибудь другой интервьюер узнает о чисто виртуальных функциях !!!! .. Возможно, он также проверяет вас, чтобы проверить, насколько вы тверды в своих решениях? Вы тот человек, который легко увлекается? Не нужно терять надежду, потому что вы знаете, что правильно
источник