Потренироваться проходить собеседования: Курсы по программированию: 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