Вопросы на собеседовании

Всегда не понимал вопросы на собеседовании из серии «а какие методы есть у класса Object?», «в чем отличия left/right outer/inner join'ов». Для чего нужны такие вопросы? Какие выводы можно сделать из ответов? Ну вот ответил кандидат, и что? Он хороший программист? Не ответил — плохой? Я не понимаю какой вывод можно сделать. Наверное спросить можно, но лишь к слову. Но еще интересней вопросы из серии «чему будет равен логарифм по основанию 2 от 10 миллионов». Это вообще к чему???

Я не вижу смысла задавать вопросы, на которые можно получить ответ задав один очевидный запрос в гугле и получит ответ в первых 3-4 ссылках.

Каждую задачу должен решать инструмент приспособленный для нее. В случае с логарифмом это калькулятор (или тотже гугл). А человек лучше приспособлен для креативных задач. И нам не нужно обратного.

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

Имхо это некоторое сочетание из (помимо знания конкретной технологии):

  • абстрактного мышление
  • наличия своего мнения
  • умения продумать на шаг вперед
  • общего кругозора и знакомства со смежными областями
  • увлеченности

Что я забыл? И как все это проще всего выяснить?

  • http:// Vladimir Dolzhenko

    Вы же не пользуетесь калькулятором, чтобы посчитать 7 * 8 ? или 2^10 ?

    Что касается чему равен log_2 (10M) — вполне нормальный вопрос, который способен показать как человек мыслит и способен ли он более-менее точно оценить какие-то вещи. И вопрос скажем, таки предполагает сообразительность, гибкость мышления.

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

    Нужен человек, который может давать ответы за гораздо меньшее время, чем полезть и посмотреть в гугл.

    Это где такое собеседование, если не секрет ?

  • http:// silw

    Если подходить к программированию как к искусству, то Вы все правильно написали, а если как к ремеслу, то вопросы на знание того, что человек будет делать чаще всего самое то на собеседовании. Мне не нужен креативщик, который денно и ношно будет писать достаточно однотипные SQL-запросы.

  • http:// cafebabe.ru

    думать «зачем считать, если есть калькулятор?» все равно, что думать «зачем выращивать хлеб, если его можно взять в магазине?». log2 (10000000) вполне креативная задача, нужно только почувствовать вкус к математике 🙂

    P.S. и погуглите на тему вопросов при устройстве на работу в Google

  • http:// Эдуард

    В принципе очень многие ответы можно получить в гугле. Указанные выше вопросы на мои взгляд гораздо лучше и правильнее, вопросов из серии «скомпилится-нескомпилится».

  • http:// Alexander

    Если человек не может ответить на стандартные вопросы, то он уже провалил пару из ваших пунктов

    «умения продумать на шаг вперед» — мог бы и почитать стандартные вопросы на собеседовании

    «общего кругозора и знакомства со смежными областями» — ну как можно не знать методы у Object? и делать круглые глаза, хихикая, услышав про сортировку... как вы сказали? ПУЗЫРЬКОМ?

  • http:// splix

    @Vladimir:

    если честно не пойму какую именно гибкость мышления и сообразительность вы имели ввиду под вычилением логарифма. Если вы имели ввиду два случая: «посчитает на калькуляторе» и «посчитает в уме» то согласен, это разные мышления. Первый получается result-oriented, а второй process-oriented, лучше брать первого.

    и не представляю компанию где работа программиста настолько заоптимизированна что нужно экономить секунды тем что не гуглить. Я вообще не припомню случая когда у пограммиста КПД больше 70%, а вы уже десятые доли процента экономите. Не верю что это бутылочное горлышко.

    это общее мнение о вопросах собеседовании

  • http:// splix

    @silw

    да, согласен, я не учел что есть и такие вакансии. Сам лично никогда не сталкивался, поэтому в голову не пришло. Если нанимаем человека кодить типовые отчеты, изо дня в день, то нужно, конечно, спросить лишь то что он будет исполнять

  • http:// Vladimir Dolzhenko

    Гибкость — какими способами может быть решена та или иная задача.

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

  • http:// Vladimir Dolzhenko

    грубо говоря — гибкость мышления — как ранг матрицы

    ты предлагаешь вариант — погуглуть + калькулятор = т.е гибкость = 2

    если человек может оценить это число в уме +1 балл, знает алгоритм приближения log ещё +1 и т.п

  • http:// splix

    Если это действительно тест на гибкость мышления — то супер. И он действительно может прохожить в таком виде. Он наверное вообще в любом виде может быть, ведь это гибкость мышления 🙂

    Но лично я бы не стал оценивать гибкость мышления задавая такой вопрос.

  • http:// shurk

    Вопрос про методы класса java.lang.Object — это только начало для разговора. От него логично перетекать в сторону обсуждения методов equals ()/hashCode () и wait ()/notify (). Человека, который не может связно рассказать про эти методы и связанные с ними грабли, я не взял бы на должность java-разработчика. Но, конечно, занудствовать на тему «а всё-таки укажите все три сигнатуры метода wait ()» я бы не стал.

    Вопрос про «логарифм 10 миллионов» мне кажется вполне нормальным, если собеседователя устроит ответ «между 23 и 24» и не потребуется 5 знаков после запятой. Прикинуть, сколько байт уйдёт на хранение числа из такого-то диапазона — это вполне себе жизненная задача.

    В вопросы про алгоритмы сортировки ты тоже считаешь плохими? Если следовать твоей логике, то и про них нет смысла спрашивать — ведь гугл первой ссылкой выдаёт вполне вменяемую статью из википедии:

    www.google.ru/search?sour...ртировки

  • http:// Vladimir Dolzhenko

    это скорее из серии, чему равен det (A), где

    A =

    (1 2 3)

    (2 4 6)

  • http:// EX

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

    Вопросы на понимание могут сыграть хорошо в таком случае, например «когда выгодно применять Х?», «как бы вы стали решать задачу Y?». Вопрос в посте (про различия в joinах) также поможет выяснить насколько человек глубоко в теме. Одна из задач собеседования — посмотреть как человек реагирует и как он мыслит, поэтому можно задавать и «глупые» вопросы. Достойный кандидат все равно себя проявит.

  • http:// Vladimir Dolzhenko

    @EX абсолютно согласен, но хорошо, когда собеседование это не только «глупые» вопросы (Что в общем-то, одно другого не исключает)

  • http:// GrAndSE

    По-моему, даже самые глупые вопросы нужны. Например, вопросы о полях-методах самого тупого класса или там о основах SQL, на которые человек не находит что ответить, говорят о том, что каким-бы креативным он не был, но он даже основ не знает, т.е. к работе над боевыми задачами пока не пригоден.

    Также ответы на такие вопросы отражают степень его правдивости: если в резюме он писал о том, что знает MySQL, PostgreSQL и Oracle как своих пять пальцев, а по факту даже пары слов о Join'ах сказать не может, то с таким человеком работать я бы не хотел. Или если от прямого вопроса человек начинает уходить, мямлить, вместо того чтобы сказать: я не знаю точно, но думаю, что такие-то и такие-то, а думаю я так, потому-что так-то и так-то. Если человек точно не знает, но размышляет и аргументирует свои предположения, то во-первых он честен, во-вторых, не боится собственного незнания, в-третьих, гибок, может мыслить и стремиться это делать... А если не знает и не хочет размышлять, то хотя бы первые два пункта есть. А если мямлит, мнется, давит на жалость, то нет ничего.

    И если человек знает основы, честно отвечает о уровне своих знаний, то можно и на креативность, логику проверять.

    П.С.: о log_2 вообще классный вопрос на сообразительность, если не на каждом шагу встречается

  • http:// kmmbvnr

    >> Всегда не понимал вопросы на собеседовании из серии

    >> в чем отличия left/right outer/inner join'ов

    Конкретно этот вопрос проверяет соответствие резюме. Если человек на практике сталкивался с задачей, то это вопрос для него элементарный.

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

    Смысл «а какие методы есть у класса Object?» для меня тоже ускользает.

    Когда-то я задавал вопрос про left outer join при собеседовании студентам с целью увидеть было ли понимание прочитанного

  • http:// splix

    Ок, убедили 🙂 чтобы проверить соответствие резюме и вообще что человек не первый раз компьютер видит — стоит задать такие вопросы.

    Особенно актуально, наверное, для junior'ов, а о senior developer и пр. тут уже выводы не сделать. Как способ прощупать только.

  • http:// Vladimir Dolzhenko

    Смысл вопроса «какие методы есть у java.lang.Object» - скорее зацепка, чтобы начать разговор о

    — hashCode / equals — что это такое, с чем его едят и т.п

    — notify/notifyAll / wait — как отправная точка разговора о многопоточности

  • http:// alexey

    ну я вот недавно на собеседовании заполнял анкету. там был такой вопрос: зачем делать копии БД? и варианты ответов: 1. если я потеряю данные компании меня могут уволить. 2. что бы выпросить новый винчестер. 3. что бы облегчить себе жизнь. 4. не знаю.

    может быть таким вопросом проверялось чувство юмора??

  • http:// whtiger

    Насчёт пузырька, метод Collections.sort маленькие коллекции сортирует как раз пузырьком.

  • Pingback: Игорь Артамонов » Blog Archive » Еще к вопросам на собеседоваии