Собеседование Junior C++

Подготовка к собеседованию на C/C++ Developer

Транскрипция видео:

  • так Всем привет Вы на канале embush tracon сегодня у нас тренировочные собеседование на позицию Junior C + разработчик и с нами на связи Максим Всем привет Так Привет В общем давай переходить к нашему собеседованию Итак Расскажи пожалуйста в двух словах о себе о своем опыте как ты пришел к этой точке своего развития Зовут меня Максим учусь в Сибирском государственном университете телекоммуникации информатики в Новосибирске программирование и из-за этого как-то подробно погружаться и очень сильно понравилось

    00:00:00 - 00:01:32

  • понятно хорошо С какими технологиями работал на плюсах Я на кьюти много чего делал на СМЛ для себя всякие проекты писал и в целом просто для изучения а так в основном какого-то такого коммерческого опыта не было такие проекты Понятно хорошо Хорошо спасибо так Ну что ж давай у нас первый вопрос он такой сразу как бы Задачка Да поэтому я тебе сейчас скидываю ссылочку на код Шер я ее скину в чат этого вот ты пожалуйста ее Открой и открой демонстрацию экрана Я туда сейчас закину код с которым мы Поработаем

    00:00:56 - 00:02:46

  • хорошо Так у тебя уже должен был по идее появиться какой-то Код Да отлично Не знаю что тут подсветка синтаксисом Вот Но я думаю ну да я говорю не знаю почему или нет Вот Ну думаю тут в принципе Это и так в общем расскажу двух словах что мы здесь имеем Да и потом перейдем к вопросу По сути у нас как бы есть некий класс Наследник он сам внизу класс карант наследуется от двух базовых классов Вот и также есть у него два поля которые тоже здесь объявлены по сути объявление все эти большие нужны только

    00:02:00 - 00:03:08

  • для того чтобы было видно что каждое поле локирует свои конструкторы вообще каждый класс логирует свою конструктор и свой деструктор вот да вот мы рассмотрим класс каррант Расскажи пожалуйста в каком порядке при вызове при создании вот у нас есть чек ордер функция Да вот мы вызовем эту функцию чек лордер у нас будет создан объект соответственно какой у нас будет порядок вызова конструкторов у данного объекта в процессе его создания насколько я знаю сначала инициализируется поля класса соответственно сначала вызовете

    00:02:39 - 00:03:55

  • конструктор bfield то есть то есть баффилд выведется потом выведется аффилд затем перейдем в Конструктор и должны будут начать вызываться конструкторы родительских классов то есть сначала потом будет так я тебе перебью в общем есть уже как бы ошибочка поэтому давай мы немного остановимся подумаем Верни пожалуйста на каррант вот смотри получается предположим у нас ситуация Да что у нас конструкторы ABS и Base вызываются после карт Да но как бы учитывая что это класс Наследник Вполне возможно что Он

    00:03:16 - 00:04:42

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

    00:04:02 - 00:05:19

  • что есть Множественные исследования как наследование с точки зрения расположения в памяти этих объектов но объект внутри себя хранит экземпляр родительского конца А где он расположится внутри этого объекта Ну то есть у него например есть поля и экземпляр родительского класса как они будут относительно друг друга располагаться распадаться располагаться как они будут относительно друг друга не очень понимаю вопрос в том плане то есть ну в памяти кто будет раньше кто будет позже Но по идее раньше должен быть

    00:04:49 - 00:06:01

  • родительский класс Да все верно то есть тут именно с порядком вызова конструктора мы можем провести как бы аналогию да что вот да прежде проводите налоги Вот смотри у нас конструктор вызовете Раньше у б поля или у А поле это уже после того как мы вызвали да Все мы не думаем про наш конструктор мы не думаем про конструкторы базовых классов вот у нас по сути есть два поля B и а они должны вызвать свои конструкторы у кого вызвать раньше и предположу чтобы скорее всего на этапе обработки врач встретиться

    00:05:26 - 00:06:40

  • Вернее на этапе выполнения Ну вообще в целом Да он раньше объявлен соответственно у б вызовете раньше и такая же аналогия в принципе можно провести аналогию с конструкторами базового класса точнее конструкторами базовых классов то есть они тоже их можно считать как бы полями и соответственно они располагаются раньше полей и друг относительно друга а Base будет вызван раньше чем Base В общем такой довольно часто спрашивают надо знать рекомендую изучить что сначала поля Вот что по поводу что про порядок вызова

    00:06:06 - 00:07:26

  • инструктора знаешь деструкторы будут вызываться в обратном порядке сначала у нас должен будет затеряться сначала выводиться Карен а дальше соответственно Ну дальше в обратном порядке также обратном порядке для полей для этих Ну да Да но только а потом б и потом родительские Потому что раньше чем А так да все тут все хорошо окей а пока демонстрацию можешь отключать Я думаю так так так так я сейчас скажу что дальше спросить такое коротенький вопрос Смотри скажи пожалуйста для чего нужно ключевое слово экспрессии то где оно

    00:06:50 - 00:08:27

  • применяется экспрессии по моему применяется когда мы хотим запретить [музыка] У нас есть класс у него есть одно поле и мы можем провести неявленные преобразование и мы хотим по моему запретить Да это для запрещения не явного преобразования только речь не про поле А про аргументы конструктора То есть это про хорошо Так сейчас смотри сейчас пожалуйста вот именно простым языком поверхностно не вдаваясь подробности вот у нас например такая абстрактная ситуация у нас есть а ну есть такой небольшой проект Да там

    00:07:43 - 00:09:16

  • предположим там какой-то определенный набор ЦПП файлов header-файлов в общем все это дело компилируется и превращается точнее собирается и превращается в exe файл Расскажи пожалуйста именно вот про этапы сборки что ты про них знаешь какой что зачем следует И зачем оно все нужно проекта в исполнении файл у нас начало идет на котором у нас добавляются всякие как это назвать более грамотно не только же инклуды много разных есть да но это директивы при процессора потом после этого у нас идет компиляция

    00:08:32 - 00:10:00

  • и потом линковка хорошо что такое компиляция Что на ней происходит мы переводим компилируем файлы в эти [музыка] Но это объект на это так это правильно все правильно в объектные файлы хорошо только Смотря какие файлы мы компилируем то есть и PP у нас является единицей как бы трансляции хорошо линковка Зачем нужна для хочет правильно для не сопряжения Но для совмещения один вообще если у нас есть несколько скопированных объектных файлов то мы должны соединить один в принципе я лучше не сказал Вот хорошо

    00:09:27 - 00:11:17

  • хорошо отлично так хорошо Давай двигаться дальше вот насколько ты себя уверенно чувствуешь с макросами Скажи пожалуйста Честно сказать вообще не очень как-то их можно попробовать смотрел Ну да механизм устаревший но тем не менее может такой знаешь вопрос такой как обычно с подвохом и все такое То есть почему аргументы макросов в самом макросе нужно брать в скобки Я не уверена предположу чтобы они принимались как аргументы а не как [музыка] сказать даже не знаю То есть даже денег Ну хорошо А давай вот

    00:10:35 - 00:12:07

  • подумаем Например макрос он у нас Каким образом Ну вот у нас на этапе при процессинга Каким образом работает макрос он поставляется в на место там где Ну то есть можно сказать что текст его подставляется да Ну да Ну хорошо а вот что может произойти Например если у нас какой-нибудь макрос Ну что-нибудь простое например да там какой-нибудь умножение какие-то например арифметические преобразования будут в его рамках происходить да Что например может пойти не так если мы не возьмем скобки аргументы Но именно внутри

    00:11:35 - 00:12:48

  • макроса который мы будем подставлять они могут восприниматься как текстами как единственный мое предложение в принципе может даже она в какой-то степени будет и верно я вообще вел в сторону того что если мы например будем передавать какие-то отрицательные числа или мы в каком-то странном месте будем использовать макрос да то у нас могут сбиться порядок действий например или что-то в этом роде то есть по поводу По поводу текста но я не могу придумать такую ситуацию но в принципе может быть наверное не знаю может быть

    00:12:18 - 00:13:22

  • Ты что я тебя перебил что ты хотел сказать Нет ну смысле то есть имеется ввиду что скобки в плане для правильного порядка действия Это имеется даже не то что для правильного порядка 10 скорее чтобы просто все было правильно То есть например у макроса будет внутри какой-нибудь он будет разворачиваться в терминарный оператор Да и будет вставляться в какое-то странное место и получится что например у нас он ветеринарный оператор закончится предположим пятеркой а мы сразу макрос его скобками вставим рядом с каким-то

    00:12:52 - 00:13:54

  • символом Да И вот это последняя пятерка там не обернутая в скобки Да она слепится условно с другим каким-то символом и превратиться например в 55 или что-нибудь в этом роде Ну такие вот ситуации могут произойти так хорошо давай дальше Вот расскажи пожалуйста про препроцессор мы поговорили про компиляцию поговорили Знаешь ли ты как вот хитры мы можем защитить от повторного включения в исполнении файл когда мы разрабатываем с помощью можно это сделать таким образом то есть если у нас он уже вначале если у нас уже определен если не

    00:13:22 - 00:14:46

  • определенно заполнится если уже определён то тогда не будет туда заходить и в компиляторе от Microsoft есть pragmalance Да все верно про баланс уже не только в компиляторе Microsoft Ну все правильно все сказал так хорошо Окей смотри Давай мы сейчас перейдем обратно к демонстрации экрана и к этой к кот кот Шер в общем открывай пожалуйста Да да все видно все хорошо смотри реализуй пожалуйста два класса А и Б которые будут хранить указатели друг на друга просвечивается Так ну нет работать не будет

    00:14:11 - 00:15:41

  • получается смотри во-первых с указателями Да мы тут храним получается просто как поля Да экземпляры Вот вот смотри что Ну например в случае для класса Б Да все хорошо но что будет не так для класса А Но для него еще неопределенно класс бы то есть он не знает хорошо Как мы можем выкрутиться из этой ситуации сейчас уже Сейчас подумаю я встречал такие проблемы у себя когда сам я уже читать а по-моему принципе довольно таки старый способ выкручивания просто Например можно все еще вспомнить тоже были похожие ситуации

    00:15:32 - 00:17:04

  • Ну смысле предопределение или как-то предварительное предварительная декларация правильнее сказать Ну и как-то реализовать Ну там как-то можно закрыть да Ну вот как мы можем просто сообщить классу а про то что класс бы ты вот предварительную декларацию функции знаешь как выглядит да да Хорошо хорошо так вот давай аналогичная проведем же с предварительной декларацией класса не так будет ошибка Да вот так будет правильно Да да ну то есть по сути как бы да мы сообщаем о том что у нас существует некий класс Б это что он будет чтобы не

    00:16:25 - 00:17:52

  • ругался чтобы он был реализован в последствии можно проводить аналогию с сишней как-то типирование называется ну тоже можно сказать предварительно декларация функций вот так хорошо Сейчас пока не закрывай я скажу что у нас там дальше да Можешь пока убирать демонстрацию экрана чтобы нас больше растягивало на экран вот смотри Расскажи мне пожалуйста вот такое следующий такая ситуация что если например что будет если вызвать оператора делит на на ПТР что произойдет для этого видео чтобы мы могли безопасно пользоваться

    00:17:34 - 00:19:15

  • то есть на 0 А если Я не пробовал но предположил то что должно компиляции вывести Нет просто 0 это канал его не существует все плюс плюс Но это это макрос из windows.h смотри ну то есть делит на на ПТР и так же самое как и долить на 0 они оба сработают хорошо то есть ничего не произойдет Это подразумевает стандартам и такая ошибочка про по истории возникновения на ПТР скорее на опыты возникнет для этих ситуаций Да потому что ее как бы нет в данной ситуации вот он возник для того что на опыты кастится

    00:18:26 - 00:19:43

  • к боливому значению но при этом на ПТР не костится к арифметическому значению То есть это более назовем это более безопасное зануление указателя вот так давай дальше двигаться хорошо Расскажи мне пожалуйста про про виртуальные деструкторы зачем они нужны виртуальная инструктор нужен когда мы через экземпляр наследника [музыка] допустим у нас есть а точно нас есть класса А мы делаем равнозываться деструктор чтобы хорошо к чему это может привести если не вызовется утечки памяти как обычно Вот хорошо есть существует ли виртуальный

    00:19:13 - 00:21:09

  • конструктор по идее нет должно быть правильно не существует так отлично Хорошо Смотри такой вопрос Расскажи мне пожалуйста опять-таки своими словами да про то как ты себе видишь как работает максимонтика и принципе да как она работает в чем ее суть Расскажи пожалуйста и она в общем-то нужно для того чтобы приводить то есть мы можем переместить [музыка] содержимое одного класса другой класс либо другой объект и при этом и при этом второй класс он сам себя запутал смотри во-первых Давай мы абстрагируемся от преобразования

    00:20:27 - 00:22:09

  • Да как бы все хорошо но я немного не про это Я скорее больше про логический алгоритмическую составляющую Смотри вот например у тебя есть строка string вот что произойдет если ты ее скопируешь Ну она по бойцов скопировать Ну смысле в другой Да об этом просто скопируется ну то есть у тебя один экземпляр останется она скопируется у тебя там выделится память Да скопируется хорошо чтобы эти переместишь то просто из она содержимое старого класса переместиться в новый А в старом останется состояние это как мы уже напишем правильно да то

    00:21:42 - 00:23:16

  • есть получается что мы вот этим вот перемещением Да мы избежим как бы выделение памяти Да И вот этого копирования вот Ну да то есть как такового перемещение не существует просто Это опять-таки это тоже просто тоже копирование только именно как бы просто содержимого хорошо В целом много запутался вижу что в курсе вот у нас есть оператора New Да и например что-то знаешь ли ты про placement New что это такое нет не слышал Хорошо давай попробуем вывести это дело из названия да то есть например вот Расскажи мне что делает вообще New

    00:22:32 - 00:24:06

  • опять-таки В общих чертах это оператор который выделяет память для объекта что он еще делает помимо выделение памяти возвращается функция малых она стоит [музыка] [музыка] не замеряет а вызывает конструктор Господи да вот так вот верно вызывает конструктор хорошо вот смотри получается выделяет память до вызывает конструктор вот мы говорим Ну и возвращается соответственно значение вот этого указателя данного типа данных Вот хорошо Вот например плейсмент New Да вот какой здесь этап мы вот у нас есть

    00:23:21 - 00:24:52

  • слово placement да как размещение соответственно Какой этап мы получается можем исключить из оператора New то есть по сути два этапа есть да это вызов конструктора и выделение памяти Вот ладно так Нет наоборот конструктор вызывается просто по определенному адресу мы туда Передаем этот адрес И у нас вот на этой памяти вызывается конструктор Вот смотри как ты Ты видишь какой-то например практически Ну то есть понятно Да у нас есть какой-то кусок памяти мы дали указательный его начало там вызвался конструктор и вернулся как бы

    00:24:20 - 00:25:30

  • указатель на этот как бы класс так вот Можешь ли ты какой-то практическое применение придумать для такого оператора но допустим если мы можем если у нас допустим критично важно правильно использовать вернее мало памяти то мы можем не обращаясь к системой за удалением или новым выделением по тем под одним и тем же указателям самим контролировать инструкторы и вызов конструктора то есть принципе мы можем и например тоже какую-то память одну брать и с ней работать и соответственно Не дергать там кучу и так далее хорошо

    00:24:58 - 00:26:22

  • Так сейчас я подумаю что еще можно спросить смотри Расскажи мне пожалуйста как запретить Вот ты создаешь какой-то класс Ну точнее декларируешь его как можно запретить от него наследоваться от этого класса сейчас скажу Как ты можешь сейчас честно что-то прям без головы вылетел сейчас Может это ключевое слово есть что такое поставить Delete но Delete это мы говорим про например удаление скажем так каких-то конструкторов я именно про то что вот этот класс его нельзя будет использовать как базовый класс для наследования

    00:25:48 - 00:27:11

  • прям компилятор скажу что нет Все Ну да я понимаю я видел подобную конструкцию прям с головы вылетел почему-то Ну ключевое слово Final тебе о чем-то говорит а да То есть можно поставить для него как файл и да все вспомнил То есть можно поставить для него файл и он будет считаться как конечно Ну да от него нельзя будет наследоваться хорошо вот смотри так немного в сторону отойдем вот у нас и значит конструктор Да происходит в нем какие-то операции какие-то инициализации Потом значит происходит у нас Exception

    00:26:55 - 00:28:20

  • в конструкторе и этот Exception мы не обрабатываем мы его из конструктора как бы выпускаем ну где-то потом ловим обрабатываем приложение у нас не крошится вот в чем подвох Что может пойти с классом не так если мы выбросим в конструкторе Exception и в пределах конструктора его не работаем мы можем потенциальному допустим можем не выделить памяти у нас какие-то из указатели будут не проинициализированы А это неважно потому что у нас сам класс получится но не проинициализирован как бы этого же класса не будет и полей его

    00:27:38 - 00:28:56

  • получается не будет хорошо мы можем наоборот тогда выделить память у нас выбросился конструктор и из-за этого тоже можно всех конструкторы из-за этого будет не так допустим в целом вообще инструктор не вызовете если мы выпустим не будет считаться что объект вообще был создан хорошо вот Ну предположим ты например там условно до Exception там сделал что-то там неё Да у тебя выбросился Exception соответственно вот этот указатель он как бы утечка произошла Скажи пожалуйста как вообще защищаться таких ситуаций

    00:28:18 - 00:29:41

  • не выбрасывать исключение из конструктора не предположим мы выбрасываем исключение Как работать с вот с такими вот ресурсами с такими объектами что мы можем применять чтобы избегать таких ситуаций можно пометить как Но это по-моему делается только для инструктора можно и конструкторы память как на Accept но опять-таки речь не об этом Exception произойдет Exception выйдет за пределы то есть Что можно сделать с указателями чтобы не было утечек в smartpointress Да все верно Да речь про Smart Pointer и то есть например у

    00:29:12 - 00:30:26

  • них как бы как у временных объектов деструкторы будут вызваны Точнее не совсем временных Но их деструкторы будут вызваны вот Хорошо что ты знаешь о вообще умных указателях то есть там какие-то их знаешь виды Ну стандартами шаблонов если в принципе если ты не знаешь стандартной библиотеки шаблонов Ты знаешь из кьют Это вопрос такой же самый Ну есть автопт но он вроде как уже считается устаревшим и в каком-то свои стандартов не выкинута Как раскрыть короче да да есть юник ПТР у него в Отличие в том то что он запрещает

    00:29:53 - 00:31:16

  • [музыка] запрещает нескольким указателям наследуется на одну и ту же память как ты сказала наследоваться Ну скорее он сам уникально владеет и позволяет нескольким указателям управлять счетчик он следит за тем чтобы не освободить память Ну то есть получается он как бы на подсчете своих вот экземпляров работает хорошо А ну в паре с шард понтером Кто идет Да Вик пойнтер все правильно Ну а vicpointer в чем его отличие от sharpointer Зачем он нужен сейчас сказать не помню не знаю Ну тогда расскажу двух словах и

    00:30:40 - 00:32:25

  • как бы да тоже надо это естественно знать ну Виктор идет sharpenter как бы в паре потому что он образуется из как бы sharpointer он ссылается точнее хранит указатель на тот же самый ресурс назовем это так и он просто не участвует в подсчете ссылок то есть если например там у нас есть 10 шарльт поинтеров 10 поинтеров все Share поинтеры будут уничтожены 10 тиков останется то объект все равно будет очищен это раз но и исторически он возник из необходимости тех же самых злосчастных кольцевых указателей

    00:31:57 - 00:33:14

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

    00:32:36 - 00:33:55

  • вот у нас тут и пайнт нарисован значит сейчас может нарисован значит однонаправленный список Вот соответственно у нас к этому списку доступ только ты же знаешь что такое однонаправленный список Да вот у нас есть доступ только к элементу под номером один да а точнее элементы со значением 1 Вот и по сути задача такая Но это опять-таки рассказать подумать как мы можем из данного списка удалить данный элемент единицу при этом чтобы структура его сохранялась чтобы после четверки у нас как бы была тройка вот

    00:33:25 - 00:35:03

  • у нас нет Да кстати на четверка у нас нет у нас нет доступа Ну можно забрать у тройки все ее поля и удалить тройку А все полет уроки забрать себе таким образом то есть Взять ее состояние внутренней себе и сушу Ну хорошо Да в принципе все правильно но а что мы сделаем с этой частью с оставшейся я удалил и затем поставлю все правильно прям хорошо так пока супер так хорошо давай еще что-нибудь спросим Давай поговорим немного про Как вообще у тебя со стандартной библиотекой шаблонов с контейнерами дело встает

    00:34:15 - 00:35:56

  • нормально нормально хорошо Хорошо тогда расскажи пожалуйста например вот у меня есть есть Вектор Да я объявляю как бы пустой вектор и я например уже чтобы без кода просто на словах Да мне цикл я в конец этого вектора Вставляю как бы 100 элементов в чем все хорошо или в чем тут проблема например с такой вставкой конец смысле Ну не очень то что каждый раз то есть в целом каждый раз в цикле добавляю 100 элементов мы будем много перевыделять памяти для этого вектора То есть у нас же попасть она будет

    00:35:12 - 00:36:42

  • определенного размера и потом она будет рано или поздно будет увеличиваться Да а как бы как считается насколько переодевается память как считается как считается просто на самом деле это немного не определено стандартом Да но просто есть как бы условный условный ответ как бы на такой вопрос вот насколько перевыделяется память от того что уже есть векторы плюс 10 или что-то такое Мне казалось но нет не плюс 10 вообще алгоритмически считается как бы что должно перевыделяться именно в два раза больше

    00:36:03 - 00:37:15

  • то есть например было пять стало 10 вот но это тоже не всегда так то есть если например именно проверить да то вот я проверял вижу студии до сотни переведений было там в полтора раза но это какие-то их свои особенности уже реализации вектора хорошо а расскажи пожалуйста в чем отличие будет например ну с это да И оно сет построен по-моему на основе бинарного дерева поиска построен на основе хешмака и у Сета будет заранее отсортировано электровоз заранее сортированы будет константный доступ к объектам

    00:36:47 - 00:38:28

  • константным хорошо Окей Смотри вот получается у нас как ты еще можешь назвать например сеты мапу А нордерт мапу как эти контейнеры называются ассоциативные да да речь про это хорошо то есть нас например вот какой-то ключ какое-то значение да скажи пожалуйста что что у нас Какие атрибуты должны находиться у класса чтобы он мог использоваться как ключ в ассоциативных контейнерах оператор сравнения он должен быть определен но не совсем так если у нас будет только оператор сравнения все остальное будет

    00:37:51 - 00:39:16

  • неопределено это не очень хорошо потому что для титинного контейнера вот как у нас работает бинарное дерево поиска По какому принципу там располагаются объекты Но обычно слева те что меньше корни Давайте Ну то есть как минимум нам нужно уметь определять что кто-то меньше кто-то больше просто просто сравнение нам не хватит Но тогда хорошо давай на сравнение мы забыли предположим это не сравнение что это должно быть а в плане смысле хорошо оператор Да но это не сравнение вот какой-то оператор должен быть

    00:38:38 - 00:39:57

  • операторы круглые скобки которые не опять таки оператор который будет предназначен для поиска в этом дереве для сравнения тоже да для там больше Там и так далее вот какой оператор Нам нужен необходим [музыка] не очень ну я вообще говорю про то что у нас должен быть определен либо должна быть возможность использовать оператор меньше для данного объекта то есть что просто когда я говорил про Операцию это имел ввиду но тут как бы надо быть точным потому что из оператора меньше у нас выводится оператор больше и из

    00:39:24 - 00:40:47

  • оператора уже меньше больше у нас выводится собственно оператор равно То есть как бы все-таки не точно будет ответ вот Ну конечно если прямо докапываться и в принципе могут Такое спрашивать Что например ты там такой например ты сразу знаешь Да и ты говоришь оператор меньше да и все могут еще например подловить на том что спросить что вообще по идее Да объекты должны быть еще там например по крайней мере перемещаемые то есть чтобы их можно было двигать в рамках структуры то есть тоже вот такой вопрос могут

    00:40:13 - 00:41:26

  • задать ну или копируемый вот так хорошо такой вопрос больше на порассуждать Вот ты говорил про то что типа тебе не понравился JavaScript Да ты там перешел на c++ и вот что ты можешь сказать что тебе например нравится все плюс плюс Что например си плюс плюс не нравится чем предлагаете например близостью к железу просто тупо в этом плане удобнее чем многие другие быстрее Ну это как-то [музыка] нравится следить за тем как мне нравится когда много работы делают за меня не хочется то есть привлекает получается более твоя

    00:40:50 - 00:42:25

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

    00:41:51 - 00:43:19

  • способов ошибиться общем что-то не так хорошо Слушай ну наверное все наверное все давай переходить к фидбэку расскажу решил отдельно записать фидбэк пройдемся по технической части что мне понравилось что не очень понравилось покроем какие-то моменты которые важно знать и которые были отвечены хорошо Итак сбился на порядки вызовов конструкторов данный вопрос довольно таки важен его часто спрашивают надо как бы надо знать надо понимать далее очень хороший момент что есть понимание о том как происходит сборка проекта

    00:42:40 - 00:44:07

  • однозначно плюс что Про это было рассказано реализация два класса ссылающихся друг на друга очень такой занятный момент то есть был какой-то момент с тем что интервьюер сбился но затем с подсказкой не сдался и Максим как бы задача реализовал что однозначный плюс на собеседованиях важно не сдаваться и продолжается и вперед Вот хорошо я справился с задачей с однонаправленным списком Вот был момент с делить на лптр делит 0 к этому могут прицепиться это надо знать далее получается из того что еще важного было

    00:43:25 - 00:44:53

  • упущено Ну ассоциативными контейнерами было упомянуто про операторы как бы сравнение да то что важно иметь возможность сравнивать Возможно это человек и подразумевал Но конечно тут как бы нужно точность нужно понимание что это оператор меньше что из оператора меньше дальнейших другие операторы из него как бы выводятся отдельно хочу обратить внимание на хороший софт скиллы то есть человек а хорошо держался на собеседовании хорошо говорил уверенно это это важно Максим оставил после себя хорошее впечатление То есть учитывая как бы

    00:44:09 - 00:45:31

  • высокий конкуренции и так далее это будет важный момент в том что решение будет принято например вашу пользу хочет отдельно сказать большое спасибо Максимум что осмелился прийти на собеседование показал довольно таки неплохой уровень вопросы были сложные то есть вопросы в принципе можно задать поэтому я собеседованием доволен что пишите пишите комментарии ставьте лайки подписывайтесь на канал всем спасибо Пока

    00:44:52 - 00:46:07