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

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

Потренироваться проходить собеседования: https://clck.ru/3ASssc
Курсы по программированию: https://clck.ru/3ASt6y

Mock-собеседование от Team Lead из Яндекс секции по System Design на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать!

YouTube канал Владимира:    / @vladimir_balun_programming  

Таймкоды:
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

Комментарии

Информация по комментариям в разработке