LINUX.ORG.RU

С/С++: вопросы на собеседованиях

 , ,


3

5

Задача понять хорош кандидат для проекта или нет, как мне кажется, супер сложна. Допустим, он позитивный и всё такое. Поговорим исключительно о технической части. У кого есть опыт - поделитесь что вы спрашиваете у middle/senior разработчиков? Только практические задачи? Теория (какая)?

Ping bugfixer

Помню мне задавали:

// Что тут будет происходить:
A * b = new B, a(1);
// класс B унаследован от A и у A есть конструктор по умолчанию
// и есть конструктор с int параметром.
rumgot ★★★★★
()
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от rumgot

меня когда-то спросили самый быстрый способ узнать является ли инт степенью двойки, до сих пор помню :-)

Возвращаясь к теме: самый верный способ - это распросить за прошлое: чем занимался, за что твечал, что прикольного сделал, чем гордишься, какие сложные таски были, как решал.
Далее можно адвансед вопросами покидать(какие там у вас на проекте адвансед вопросы в почете)

Keltir
()
Последнее исправление: Keltir (всего исправлений: 1)

что вы спрашиваете у middle/senior разработчиков

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

Теория

Вообще не особо важно. Если человек умеет думать, ему на пальцах можно объяснить если что-то понадобится. Ну спрашиваю про стеки-списки-деревья, чтобы понять что у человека есть какие-то общие представления. Просто pro forma.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 2)
Ответ на: комментарий от filosofia

Совершенно согласен. Так адекватные люди не пишут. Чисто для собеса. Лично я против таких вопросов. Ибо задавать нужно только то, что реально в работе нужно.

rumgot ★★★★★
()
Ответ на: комментарий от rumgot

Что тут будет происходить

Увольнение сотрудника, который пишет такую херню.

no-such-file ★★★★★
()

В первую очередь, тебе надо определиться, кого ты ищешь. Исходя из этого и из резюме кандидата, можно спрашивать как в глубь (условно: расскажи мне все тонкости TCP), так и вширь (опять условно: перечисли все языки и фреймворки, которые ты знаешь). По моему опыту, сеньоры делятся на тех, кто зазубрил одну область и может там абсолютно все, и тех, кто знает всего помаленьку. И те, и другие очень полезны на своих местах — именно поэтому тебе нужно сперва идентифицировать эти места у себя в команде.

filosofia
()

Только не олимпиадные задачки.

ox55ff ★★★★★
()
Ответ на: комментарий от rumgot

Отечественные конторы сразу можно узнать по подобного рода вопросам. В обычных западных спрашивают по темам 1. многопоточность - простые вопросы 2. умные указатели - простые вопрос 3. базы данных - простые вопросы

В отечественных все что угодно, от того как во время работы программы библиотеки загружать, до каких-то диких тем с сокетами и каких-нибудь кэшей и как с ними работать в CPU, любят спросить еще что-то вроде СКОКА БУДЕТ 2u-011, производную от e^x, ящики с апельсинами и яблоками, какие то веревки поджигают и смотреть за сколько догорят ЧЕ БУДЕТ

string& shit() {
    return string("shit_string");
}
string &a = shit();
а вот
i++ + ++i

запишите в массив от 1 до 10 числа по возрастанию начиная с нуля без циклов и т.д. и т.п.

da17
()
Последнее исправление: da17 (всего исправлений: 1)

От конторы же зависит. Коллеги предлагали решить задачу - ставим карандаш на острие под небольшим углом к вертикали и отпускаем. Посчитать как он будет падать.

AntonI ★★★★
()

вам с этим человеком общаться, практически каждый день.

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

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

а всю эту олимпиадную херь оставьте пионерам.

olelookoe ★★★
()

Никакое собеседование и примеры кода итд тупые вопросы не смогут отфильтровать знающего кандидата

Есть только один действенные метод

Даете тестовое оплачиваемое задание

Если кандидат справляется, оплачиваете, жмете руки и берете в комманду

Не справляется, оплачиваете по минимальному тарифу, жмете руки и расходитесь

anonymous
()

Для начала leetcode «283. Move Zeroes», потом посложнее и где надо больше кода писать. В процессе написания кода, если кандидат начнет писать что-то не очень адекватное или неэффективное, то могу задавать вопросы по теории.

Reset ★★★★★
()

Один знакомый матёрый плюсовик спрашивает, среди прочего (которого я не помню), про исключения: виды гарантий.

dimgel ★★★★★
()

у нас это что-то типа как тестируете код, какими линтерами пользуетесь, (кандидат упоминает что например парсил json) какой пользовались библиотекой для парсинга json и почему, и т.д.

Lrrr ★★★★★
()

Поговорим исключительно о технической части.

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

anonymous
()
Ответ на: комментарий от rumgot

Будет: multiple declarations in a single statement reduces readability [readability-isolate-declaration].

Fixed:

A *b = new B;
A a(1);
neon1ks ★★
()

Задача понять хорош кандидат для проекта или нет, как мне кажется, супер сложна.

Не в бровь а в глаз, я бы сказал.

Поговорим исключительно о технической части. У кого есть опыт - поделитесь что вы спрашиваете у middle/senior разработчиков?

Мне это видится примерно так. Гонять по стандартам / нюансам абсолютно бессмысленно (кого интересуют справочные знания которые гуглятся за 2 минуты?) Ваша задача понять насколько человек умён в принципе, и насколько его заявленное резюме соответствует действительности. У меня есть с десяток стандартных задачек, как по программированию (структуры данных, алгоритмы), так и по математике. Причём математика сформулирована так что человек должен сам выписать уравнение (систему уравнений) как минимум, и в идеале его (их) решить, до «конкретных циферок», а не до «ну дальше всё очевидно». В зависимости от предполагаемой позиции я предлагаю те или иные из этого набора. С Вашего позволения я сами задачки озвучивать не буду - конкретика здесь не так важна как методология. Замечу что все задачки школьного уровня (никаких дифуров, урматов, ТФКП, интегралов по замкнутому контуру и тому подобного) - по факту этого более чем достаточно.

Примерно 25-50% отведённого времени трачу на проход по резюме. Человек заявил что занимался low-latency вещами - великолепно! Мы обсудим что именно он делал, какие задачи решал, каких показателей в итоге добился. Утверждает что глубоко знает TCP/IP - замечательно! Мы начнём с базовых вещей, и если человек тянет дойдём до весьма низкого уровня (например я уверен что мало кто из здесь присутствующих знает что происходит on-the-wire при посылке UDP пакета на удаленный порт на котором никто не слушает, и как это можно использовать).

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

bugfixer ★★★★
()
Последнее исправление: bugfixer (всего исправлений: 1)
Ответ на: комментарий от neon1ks

Готов ли работать на больничном за больничную еду?

anonymous
()
Ответ на: комментарий от iliyap

Чтож бы такое придумать. Например, на прошлых работах пару раз он перегорал, из-за чего увольнялся. А сейчас говорит, что всё норм. В черный список его?)

neon1ks ★★
()
Последнее исправление: neon1ks (всего исправлений: 1)
Ответ на: комментарий от neon1ks

Например, на прошлых работах пару раз он перегорал, из-за чего увольнялся

Если у вас такая работа на которой люди горят или от которой люди горят, то стоит задуматься.

ya-betmen ★★★★★
()
Ответ на: комментарий от iliyap

Можно тогда так, из-за депрессии он несколько раз увольнялся. Сейчас говорит, что всё норм.

neon1ks ★★
()

Если мы про

уровень middle/senior, то даже спрашивать ничего у него не надо долго. Достаточно просто посмотреть в cv/резюме и позвонить прошлым работодателям. Не одному-двум, а нескольким. Всё и станет ясно. Ну и код бегло глянуть который он сможет показать.

Максимум, если есть сомнения, то предоставить оплачиваемое тестовое задание.

Всё. И мудрить тут долго нечего, т.к. миддл-сеньёр не нарисовались внезапно ниоткуда, у него должен быть какой-то бэкграунд из сделанных работ.

Moisha_Liberman ★★
()
Ответ на: комментарий от Reset

Для начала leetcode «283. Move Zeroes»

А почему именно эта задача?

pathfinder ★★★★
()
Ответ на: комментарий от Keltir

является ли инт степенью двойки

Ну это же пионерская задачка :(

Shadow ★★★★★
()
Ответ на: комментарий от anonymous

Кек. Вот ты видишь у чела превосходный код на гитхабе. Берешь его в проект и выясняется, что он вообще не может работать в команде. Не идет на компромиссы и пытается переписать старый код, так как он ему не нравится. Иными словами тормозит команду, а не ускоряет.

Aswed ★★★★★
()
Ответ на: комментарий от olelookoe

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

А на джуниора достаточно уметь включать IDE?

Crocodoom ★★★★★
()
Ответ на: комментарий от Aswed

А это уже проблема менеджмента, что у программистов не хватает времени на рефакторинг кодовой базы.

Взяли человека с

превосходный код на гитхабе.

И ещё жалуетесь, что он ваш говнокод решил причесать. Фу таким быть

Crocodoom ★★★★★
()
Ответ на: комментарий от Crocodoom

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

Aswed ★★★★★
()
Ответ на: комментарий от olelookoe

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

Ага, при этом мысли он свои должен излагать на языке C++.

а всю эту олимпиадную херь оставьте пионерам.

Это не олимпиадная хрень. Для примера откройте произвольную задачу с leetcode и произвольную задачу с codeforces. В первом случае сразу ясно что надо делать и как, во втором случае ты только минут 10 будешь условие понимать, потом полчаса писать формулы на бумажке, и еще полчаса (если повезет) писать код, но обычно все заканчивается тем, что среднестатистический программист с codeforces вообще ничего решить не может :)

Reset ★★★★★
()
Последнее исправление: Reset (всего исправлений: 1)
Ответ на: комментарий от Crocodoom

Вы таки не поверите, некоторые, что приходят на джунов даже что такое IDE не в курсе.

А по сабжу, где работал, было на старте просто поболтать на общетехнические темы (адекват/неадекват), а потом, если у него нет своих наработок, которые можно обсудить,

  • для джунов: дать ему задание на неделю (какой-нибудь простенький ФМ/чатик на сокетах/многопоточную передачу файла (такой мини-торрент)). Справится и сможет хоть в двух/трёх словах объяснить, что он написал и как оно работает - отличный джун и можно брать.
  • для миддлов всё тоже самое, но тестовое и оплачиваемое и сложней, ну если есть рекомендации с прежних мест, так и вообще отлично.
  • сеньёров я не собеседовал (как-бы и сам не), но по общетеоретическому маразму (и прочим справочным стандартам С/С++) точно не гоняли. Больше, насколько я знаю, по вопросам архитектуры (надёжность/сложность/масштабируемость решения и вот это всё).
SkyMaverick ★★★★★
()
Ответ на: комментарий от SkyMaverick

для джунов: дать ему задание на неделю (какой-нибудь простенький ФМ/чатик на сокетах/многопоточную передачу файла (такой мини-торрент)). Справится и сможет хоть в двух/трёх словах объяснить, что он написал и как оно работает - отличный джун и можно брать.

Я плачу!
Ни одного чата не разработал, хотя в много поточность умею …

anonymous
()
Ответ на: комментарий от anonymous

Ну как-бы простенький чатик (хотя-бы консольный) клиент-сервер (mesh придумывать не надо) человек на 10 (можно без ростера) любой джун, к тому же за неделю срока, может осилить. Собственно тут знаний-то: сокеты да многопоток (ну или поллинг), всё.

Никто не заставляет весь XMPP реализовывать, какбы :)

ЗЫ. Я помню, один даже запилил что-то типа тэгов, что, если в сообщении не тэгирован получатель, то сообщение броадкастится всем. Что в задании не оговорено, но в общем-то, почти даже комнаты запилил. Получился у него такой UniChat (если помните,что такое), только на минималках и консольный.

SkyMaverick ★★★★★
()
Последнее исправление: SkyMaverick (всего исправлений: 1)
Ответ на: комментарий от SkyMaverick

задание на неделю

Вот ищет человек работу. Ему надо обойти кучу работодателей. Если каждый будет давать свое «задание на неделю», то выполнение всего этого станет проблемным.

Встает вопрос: «А вы не можете решить свою задачу собеседования не отнимая у соискателя чрезмерно много времени?»

pathfinder ★★★★
()
Ответ на: комментарий от pathfinder

Как-бы ему это заранее говорится, что будет задание, срок неделя. Не знаю, как другие собеседующие, но для меня не было обломом давать задание и через несколько дней после собеса. Ну хочет человек несколько вакансий побегать - ок, бегай.

Тебе сразу сказано, что будет недельное задание. Если сказано, что тебе его дадут, значит впечатление полного аутиста, в принципе, не производишь и я в лице конторы в тебе заинтересован. Если просишь время (задание я оглашать ест-но заранее не буду), ну ок, приходи позже (позвони/мейл напиши/хоть как-то обозначься). Если в течении недели-двух не пришёл, ну значит не очень и надо (отметка-то, что приходил и в принципе вменяем у меня в записной книжке стоит).

За всех не скажу, но отложенное (на разумный срок, ест-но) тестовое, в принципе нормальный ход, почему-бы и нет.

SkyMaverick ★★★★★
()
Последнее исправление: SkyMaverick (всего исправлений: 2)
Ответ на: комментарий от Crocodoom

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

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

поэтому - разговаривать. человек «на своей волне» начиная с определенной позиции для производства просто не нужен.

olelookoe ★★★
()
Ответ на: комментарий от Keltir

меня когда-то спросили самый быстрый способ узнать является ли инт степенью двойки, до сих пор помню :-)

Взять логарифм, не? )

Twissel ★★★★★
()
Ответ на: комментарий от Aswed

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

anonymous2 ★★★★★
()
Ответ на: комментарий от anonymous2

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

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

yetanother ★★
()
Последнее исправление: yetanother (всего исправлений: 1)
Ответ на: комментарий от yetanother

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

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

byko3y ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.