Mock - собеседование программиста: скриннинг С++

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

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

  • давай начнем с паттернов сейчас не туда пишу секунду с pattern of patterns но паттерны не общее такие знаешь объекта реки роны именно плюсовой паттерны с попади она слышала нет что такое попадем на [музыка] не таки хорошо дату и смотри если не знаешь просто сразу него ринит что вы просто зря времени не заняла некий правило 5 правило 0 нет окей хорошо провела 5 праве на 0 хорошо с финна я слышал я знаю которая школы окей хорошо хорошо да хорошо тогда паттерны пропустим идем тогда дальше давай пойдем стандартной библиотеки стер

    00:00:00 - 00:01:31

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

    00:00:46 - 00:02:20

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

    00:01:36 - 00:02:53

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

    00:02:16 - 00:03:30

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

    00:02:58 - 00:04:10

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

    00:03:46 - 00:04:58

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

    00:04:22 - 00:05:47

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

    00:05:09 - 00:06:40

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

    00:05:54 - 00:07:31

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

    00:06:47 - 00:08:08

  • там амортизационная там константа ангес какой-то сложен слова случай когда происходит происходит операций орифише нужно пиридоксина все таблица но это сложность называется амортизационной смотри ok хорошо это понятно а я вот хочу норберт могу добавить видишь два слова с да но не разные слова да и они мне на выходе дают в [ __ ] да они мне на юге на выходе то есть и их прогонять через хэш-функции нем не дают один и тот же индекс да и а слова то разные как этот штука называется когда два как бы разных слова на дают один и

    00:07:28 - 00:08:32

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

    00:08:00 - 00:09:13

  • ну писал просто оператор риверс трата вот риверс отлично если риверс титратор да еще какие виды есть input под сможет рассказать о такой подход концепция я понял что где таких [музыка] алгоритмов можно [музыка] вызвать зачем чтобы получить какой герой ветеранов помощью которого можно было доставлять нет там не совсем там в бэккантри по сути будет вызвать кэшбэк если это абстрактное водочного выглядела до если мы допустим делает копит какой-то вектор u которую не правило цена на память the back on

    00:08:47 - 00:10:03

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

    00:09:32 - 00:10:44

  • насколько я помню форвард значит они могут насколько помню форма называется давай хорошо смотри и предстоят такой случай что нас есть вектор и вектор вектор вектор винтов какое-то значение внутри себя хранить до и я хочу его отсортировать дата . сорт с td42 надо все да . бегин дата дата код будет работать до это но только печатка ну да 2 эта цифра нет да да да да смотри его ну здесь какая то у нас инициализация внутри здесь какие-то элементы представь я его хочу отсортировать дарт а вот здесь какие то

    00:10:16 - 00:11:51

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

    00:11:12 - 00:12:19

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

    00:11:57 - 00:13:02

  • написать немного кода да внутри вот signat прям вот до вызов функции немного из них чтобы именно сортировалось первой половина года его первая половина векторами на но сюда нужно не беги ночи да супер отлично все и внутри последний вопрос на это уже это уже стиль мы оставили в стороне сейчас мы поговорим с тобой про вот смотри вот эти вот бегин они определены стандартом и space stg до функций std бегин но мы можем вызывать их без явного указания namespace и знаешь как эта штука в си плюс плюс называется

    00:12:32 - 00:13:38

  • то есть смотри мы using нет нет нет нет вот здесь мы я не использую zig не space stg я здесь использую видишь явно говорю и стали сорт но вот здесь я не пишут и гена вот здесь например только вот здесь хотя эта функция определена в std то что сама какой-то чувак мммм владели это называется да окей хорошо хорошо так пошли дальше пошли дальше давай теперь по быстренькому про виртуальность виртуально наследования чем рассказать никогда не применял мы про него как а то что это связано с разрешением

    00:13:44 - 00:15:06

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

    00:14:28 - 00:15:42

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

    00:15:13 - 00:16:18

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

    00:15:45 - 00:17:01

  • это связанно с тем как мы дальше успел вниз выливаю культуре красавица публичного ну допустим я просто взял грубо говоря от наследоваться у меня есть вектор 3d до наследоваться от вектора 2d то есть чтобы x y тут такое представим что я захотел так и научно виртуальной деструктор делателями ну просто я к чему говорю виртуально исследование виртуально исследование нужно тогда когда мы собираемся работать с артистом если мы собираемся работать по него отлично значимости полиморфной и только как начать и поймал fit тогда то есть

    00:16:28 - 00:17:32

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

    00:17:05 - 00:18:10

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

    00:17:38 - 00:18:39

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

    00:18:15 - 00:19:29

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

    00:19:06 - 00:20:08

  • составить [музыка] но очень хорошо ладно дирхам за указывать конкретную типу особенной : имя не окей хорошо давайте тогда пойдем дальше но тоже это бы части стиль но тоже часть smart пайперс работал с местным выгонишь ага smartpoint с каких значит первых unix и то есть автор . она давай софта на чем почему его 11 сделали брекетов 17 удалили какая-то была сложность операции какой-то неожиданный потому что при копировании лидировал разрушающие копирование да окей хорошо да ты говорил про шалит адаптеры вот он

    00:19:44 - 00:21:24

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

    00:20:39 - 00:21:48

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

    00:21:25 - 00:22:32

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

    00:22:06 - 00:23:39

  • функции будут мы не будет ничего чтобы создан лет номере там на уровне лака газирования просто при вызове конструктора 6 потеря томас создается одна локация для объектов от решаем потеря другая локация для counter блока если мы делаем микшер делается одна локация для объекта и к утру блока совместное фото при помощи луч но спасение это все работает вот и соответственно тобой такие ситуации когда к примеру у нас потеряли счетчик ну то есть мы у нас 0 стильных ссылок если мы создали через конструктор да и 0

    00:22:56 - 00:24:06

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

    00:23:33 - 00:24:41

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

    00:24:14 - 00:25:33

  • интервью и я хочу правильности домов вот что будет в муфт выведена но они выведены просто чему будет равен могут и чему будет равен объем тогда уже такой вопрос я бы могут просто копировали но просто дай активов очистить мог ничего не перемещает помешает это операторы превышение конструкторы помещения мог делать просто тест хорошо да и давай еще последнее exception-ы 2 и про вызов broke but have exceptions конструктор и деструктор чего не знаешь об этом ниже где можно быть где бросать нельзя я в неделю бруса но слышала я вечно буду

    00:24:55 - 00:26:29

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

    00:26:05 - 00:27:14

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

    00:26:49 - 00:27:49

  • символизируют что какая-то ошибка пошла но все плюс плюс на самом деле из 3 ст ну четыре четыре способа символизировать до что на все прошло общей [ __ ] simply 117 н-но глобальная переменная возвращаемое значение esxi пшена через общего как-то выставлять и не силой затарились но короче либо через флажок какое-то либо возвращаемого значения это как-то это такой костыль на год и вот как раз таки конструкторы я считаю нормальной практикой бросить исключения нужно конечно понимать вот но нужно быть осторожным ну возможно да

    00:27:20 - 00:28:23

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

    00:27:51 - 00:29:28

  • [музыка] мешки ручки

    00:28:40 - 00:28:46