Тёмный

Mock-собеседование по C++ от Team Lead из Яндекса 

it-interview
Подписаться 3,1 тыс.
Просмотров 1,5 тыс.
50% 1

Потренироваться проходить собеседования: clck.ru/3ASssc
Курсы по программированию: clck.ru/3ASt6y
Mock-собеседование от Team Lead из Яндекс секции по System Design на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать!
RU-vid канал Владимира: / @vladimir_balun_progra...
Таймкоды:
00:00 - Знакомство
00:16 - Умные указатели
01:55 - Начало реализации shared_ptr
08:16 - Реализация дефолтного конструктора
09:58 - Реализация конструктора с параметром
11:30 - Реализация деструктора
22:10 - Реализация конструктора копирования
26:52 - Реализация оператора копирования
47:17 - Реализация конструктора перемещения
49:47 - Реализация оператора перемещения
51:15 - Заключение
[[ Отзыв о кандидате ]]
Рекомендовать этого человека на следующий этап? ДА
Каковы были его технические навыки? 3/5
Каковы были его способности решать проблемы? 3/5
Каковы были его коммуникативные способности? 5/5
За время собеседования успели написать только реализацию shared_ptr, но на теоретические вопросы времени не хватило. Кандидат неплохо знает основы С++, но имеет проблемы с написанием кода - во время программирования много бажил, не учитывал различные пограничные случаи, а также местами писал не совсем оптимальный код (про некоторые тонкости и нюансы С++ не знает). По общению приятный, было комфортно общаться с кандидатом.
Реализация shared_ptr - сказал, что будет статик счетчик, но после моей подсказки понял, что это не будет работать. Затем начал делать счетчик ссылок на стеке - снова после подсказки понял, что это не будет работать (предложил использовать указатель на структуру, но я поправил, что будет проще указатель на счетчик). Предлагал выделять память в конструкторе по умолчанию, но я подсказал, что в определенных ситуациях это будет неоптимально. Посадил много багов с указателями в деструкторе. Не знал, что delete безопасен для нулевых указателей. Не учел момент с неинициализированными полями класса. В конструкторе копирования стал инкрементировать счетчик ссылок в константном объекте. Не знаком со swap идиомой. В операторе копирования посадил очень много багов и написал сложный код - с моей подсказкой порефакторили его. В конструкторе копирования не проверил копирование самого в себя, но когда подсказал - стал проверять это неправильно. В операторе копирования после очистки памяти забыл ее занулить. По итогу написали примитивную версию shared_ptr, но с бооольшим количеством подсказок и вопросов.
Рекомендации для кандидата:
Я бы посоветовал уделить внимание тонкостям и нюнасам С++ - например, кандидат не знал про swap идиому и про то, что delete безопасен для нулевых указателей. Также было бы круто больше практиковаться в написании кода - так как во время реализации всплывало большое кол-во различных ошибок и неучтенных кейсов.
#собеседование #mockсобеседование #cpp #c #cppprogramming

Опубликовано:

 

13 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 15   
@user-pu1pn7pi4x
@user-pu1pn7pi4x 12 дней назад
Классный контент, делай ещё!:)
@billjohnes9380
@billjohnes9380 6 дней назад
14:50 Есть хорошее правило: все постфиксные унарные приоритетнее всех префиксных унарных, а все унарные приоритетнее всех бинарных. Но в данном случае префиксный минус-минус решил бы все проблемы, да ещё и повысил бы читаемость. 24:15 Объект oth, конечно, константный, но меняется-то в нём не указатель, а разыменованное значение, которое не является константным даже для константного oth. Написано, что инкрементируется указатель, но это собеседуемый не смог правильно написать, подразумевается, что инкрементироваться должно разыменованное значение.
@user-gq3nk5wf6j
@user-gq3nk5wf6j 11 дней назад
Круто. Спасибо. Критически мало собесов по С++ найти получается
@nichtverstehen2045
@nichtverstehen2045 10 дней назад
"из яндекса". сразу вспомнился анекдот: - иван. я, конечно, не верю, но слухи идут. короче, твоя жена чуть ли не со всем городом переспала - пффф... тоже мне город
@user-wv2jc4xm7r
@user-wv2jc4xm7r 11 дней назад
Позволю себе немного покритиковать собеседующего. А именно начало критики реализации метода класса сразу же после написанием собеседуемого последней его строчки, тут есть несколько проблем: Во-перых само по себе обсуждение корректности отдельного метода не в контексте чисто языковых ошибок, а непосредственно логики класса - спорна, т.к. их работа де-факто завязана на общий сайд-эффект, которым являются состояния класса - о корректности методов полноценно можно говорить только после полной реализации их всех. Понятно, что всегда можно исходить из концепции, заранее предвидеть проблему или вовсе сказать, что это стандартная вещь и кандадат должен ее тупо знать, но если вы расчитываете, что человек реально должен что-то сам, своей головой, спроектировать в процессе интервью - рассчитывать, что он сходу реализует корректный метод без последующей итерации по остальным методам класса и анализа возможных проблем - странно. Во-вторых у людей разный стиль написания кода и многим намного проще исходить из некоторого "костяка" решения постепенно рефакторя и дополировывая код и решая "граничные" случаи. Я понимаю, что время ограничено, да и вы вполне могли воспринимать это как легитимную наводку к решению, но воспринимается это как моментальная критика того, что кандидат еще даже сам не пытался утвердить как правильное решение. В стрессовой ситуации собеседования это особенно болезненно и по кандидату это видно. Можно же хотя бы дождаться пока попытается перейти к следующему методу или хотя бы предложить вернуться к нему позже. А в остальном - отличное интервью и спасибо за видео)
@billjohnes9380
@billjohnes9380 10 дней назад
Здесь, скорее, задача оказалась не по уровню собеседуемого, то есть, явно сложнее, чем следовало бы. Поэтому почти сразу возник цейтнот со всеми вытекающими, о которых вы пишете.
@billjohnes9380
@billjohnes9380 10 дней назад
Получил мощнейшие впечатления! Это -- особое умение, видеть абсолютную жесть и даже глазом не моргнуть! Хотя во второй половине собеседования во времена особой жести во взгляде замечалось нечто вроде либо лёгкого ужаса, либо офигения от увиденного. Жаль, что так вышло, джуну попроще что-то лучше было дать, с unique_ptr он бы справился явно лучше. Всё собеседование, кстати, прошло при неправильно объявленном strong_counter, который при таком объявлении -- типа int. Что, кстати, дополнительно подтверждает, что попался именно джун. Тип возвращаемого значения из перемещающего operator = тоже неверен. Какую функцию несут скобки в выражениях, где он пытается инкрементировать strong_counter? За всё время собеседования собеседуемому и в голову не пришло, что запись выглядит как-то слегка не так. Ещё есть моменты, тайминг себе записал, может, потом прокомментирую.
@jin_x_
@jin_x_ 9 дней назад
*(strong_counter)++; //wat? :) Приоритет, кстати, тут легко определить, достаточно вспомнить классическое сишное копирование памяти: *a++ = *b++. Ну и... можно же ++*strong_counter. Однако: int* obj, strong_counter; // счётчик же - простой int :)
@xxxxzzzont
@xxxxzzzont 10 дней назад
В 2к24 кто-то еще учит эту кабаллу? 😅
@xxxxzzzont
@xxxxzzzont 11 дней назад
Так че, взяли в итоге?
@nichtverstehen2045
@nichtverstehen2045 10 дней назад
таких не берут в космонавты
@bushi_ys
@bushi_ys 11 дней назад
ничего не понимаю в плюсах, но это нормально, что лида гоняют по лайвкодингу?
@nichtverstehen2045
@nichtverstehen2045 10 дней назад
идиоты из яндекса больше ничего придумать не смогли
@billjohnes9380
@billjohnes9380 10 дней назад
В данном случае вы не поняли, кто кого гоняет. Это Lead гоняет Junior'а, а не наоборот.
@bushi_ys
@bushi_ys 10 дней назад
Понял, прошу прощения ​@@billjohnes9380
Далее
How Many Balloons Does It Take To Fly?
00:18
Просмотров 77 млн
ПАПА ГАМБУРГЕР
00:13
Просмотров 163 тыс.
Coding Interviews Be Like
5:31
Просмотров 6 млн
How Many Balloons Does It Take To Fly?
00:18
Просмотров 77 млн