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

  Рет қаралды 136,786

Ambushed Raccoon

Ambushed Raccoon

Күн бұрын

Всем привет!
Провели тренировочное собеседование с Александром на позицию Middle C++ Developer.
Приятного просмотра!
Не забудьте поддержать видео :)
Таймкоды:
00:00 Вступление
00:18 Расскажи о себе
02:48 Задача: экранирование символов
14:28 Заголовочные файлы. Код в них
20:24 extern
22:45 Взвести/Сбросить бит
34:33 Сериализация/Десериализация
40:33 Сериализация двусвязного списка
45:42 union
47:36 1. Про 11-й стандарт. Move-семантика
49:28 Copy on write
47:36 2. Про 11-й стандарт. Move-семантика
51:35 Функтор. Лямбды
53:12 Наследование от stl контейнеров
56:12 Фидбэк

Пікірлер: 366
@ambushedraccoon6408
@ambushedraccoon6408 Жыл бұрын
Всем привет! Объявляю набор кандидатов на собеседование Middle С++. Требуются разработчики с опытом 1-3 года. Собеседование проводится только с видео. Если вы хотите проверить свои знания и попасть в новое видео, то пишите мне на почту ambushed.raccoon.tube.mail@gmail.com с темой “Middle собеседование кандидат”. В письме пишите свои контактные данные(желательно telegram), описание ваших знаний или резюме. Со своей стороны гарантирую, что видео будет выложено только с вашего согласия. Так что не бойтесь. Будьте внимательнее с темой письма, потому что они очень легко попадают в спам.
@MrBratkenSolov
@MrBratkenSolov Жыл бұрын
Собеседование: разверни дерево, найди оптимальный путь Реальность на работе: фикс ошибки из-за отсутствующей запятой, катить самому в прод без техлида в пятницу
@relaxationchanne9130
@relaxationchanne9130 5 ай бұрын
Странно, что в названии написано "Собеседование Middle C++",а первые слова собеседование на позицию junior.
@onegamer6596
@onegamer6596 Жыл бұрын
Спасибо за контент. Очень интересно.
@user-pz2vr8ur1b
@user-pz2vr8ur1b Жыл бұрын
Видео клевое, но хочется тайминги еще :) Ждем материала от вас, вы очень приятно объясняете материал
@ambushedraccoon6408
@ambushedraccoon6408 Жыл бұрын
Спасибо) Тайминги сделал.
@n.r.x62
@n.r.x62 Жыл бұрын
Интервью было интересное, как для студента второго курса очень даже познавательно проверить какие то свои навыки, на большую часть вопросов смог ответить)) Про тхт и бинарники правда как то косвенно отошли от ответа, все таки главный недостаток и преимущество это читабельность данного файла, ведь просто тхт можно спокойно открыть, прочитать/переписать, а в бинарном будут каракули и его не разобрать)) Но в тоже время некая защита/конфиденциальность информации, спасибо за видео, было очень интересно, хочу еще.
@user-po6ex2is6e
@user-po6ex2is6e Жыл бұрын
сериализация предназначается для программы, человеку незачем её читать, он конечно может, но это не для этого. Если нужна конфиденциальность, то для этого существует шифрование и неважно текст это или бинарное представление. Основная проблема бинарного формата порядок бит на разных платформах, он может отличаться.
@arturhisamutdinov9285
@arturhisamutdinov9285 Жыл бұрын
Для вопроса про сериализацию двунаправленного списка можно сделать намного проще: Обозначаем тип и указываем цикличный этот список или нет, дальше данные кладем в виде массива. На выходе получаем минимальный объём сериализованных данных + обработку за один проход как для записи, так и для чтения.
@Pavel.Zhigulin
@Pavel.Zhigulin 10 ай бұрын
Можно ещё проще: сериализуем как массив и кладём хер на тип. Кому надо - десереализуют в двунаправленный список. Кому не надо - десереализуют массив.
@vasiliypupkin6311
@vasiliypupkin6311 Жыл бұрын
Очень классный контент, для Джуна, много вещей, что надо подтянуть, хочется уже быстрее на работу и задонатить, ты делаешь очень многое для начинающих, спасибо!
@alienhazzard7201
@alienhazzard7201 Жыл бұрын
@ Vasiliy Pupkin Бойтесь своих желаний - они исполняются.
@vasiliypupkin6311
@vasiliypupkin6311 Жыл бұрын
@@alienhazzard7201 уже 7 месяцев как не исполняется(
@george.8888
@george.8888 Жыл бұрын
@@vasiliypupkin6311 Ты был джуном 7 месяцев назад. Почему не получилось? Ответь развернуто, пожалуйста, мне очень интересно как начинающему.
@vasiliypupkin6311
@vasiliypupkin6311 Жыл бұрын
@@george.8888 После 24 февраля, много компаний ушло, которые нанимали джунов. Компании которые остались, очень сильно вырос порог входа, а так как я занимался именно unreal engine 4 и все мои проекты были под гейм дев, а гейм дев умер в СНГ, и на вакансию gameplay dev начали откликаться 200+ чел. При том, что я 25 февраля должен был переезжать в Киев, я делал тестовое 3 месяца и прошел на проект сталкер 2. Через месяц, я понял, что остались только продуктовые компании, такие как Яндекс, сбер, Тинькофф, но туда берут в первую очередь олимпиадников и с таких, как МФТИ и т п. Итог: знать надо гораздо больше, конкуренция в 3-4 раза выросла, это я все рассказываю в рамках С++. Нужно хорошо знать алгоритмы и структуры данных, уметь решать с закрытыми глазами, знать тонкости языка, как работает под капотом, этим сможете привлечь внимание, работа долгая и упорная, я с полного нуля занимаюсь 2 года. Я так по приколу за 2 недели начал на js писать)))) Я бы на вашем месте смотрел бы на другой ЯП, у айти бороды есть интервью с лидом по физике геймплея war gaming он там и говорит, что с хорошим наставником, вы станете джуном по С++ за 1,5-2 года, работая про этом. У Сергея немчинского, есть очень много материала, как выбрать ЯП, какой лучше, как правильно учиться. Своему сыну я бы не советовала, в качестве первого языка брать ++ очень сложно и долго. Удачи!
@george.8888
@george.8888 Жыл бұрын
@@vasiliypupkin6311 Спасибо что потратили свое время! Я пришел к выводу что стоит начать с вэб разработки, стандартный пакет с хтмл, цсс, джава скрипт. Всегда будет спрос, всегда можно брать фриланс пока ищешь. работу. Уже после можно изучить языки под узкие направления, которые интересуют, вроде гейм дизайна и тд. Как вы считаете, это правильное решение? Многие говорят про Питон, что он самый лёгкий для начинающих, но мне почему то кажеться самым разумным решением начинать с вэб..
@HighlanderMcLeod
@HighlanderMcLeod Жыл бұрын
Работаю вместе с джамшутами на стройке. Возле Рублёвки, чистыми выходит ~120. Почему это оказалось у меня в рекомендуемых??
@simvoli
@simvoli Ай бұрын
Алгоритмы ки вычислили с кем ты работаешь. Джамшуты программисты и угорают с тебя на стройке. Ки подслушала их разговоры и решила тебе подсобить.
@KostopravHD
@KostopravHD Жыл бұрын
хорошее видео, хороший канал, всем спасибо!
@shaman888y
@shaman888y Жыл бұрын
Этот парень помогает поверить в свои силы.
@Nandarion
@Nandarion Жыл бұрын
Пару советов для собеседуемого: 1. Сначала придумываем алгоритм, и оцениваем его сложность О(), только потом начинаем писать код. 2. Помним, что изменять коллекцию, от которой уже взят итератор, куда-то передан указатель или ссылка нельзя. 3. Сложный код ведет к неделям отладки, поэтому пишем максимально просто. 4. Когда говорят "забей на проверки", вместо проверок вначаеле вставляем коммент //TODO, чтобы не забыть, иначе есть вероятность, что все так и останеся. Для собеседующего: 1. Не следует слишком "проталкивать" свое решение, возможно, что кандидат немножко поколдовав над кодом вполне сможет найти более элегантное или более простое решение. В реальной работе у него на это 5 минут то будут. Прочее 1. про бинарную сериализацию в 2022 году можно сказать - сериализация при помощи memcpy - говнокод прошлого века. Хорошо если джун знает почему, но если не знает это не проблема.
@ambushedraccoon6408
@ambushedraccoon6408 Жыл бұрын
Все по делу, Спасибо.
@maxch3
@maxch3 Жыл бұрын
//TODO слишком часто тоже так и остается :)
@Nandarion
@Nandarion Жыл бұрын
@@maxch3 Ну если есть код-ревью или при рефакторинге TODO практически наверняка будет замечено, и если есть возможность то исправлено. Отсутствующий код же если и будет замечен то это будет "ага, баг", или "опять он наговнокодил". Ну а что еще можно сделать кроме коммента, если говорят забить на проверки, так как нету времени.
@user-cb8nc5to4z
@user-cb8nc5to4z Жыл бұрын
С вами лучше не спорить.
@myriaxont
@myriaxont Жыл бұрын
Касаемо первого пункта, стоит учитывать локальность памяти и инструкций возможных реализаций алгоритма. Так же стоит учитывать возможность распараллеливания алгоритма, явного или же возможного к выполнению компилятором - как и по средствам многопоточности, так и по средствам векторизации вычислений. А вообще, параметров оценки оптимизации куда больше, но это основные.
@antonkulikov6726
@antonkulikov6726 Жыл бұрын
Впринципе ничего страшного не будет,если мы унаследуемся с модификатором protected от вектора. Так,что на мой взгляд ,собеседуемый сказал правильно: он сказал про private наследование от вектора. Потому,что в таком случае механизм полиморфизма работать не будет. Но есть и достоинства: при таком подходе можно получить доступ к protected членам вектора. При композиции так нельзя сделать. Ещё Здесь есть один риск,если пользователь будет делать reinterpret_cast к вектору(к указателю на вектор) и явно вызывать деструктор. Но по мне это такое себе. Как завещал Скотт Майерс: предпочитайте композицию наследованию.
@billjohnes9380
@billjohnes9380 Жыл бұрын
Только почему никто не озаботился вопросом, насколько часто сам объект вектора создаётся динамически так, чтобы пользоваться им потом через указатель на базовый класс?
@kookaburru
@kookaburru Жыл бұрын
Норм собес, сам вспомнил плюсы :)
@user-cq9ze8rk8s
@user-cq9ze8rk8s Жыл бұрын
Здравствуйте. А будет сборка Quake из исходников ?
@alexnedelin7646
@alexnedelin7646 Жыл бұрын
если не "прятать" от компилятора тип переменных унасленованного от vector класса, то невиртуальность деструктора ~vector проблем вызвать не должно. в смысле если не делать такое: std::vector * pVec = new TMyInheritedIntVector(); ...; delete pVec;
@iforand
@iforand Жыл бұрын
8:00 Почему std::string() ошибка? Это же просто вызов стандартного конструктора. Пустые фигурные скобки ведь тоже приведет к вызову того же стандартного конструктора.
@tribacckk
@tribacckk Жыл бұрын
Прикольно, посмотрел пока только 1ую задачу. И какое-то двоякое мнение: 1)были такие задачи на собесах и сразу бросался решать. Но вот это видео мне попалось вечерком под ужин. И прям 1ое что в голову пришло - написать сначала тесты. И чтобы в них были конер кейсы. Однако когда такие задачи на собесах встречаются, как-то эта мысль не приходит в голову почему-то, видимо нервы) 2)обычно при решении таких задач надо - накидать дубовое решение в лоб. - потом его проговорить его и оценить сложность. - поток уже реализация - потом уже обсудить что получилось. Подсветить плюсы и минусы. - и вот теперь уже попытаться обработать конер-кейсы Пишу это для того чтобы узнать мнение других людей, тех кто ходил на собесы, или может тех кто эти собесы проводит. P.S. на работе обычно вначале прикидывается решение (возможно обсуждается архитектура). Потом прикидываются юзер-кейсы. Потом уже реализация. А на тех.интервью вроде все также, только в обратной последовательности.
@dangername6996
@dangername6996 Жыл бұрын
Сам я на собесы не ходил (работу как-то плавно получил со стажерства)). Но многие знакомые/друзья говорят, что мол, лучше всего начать писать самое просто решение в лоб, невзирая на особенности и крайности (на примере первой задачи, забить на первый символ, последовательность символов и т.д.) и просто решить общую задачу. А потом уже готовое решение доработать и доделать для решения "тонких" задач.
@igorkl5167
@igorkl5167 Жыл бұрын
Сам я не программист, но всегда восхищаюсь этими ребятами.
@mrbibis7229
@mrbibis7229 Жыл бұрын
ну не знаю, какой-нибудь инженер в разы круче, чем программисты. Сейчас программист - это в основном знаток языка, даже без знания математики или дискретки, а раньше нужны были именно инженерные знания
@addressmodel2121
@addressmodel2121 9 ай бұрын
@@mrbibis7229 , на одном чистом языке много не напрограммируешь - нужны ещё знания библиотек. А библиотек разных много: - игровые движки; - базы данных; - редакторы изображений; - распознаватели речи; - работа с протоколами интернета; - ну и библиотеки работы с математикой. На каждую библиотеку её внутренние алгоритмы знать не будешь, а библиотек сотни штук! Вывод: для программиста главное уметь пользоваться софтверными библиотеками. А дискретной математике его за пару месяцев обучит куратор проекта.
@shiftingsandsgames
@shiftingsandsgames 8 ай бұрын
​@@mrbibis7229ну попробуй аллокатор памяти написать под вулкан, или драйвер, или движок, математика не нужна, но мышление на вес золота.
@gellolenok
@gellolenok Жыл бұрын
Почему бы не экранировать с 2-ух сторон последовательность нужных символов? Это явно сократит количество новых/служебных символов в новой строке (при условии, что не будет чередования по типу 1 нужный символ - 1 любой и т.д.). Например, str = “acdbbbbadbb”, тогда res = “acd\\bbbb//ad\\bb//“. Тогда res.size() = str.size() + 2 * кол-во последовательностей, состоящих из b (нужного символа). Если str.size() = n => res.size() = n + 2 * (n+1)/2 (worst case, like: “babfbhbsbubdb….b”), то есть также понадобится в 2 раза больше памяти, но в среднем затраты будут меньше.
@kingofbattleonline
@kingofbattleonline Жыл бұрын
Вы приняты в Valve, поздравляем! :D
@valtz2002
@valtz2002 Жыл бұрын
Охуительно, посмотрел за ужином, о чем они говорят - х.з. но очень интересно. Спасибо ютюбу за рекомндацию ахахахахахаха... Комменты тоже доставляют. Удачи вам парни!
@stanislavzemlyakov5442
@stanislavzemlyakov5442 Жыл бұрын
Слава Богу, я скипнул вот эту всю часть computer science про частичные функции в целом, и си в частности.
@user-pg8ry1tm3t
@user-pg8ry1tm3t Жыл бұрын
Ну имхо строку следует считывать прямо на ходу в какой нить вектор посимвольно и просто вставлять экран перед символом…
@idodoqdo5783
@idodoqdo5783 Жыл бұрын
Очень интересно. Ты располагаешь к тому, чтобы любить c++
@user-ji5vu2ln1j
@user-ji5vu2ln1j Жыл бұрын
Классный контент. Спасибо большое) Было бы круто вывести тайм-коды для более быстрого просмотра и самого интересного, для себя Спасибо))
@ambushedraccoon6408
@ambushedraccoon6408 Жыл бұрын
Спасибо) Таймкоды будут. Сейчас в приоритете провести собеседования и выложить их. После этого займусь таймкодами.
@ilyazakharou468
@ilyazakharou468 Жыл бұрын
@@ambushedraccoon6408 таймкоды сделать это меньш часа лентяй.
@ambushedraccoon6408
@ambushedraccoon6408 Жыл бұрын
Таймкоды сделал.
@user-ji5vu2ln1j
@user-ji5vu2ln1j Жыл бұрын
@@ambushedraccoon6408 спасибо ты лучший!)
@andreygurenkoff2721
@andreygurenkoff2721 Жыл бұрын
не понял. у вас написано мидл, а в видео говориться , что собес для уровня джуна ? опечатка или оговорка в видео ? можете объяснить, "что значит учитывая коммерческий опыт" ? вы имеете ввиду, что сейчас на джуна необходима подготовка уровня мидла ?
@s.g.7213
@s.g.7213 Жыл бұрын
По сериализации с двунаправленым списком я не понял.... Каждый элемент имеет указатель на следующий и предыдущий, это есть его определение. Следовательно a->prev->next == a и a->next->prev == a , это правило двунапраленного списка. Если иначе, это уже другая структура данных , граф может быть. В таком случае , непонятно зачем хранить индексы вообще. Сохраняем последовательно элементы от head по next . А при десериализации каждого последующего элемента восстанавливаем связи согласно правилу списка. last->next = cur; cur->prev = last; last = cur;
@Matissed
@Matissed Жыл бұрын
да, по сути это будет последовательность данных, а при десериализации будет уже создание двунапр. списка
@pyreorion
@pyreorion Жыл бұрын
Я не критикую, но просто интересно, в каком месте кандидат ближе к мидлу?
@bebrakurabue
@bebrakurabue Жыл бұрын
"на позицию Middle C++ Developer" - в видео студент на позицию джуна)))))))))))
@KostopravHD
@KostopravHD Жыл бұрын
так одно другому не противоречит, может парень пришел рановато
@lightinguniverse4952
@lightinguniverse4952 Жыл бұрын
Они оба джуны, опрашивающий сам ни в чём не уверен, спросить нормально ничего не может, речь у обоих убогая, два слова связать не могут, вопросы тупые, решения ещё тупее.
@user-ln2ft2mo3c
@user-ln2ft2mo3c Жыл бұрын
@@lightinguniverse4952 Ты прав - тут есть над чем работать. Автор весьма косноязычен, речь не выразительна, много мусора. В одном видео он говорит "прийти НА ОФИС" - несколько раз - стыдно однако
@IgorAlov
@IgorAlov Жыл бұрын
Почему то сразу пришло в голову, что для подсчета символов итерировался бы бОльшим объектом, чем символ (размером командного слова на архитектуре например), ну и битовой максой по указателю проверял бы истину. так за меньшее число тактов можно почитать необходимы размер (но на самом деле размер не нужен). /или может быть сразу inline на asm воткнуть/. Попутно "битового пробега" составил бы карту (массив сдвигов) вхождений элементов, который после пробега использовал бы для копирования участков памяти, и между нужными элементами вставляли бы экран. По поводу битовых операторов, не плохо бы сначала определиться с big-endian и liitle-big-endian. Можно просто нечаянно уехать не в ту память. Код написанный для изменения битов содержит else, он там лишний и портит читабельность код (по рукам за такое, мидл так не пишет).
@alexeypavlyutkin886
@alexeypavlyutkin886 Ай бұрын
насчет битовых операторов... еще раз подумайте хорошенько, и ответьте, почему эндиан не имеет значения
@m4rsh3ll26
@m4rsh3ll26 Жыл бұрын
48:12 - на этот вопрос ответить без мата в сторону стандартизаторов очень сложно
@BloganProgramming
@BloganProgramming Жыл бұрын
Я являюсь преподавателем C++ в ютубе и работаю игровым разработчиком, поэтому добавлю свои 5 копеек. Не понимаю, почему автор видео решил, что кандидат подходит ближе к middle-уровню, если он на большое количество "junior"-вопросов не смог ответить. Какая разница, какой у него коммерческий опыт? Я могу за 10 лет поменять 10 компаний, везде быть джуном и рассказывать, что в одной компании я делал одно, в другой другое, и так далее. А на собеседовании не могу ответить на вопросы. Считаю, что кандидат подходит на позицию Trainee/Intern. Переходим к вопросам. 1. Не понимаю, зачем у кандидатов на позицию junior спрашивать их опыт. Что от этого меняется? Вы будете задавать другие вопросы? Вы вообще их не будете задавать? Я считаю, что на собеседованиях на intern/trainee/junior позиции нужно оценивать только навык программирования. Ну да ладно, это не критично. 2. Не понимаю, почему интервьюер решил сразу начать с сложной (по сравнению с большинством вопросов) задачи, а потом задавать простые вопросы. Кандидат в теории может слиться уже на простых вопросах и тогда незачем будет решать задачу. В теории вы можете так затянуть время собеседования, если кандидат будет нулевым. 3. Не "хИдэр" а "хЭдэр", потому что header читается как "хэдэр". Хоча я не вижу причин в разговоре не говорить "заголовочный файл". 4. Почему кандидату надо знать об extern "C"? Я работал в нескольких компаниях, и ни разу не было причины использовать это. Что мешает junior-разработчику при первом требовании использовать С-функцию, загуглить эту информацию и получить быстрый ответ? Это лишний вопрос. 5. "Битовые задачки - часто возникающая вещь" - вы откуда пришли к такому выводу, можно поинтересоваться?) Надеюсь, вывод не был сделан только с ЛИЧНОГО опыта?) 6. "На какие виды можно разделить сериализацию с точки зрения С++" - максимально непонятный вопрос. Я уверен, что автор его придумал на лету. Готовьте вопросы заранее и убедитесь в их ясности. 7. На счет вопроса по сериализации списка в файле. Я здесь вообще поплыл в ваших (обоих) рассуждениях. "Как понять, какой элемент будет следовать за каким?" Та элементарно - пройтись по списку и просто записывать значение каждого элемента в файл. В файле значения будут хранится как простой набор чисел. А при считывании будет ясно, что первое значение - первый элемент. Второе - второй. Либо я не вообще не понял вашей темы, либо вы оба заблудились в трех соснах. 8. Функтор - это класс/структура, которые должны иметь перезагруженный оператор вызова функции. Все. Функторы могут не иметь "состояния" (полей). На видео была дана неточная формулировка. 9. Предикат - функция, которая анализирует объект/объекты и возвращает ответ анализа в формате "Да/Нет" (то-есть тип bool). Соответственно на 52:46 кандитат ответил точнее, чем интервьюер, потому что предикат должен являться функцией. Функтор - это не функция, хотя функтор может себя вести как функция. Точно так же указатель на функцию также может вести себя как функция, но от не является функтором. 10. Стандартные контейнеры можно засунуть в ваши собственные классы, как поля. Тогда не будет проблем з деструкторами. Хорошо было бы сказать об этом кандидату. Считаю, что вопросов мало было задано. Но смотрел все ровно с интересом, поэтому спасибо за видео.
@he1vann-42
@he1vann-42 Жыл бұрын
ладно
@grigoriikushnir4927
@grigoriikushnir4927 Жыл бұрын
Сначала ты пишешь: "Какая разница, какой у него коммерческий опыт? Я могу за 10 лет поменять 10 компаний, везде быть джуном и рассказывать, что в одной компании я делал одно, в другой другое, и так далее." А потом: "Почему кандидату надо знать об extern "C"? Я работал в нескольких компаниях, и ни разу не было причины использовать это." Не делай так.
@BloganProgramming
@BloganProgramming Жыл бұрын
@@grigoriikushnir4927 А как эти 2 утверждения взаимосвязаны?) Второе утверждение объясняет то, что вопрос лишний для джунов.
@grigoriikushnir4927
@grigoriikushnir4927 Жыл бұрын
@@BloganProgramming Тем, что твое первое утверждение обесценивает твое второе утверждение как аргумент. Твой коммерческий опыт не является доказательством того, что кандидату не надо что-то знать. Это если по твоей логике. Из моего опыта, в среднем, чем больше коммерческий опыт, тем больше у человека знаний потому что он решал больше бизнес задач. Как это проверить - другой вопрос. Но закономерность подтверждается жизнью.
@BloganProgramming
@BloganProgramming Жыл бұрын
@@grigoriikushnir4927 Ты все еще не понимаешь, что между моими утверждениями нет никакой связи. Первое касается того, что незачем спрашивать за коммерческий опыт. Второе касается того, что вопрос является слишком узконаправленным и довольно простым, чтобы его спрашивать. На этом я заканчиваю эту беседу, так как если ты после этого ничего не поймешь - смысла объяснять тебе далее нету.
@d3i0
@d3i0 Жыл бұрын
Зря подсказал что цикл не понадобится в задаче с set_bit, было бы прикольно посмотреть как он с циклом решит :D
@Anti-Z
@Anti-Z Жыл бұрын
Я не знаю с++, поетому может мой вопрос примитивньій. Но, как я понял из первого задания слеш нужно ставить перед символом которьій передаеться в с. А судя по коду он будет ставить етот слеш в начало строки: answer = += "\\" а не в позицию перед етим символом в строке (тип і -1, где і - позиция символа с).
@nikolay1405
@nikolay1405 Жыл бұрын
по конечному коду, он идет в цикле и прибавляет к результирующей строке либо просто символ из заданной строки, либо слеш+символ, если он совпадает с условием.
@it_cpp54
@it_cpp54 10 ай бұрын
55:55 можно обьяснить при чем здесь виртуальный деструктор, если человек вроде хотел приватно наследоваться?
@uniers
@uniers 4 ай бұрын
Вставка в середину массива, по моему надо использовать linked list
@ic6406
@ic6406 Жыл бұрын
Не понял, какой вызов функции? Там простой вызов дефолтного конструктора, не важно какие скобки
@ic6406
@ic6406 Жыл бұрын
а вот дальше std::string answer(); уже ошибка most vexing parse
@dainispolis3550
@dainispolis3550 Жыл бұрын
Ambushed Raccoon - Парень ретурн std::string(); по моему указал правильно , ведь резултат - обект типа std::str а не функция
@user-dk5rx1be6v
@user-dk5rx1be6v Жыл бұрын
❤️
@dangername6996
@dangername6996 Жыл бұрын
Давно я на ++ не писал, а что за конструкция for ( var : var)? Это типа foreach в #? Никогда раньше не видел, даже вон глянул документацию майков, там тоже не нашел такого.
@ambushedraccoon6408
@ambushedraccoon6408 Жыл бұрын
Привет. Да, можно провести аналогию с foreach. Называется range-based for loop. Вот ссылочка на док: en.cppreference.com/w/cpp/language/range-for
@dangername6996
@dangername6996 Жыл бұрын
@@ambushedraccoon6408 Спасибо, удобная конструкция
@vadimromansky8235
@vadimromansky8235 Жыл бұрын
а компилятор правда не ругнется на множество реализаций одной функции? ничоси...
@grenadier4702
@grenadier4702 Жыл бұрын
Есть ли смысл выносить "\\" в переменную, чтобы не создавать каждый раз указатель? 14:10. Или компиляторы оптимизируют этот процесс?
@old_cd_rom9518
@old_cd_rom9518 Жыл бұрын
Компиляторы оптимизируют твой код иногда до такой степени, что ты даже представить себе не можешь))
@grenadier1653
@grenadier1653 Жыл бұрын
@@old_cd_rom9518 здорово тогда
@vp_arth
@vp_arth 2 ай бұрын
В первой задаче не возникло вопроса, что делать с уже существующими в строке слешами
@threedking
@threedking Жыл бұрын
Ну такое..мидл не знает, что шаблоны только в хедере пишутся, какую-то билеберду сначала писал на задаче со строкой. Входные тесты на джуна, которые есть доступом на собес, сложней.
@user-ss9vo7fq3z
@user-ss9vo7fq3z Жыл бұрын
Что прошлый ролик, что это - уж очень хочется узнать, чем одному не понравился JavaScript, а другому Java.
@user-yk7li6ni4o
@user-yk7li6ni4o Жыл бұрын
Ну у каждого свои предпочтения. Мне лично тоже java не заходит. JS я не пробовал, поэтому ничего сказать не могу.
@danilsergeev3339
@danilsergeev3339 Жыл бұрын
Привет, я, например, front-end разработчик, но получаю огромное удовольствие от написание кода на golang, нежели на js(typescript), не знаю, как-то так уж получилось)
@phat80
@phat80 Жыл бұрын
Причины, по которым может не нравится язык, есть у каждого языка. Если бы существовал идеальный, универсальный язык, на нем бы все и писали. Выбор языка - это всегда компромисс. И всегда есть языки, в которых человек не может найти этот компромисс для себя. Например, лично мне в Java не нравится ее многословность. В JS мне не нравиться подход, построенный на прототипном наследовании, динамическая типизация и то, что null по какой-то неведомой причине является в JS объектом. Тем не менее я не против пописать, как на Java, так и на JS.
@normanmaddyson8408
@normanmaddyson8408 Жыл бұрын
55:45 Виртуальный деструктор в подобном кейсе выглядит избыточно. У вектора и методы не виртуальные, поэтому нет смысла кастить указатель на наш произвольный класс к указателю на вектор, потому что при вызове методов всегда будут вызваны методы вектора. Если пользователь такое делает, то пусть возьмет просто вектор, а не производный класс. А если использует "правильно", то и утечки нет
@it_cpp54
@it_cpp54 11 ай бұрын
Зачем битовые маски, если есть bitset ?
@dianapai6565
@dianapai6565 Жыл бұрын
А есть ли какая то возможность попасть к вам на пробное собеседование?)
@ambushedraccoon6408
@ambushedraccoon6408 Жыл бұрын
На данный момент я не веду набор кандидатов. Планирую делать новый набор ориентировочно через 2 недели. Уведомление будет в сообществе и телеграм-канале.
@kokosiki40
@kokosiki40 11 ай бұрын
объясните, зачем при сериализации двусвязного списка с чем-то мудрить? Просто по порядку как массив записал значения и все
@it_cpp54
@it_cpp54 11 ай бұрын
вот-вот. сериализация необходима для передачи данных. А уж на месте десериализуй и клади данные куда необходимо.
@user-rj4hq2vb2n
@user-rj4hq2vb2n Жыл бұрын
Оксимирон теперь интервьюирует по С++???
@StasonST19
@StasonST19 Жыл бұрын
найс
@Denys_Lapshyn_1
@Denys_Lapshyn_1 Жыл бұрын
так а в чём прикол? не бывает же чистого C++, это либо C++ десктоп либо C++ геймдев. Или я что то не понял ?
@jacemon
@jacemon Жыл бұрын
Господа, может кто сможет мне ответить: Автор канала сказал, что есть какой-то обходной путь по разграничению .h .cpp при создании шаблонов. Так вот что это за способ? Было бы неплохо, если сможете скинуть статью.
@user-re6xz2xc7s
@user-re6xz2xc7s Жыл бұрын
Можно явно частично инстанциировать шаблон: .hpp: template void foo(T t); .cpp: template void foo(int t); template void foo(string t); template void foo(T t) { // some works } Для не инстанцированых типов будет ошибка что нету реализации для символа
@jacemon
@jacemon Жыл бұрын
Спасибо за ответ
@stanislavzhukov9234
@stanislavzhukov9234 Жыл бұрын
Блин, интересный видос. Помоему вопросы даже до уровня Джуна не доходят. Либо просто я о себе слишком плохого мнения (Middle C# dev, OpenSource C++ dev)
@artemlipatkin474
@artemlipatkin474 Жыл бұрын
Скорее из-за высоких требований к себе у тебя завышенные требования к другим)
@alexeypavlyutkin886
@alexeypavlyutkin886 Ай бұрын
хм... скажем так, зачастую вопрос кажется простым лишь потому, что таков твой уровень... вот, скажем, задача про установку бита -- все ведь очень просто. ведь правда просто? вот только не советую предлагать такое решение задачи в проекты калибра JDK или V8. выебут
@greego4623
@greego4623 Жыл бұрын
Я думаю это собеседование больше похоже на позицию джуна?
@ambushedraccoon6408
@ambushedraccoon6408 Жыл бұрын
Такие вопросы могут встречаться на собеседованиях на любой уровень. В зависимости от уровня кандидата, ожидается разное погружение и процент отвеченных вопросов. У Александра около одного года коммерческого опыта, что ближе к уровню миддл.
@z140140
@z140140 Жыл бұрын
@@ambushedraccoon6408 у меня уровень senior+1, если меня спрашивают про особенности языка - я уже понимаю, что это не моя вакансия
@thegate8985
@thegate8985 Жыл бұрын
@@z140140 можете, пожалуйста, рассказать, почему? То есть вы ожидаете вопросов, связанных больше с какими-то более прикладными задачами?
@nightriver7544
@nightriver7544 Жыл бұрын
@@thegate8985 позволю себе ответить со своей стороны, так как придерживаюсь такой же позиции. Сеньор это не тот кто знает каждую заковырку с++. Сеньор это тот кто придёт писать код на джаве и, видя ее впервые в жизни, легко поймёт что там и зачем написано с использованием гугла. Ценность не в знании конкретных прикладных технологий, а в понимании общей логики в целом. Глупо платить человеку в 3 раза больше денег просто потому что он знает кучу справочной информации, которую можно за 30 сек найти в гугле при первой необходимости, если при этом этот человек не понимает зачем нужна хэш-таблица или какие подводные камни есть у многопоточности.
@medvital
@medvital Жыл бұрын
@@thegate8985 чем выше позиция, тем меньше человек пишет кода и больше занимается бизнес/архитектурными/тимлидовскими задачами(зависит от позиции, на которую нанимают). Выше уровень абстракции, так скажем, для кода есть джуны и мидлы. Если вы синьор и все ещё пишете код, то вы аппер мидл, имхо.
@IvanPetrov-td6dk
@IvanPetrov-td6dk Жыл бұрын
В первой задаче не понятно, почему для финальной строки 2 длины исходной строки зарезервировали, когда у нас для экранирования каждого символа по 2 слеша прибавляется - значит, в лимите у нас строка в 3 раза длиннее будет, когда все символы равны заданному.
@pkowak
@pkowak Жыл бұрын
Прибавляется один слеш, если написать "\", то это будет как незакрытая строка, символ после бекслеша воспринимается типа как спец символ, также с , \t, \0 и собственно \\
@RushFuture
@RushFuture Жыл бұрын
Два слеша - потому что обратный слеш в языке C/C++ является экранирующим символом (помните про " ", например?), поэтому сам требует экранирования, соответственно строковый литерал "\\" превратится в строку, состоящую из *одного* символа обратного слеша и завершающего нуля.
@user-we1mf4sw5z
@user-we1mf4sw5z Жыл бұрын
Для шаблонов есть inl файлы
@cyrilanisimov
@cyrilanisimov Жыл бұрын
26:38 "...мы будем сдвигать вправо..." - "Почему не влево?" - "Потому, что это Мак)))"
@nikitross7466
@nikitross7466 Жыл бұрын
Это собеседование middle?? Напиши что это собеседование для junior.
@goczt
@goczt Жыл бұрын
Не очень понравилась подача copy-on-write строк под соусом того, что они "как будто-бы лучше" (да, я понимаю, что напрямую автор не говорит, что они лучше) std::string'а, потому-что ты их передаешь по значению и они не копируются. Если есть такой страх копирования строки при передаче в функцию, лучше уж её передать по константной ссылке и всё, проблема решена простым механизмом языка, и об этом должен знать как мидл, так и джуниор. У CoW-строк есть самый существенный недостаток - вместо копирования при передаче, они "недетерминированно" копируются при совершенно нормальных операциях, типа замене символа, конкатенации и т.д. За всеми этими случаями ненамеренного копирования следить гораздо сложнее, чем всегда передавать const std::string&.
@KurlesHS
@KurlesHS Жыл бұрын
получить на вход константную ссылку и пытаться ее изменить - ну такое себе. И даже если на вход не константная переменная подавалась бы - то совсем инвалидацию указателей не учитывал.
@sergeyvlasov207
@sergeyvlasov207 Жыл бұрын
50:00 а для std string разве нет подсчета ссылок??? хм
@iforand
@iforand Жыл бұрын
Нет. Но если хочется подсчёта ссылок, есть умные указатели для этого: std::shared_ptr А так std::string по сути тот же std::vector, но со встроенным буфером фиксированного размера, чтобы не выделять динамическую память под мелкие строки.
@user-ln2ft2mo3c
@user-ln2ft2mo3c Жыл бұрын
задача с экранированием символа решена с ошибкой
@MariaEsenina
@MariaEsenina 11 ай бұрын
Да нормальный парень. А по поводу extern и тем более union я бы не парилась, это вроде бы и надо знать, но во-первых, молодые всё реже с этим сталкиваются, а во-вторых, если столкнутся - неужели вы думаете, что разработчик такого уровня за пол часика не поймёт как это работает? Гораздо важнее то, как человек мыслит, а не то какой он заучка. Вряд-ли на рабочем месте кому-либо запретят иметь пару томиков на всякий случай. Здесь даже вместо объяснения лучше попросить угадать на опыте дав лёгкий намёк что это может быть, опять же посмотреть как человек мыслит, даже если даст неверный ответ.
@minma123
@minma123 13 күн бұрын
человек паук вернулся домой и начал кодить
@sshwey
@sshwey Жыл бұрын
Я программист на питоне и на js. Решил посмотреть в 4 часа утра как писать аимбот, наткнулся на старое видео, из него прыгнул на канал и на новое видео. Зачем мне собес на мидла плюсов….ну ладно, берем попкорн, слушаем)))
@vitalyarbuzov5375
@vitalyarbuzov5375 Жыл бұрын
в чём вообще смысл твоего комментария ? "хихи посмотрите на меня какой я дурачок завтра егэ, а я хаваю дешевый дофамин)))) Я такой особенный ))))))))))))))))".
@aquahaze
@aquahaze Жыл бұрын
​@@vitalyarbuzov5375 🤨
@chaplin4335
@chaplin4335 Жыл бұрын
@@vitalyarbuzov5375 иди поспи, чел. тебе отдохнуть нужно
@Hamsters_Rage
@Hamsters_Rage Жыл бұрын
серьезно, сейчас для Middle уровня не нужны и шаблоны и битовая арифметика?
@user-wo6df9by4e
@user-wo6df9by4e Жыл бұрын
да это почти senior судя потому что он умеет. я вообще не понимаю что он делает и для чего, и о чём они говорят. целый час пытали и отлично себя проявил
@rallyguard2437
@rallyguard2437 Жыл бұрын
учу С 2 месяца и понимаю о чем идет речь в видео, вопросы точно не уровня мидла
@mihax56
@mihax56 Жыл бұрын
в каком месте сеньер? собеседование уровня джуна чутка продвинутого.
@aapes-yx6ql
@aapes-yx6ql Жыл бұрын
Думаю, это собеседование на джуна, я не на мидла, и стоит все-таки поменять название видео.
@imsomewhere1734
@imsomewhere1734 8 ай бұрын
Ребята, return std::string(); или return ""; как раз только и было до С++11. :) Привыкли вы к питонщине безтиповой вроде {}.
@vmgs100
@vmgs100 Жыл бұрын
Ну почему все говорят "хидер", если он, блин, "хэдер"? Бесчисленное множество раз слышал от разных людей.
@justman7656
@justman7656 Жыл бұрын
Это я первую задачу неправильно понимаю или задача некорретная? Символы ведь после того как его код отработает не станут экранированными, он просто добавил в перед каждым символом по экранированному слэшу.. Или я действительно некорректно понимаю задачу и в этом и суть? Да и вообще, я наверное слишком строг, но чувак на всё отвечает только с подсказок и то не слишком хорошо
@iforand
@iforand Жыл бұрын
А что ты понимаешь под "экранированием"?
@justman7656
@justman7656 Жыл бұрын
@@iforand так называют спецсимволы в строках, по крайней мере в С и С++, если ты просто вставшь, скажем, двойную кавычку в строку, то компилятор распознает её как конец строки и выдаст тебе ошибку, именно поэтому создали экранирование, когда ты перед подобными неудобными символами вставляешь косую черту, чтобы они точно трактовались компилятором именно как символы, а не как часть синтаксиса
@iforand
@iforand Жыл бұрын
@@justman7656 так и чем это отличается от "просто добавить перед экранируемым символом по слешу"? :)
@justman7656
@justman7656 Жыл бұрын
@@iforand просто я полагал, что задача в том чтобы вставить неэкранированный слэш и экранировать тем самым заданный символ
@iforand
@iforand Жыл бұрын
@@justman7656 Э-э, что? :D Экранирование - это и есть "просто вставить обратный слешь перед символом". Что вообще означает "вставить неэкраниррванный слешь"? :) Экранирование просто указывает компилятору или другому текстовому процессору, что следующий символ не является управляющим и его нужно воспринимать как обычный символ. Ничего более.
@_.rizhiy._674
@_.rizhiy._674 Жыл бұрын
Как на счет разобра резюме для C++ разраба? Что на счет пет проектов и на что обращают внимание при просмотрах резюме?
@ambushedraccoon6408
@ambushedraccoon6408 Жыл бұрын
Было уже такое. 4 стрима. Разбирали резюме, которые зрители присылали. Вот плэйлист: kzbin.info/aero/PLDWyp7QYaNaI1yKWaolh0jS0KNB8rQ_pT
@z140140
@z140140 Жыл бұрын
@@fuunnyvideospeedrun в с++ мало вакансий и мало кандидатов, а средний уровень кандидатов выше. мне например даже в 21-м году рекрутеры писали раз в месяц. думаю ты с таким числом приглашений просто бы повесился
@user-or1hy4xz8u
@user-or1hy4xz8u Жыл бұрын
@@z140140 а сколько лет опыта на С++ у тебя?
@DooDleZTv1
@DooDleZTv1 Жыл бұрын
смотрю с огромным интересом хоть ни черта не понимаю
@2b1aa1
@2b1aa1 4 ай бұрын
Я ищу работу джуном. Но всё что было в вопросах я прекрасно знаю. Что я мидл чтоли? Но у меня нет комерческого опыта…
@waagnermann
@waagnermann Жыл бұрын
парень студент - хорош
@eliasshalnev8466
@eliasshalnev8466 Жыл бұрын
А зачем спрашивать про extern в интервью по С++? Это сишная штука, добавленная исключительно для обратной совместимости. + сам интервьюер не совсем правильно ответил на свой же вопрос. extern нужен как раз для объявление (declare) переменной, а ее определение (definition) может находиться в другом месте. Использование данного трюка в С++ проектах является не очень хорошим стилем.
@ambushedraccoon6408
@ambushedraccoon6408 Жыл бұрын
Неоднократно сталкивался с таким вопросом на собеседованиях. А конструкция extern в плюсовых проектах встречается, каким бы стилем это не являлось. Так же обычно за этим вопросом следует вопрос про extern "C". А то, что сказал что-то неправильно. Ну собеседование не постановочное, могу и оговориться, всякое бывает.
@z140140
@z140140 Жыл бұрын
это как это?? если у тебя есть переменная используемая в нескольких модулях - без extern ты не обойдёшься
@pchelnick
@pchelnick Жыл бұрын
@@ambushedraccoon6408 Именно оговориться? :) Ошибиться Вы никак не сможете? ;)
@billjohnes9380
@billjohnes9380 Жыл бұрын
@@z140140 По поводу "если у тебя есть переменная используемая в нескольких модулях - без extern ты не обойдёшься". И это говорит senior+1? Никакой это не senior+1, и даже -- не senior, максимум -- middle. Начиная с C++17, такой способ есть, и настоящий Senior его знает.
@alienhazzard7201
@alienhazzard7201 Жыл бұрын
@ Elias Shalnev Это не трюк, а необходимость.
@LikeOnFilm
@LikeOnFilm Жыл бұрын
блииииин обыкновенное экранирование! мать моя дельфи...))))
@soulspirit8687
@soulspirit8687 Жыл бұрын
Qt, OpenCV и всё такое..... Если это собеседование на джуна, где решение алгоритма экранирование сомволов в строке занимает у собеседуемого так много времени, то я я сеньёр
@complicated2359
@complicated2359 Жыл бұрын
Точно ли мидл, без опыта то, а по коду так джун чистый.
@user-me7nx7ss2r
@user-me7nx7ss2r Жыл бұрын
*Создай пожалуста больше видео обучений по ООП про как роботать с указателем this как роботает move_constructor как роботать с класами внутри класов. Буду очень благодарен*
@user-kv3eo9br8m
@user-kv3eo9br8m Жыл бұрын
Впечатляет что C++ еще кому-то интересен из молодежи
@alexla_grange8957
@alexla_grange8957 Жыл бұрын
да это же совершенный язык ! ))
@bravo2625
@bravo2625 Жыл бұрын
Сейчас все уники только его и дают(естественно есть факультативы например по питону, но то отдельно)
@alexla_grange8957
@alexla_grange8957 Жыл бұрын
@@bravo2625 А что там дают - семестр на Си и Плюсы вместе взятые - это даже не смешно.
@konstantinvasik9624
@konstantinvasik9624 Жыл бұрын
алё, чуваки, я ждал, что будут задачи (а-ля Роберт Седжвик), т.е. воплощение смыслов, а не синтаксическая грамотность - за неё уже работодатель платит деньги?*??
@BeginBye
@BeginBye Жыл бұрын
Да "ХЭДЭР" (header), блин! А не хидэр
@aissp
@aissp Жыл бұрын
У меня чего-то возникли вопросы к тому кто проводит интервью ;) из претензий наверное: много говорит, не улыбается, не старается расслабить собеседника, соотвественно не ясно как человек будет работать в команде, как-то так
@cyrilanisimov
@cyrilanisimov Жыл бұрын
Вопросов про плюсы я тут не увидел - задачка на алгоритм, вопрос про сишный extern, битовою маску (серьёзно, битовые задачки часто приходится решать?), какая двоичная сериализация, что это за вопрос? Сохранение куска памяти - это не сериализация) Зачем Union в плюсах? Есть же Variant. В Qt стандартная библиотека нифига не отзеркаливается, подходы абсолютно другие. В общем, тут вопросы интервьюеру.
@alienhazzard7201
@alienhazzard7201 Жыл бұрын
@ Cyril Anisimov Битовые задачи приходится решать часто. Сохранение куска памяти - это не сериализация.
@cyrilanisimov
@cyrilanisimov Жыл бұрын
@@alienhazzard7201 битовые операции - это не плюсы, они есть во многих языках. И я про это говорю)
@user-ft6zh8ny9i
@user-ft6zh8ny9i Жыл бұрын
Ппц, он вставляет auto даже там где этого можно и не делать. Очевидно же что на вход принимается char. Таким образом заставляет компилятор тратить время на вычисление того, что это ленивец хочет сделать.
@Matissed
@Matissed Жыл бұрын
Как будто там серьёзные вычисления происходят
@0xsadcat92
@0xsadcat92 Жыл бұрын
К первой задаче return std::regex_replace(...) подошел бы?)
@decltruft2882
@decltruft2882 Жыл бұрын
Такие выкрутасы из CodeWars не прокатят: вся фишка в алгоритмической составляющей вопроса, а не в использовании готовой тулзы
@letmeregisterbitch
@letmeregisterbitch Жыл бұрын
Регексп тяжелая штука и здесь оверкилл
@alienhazzard7201
@alienhazzard7201 Жыл бұрын
@ 0xSADCAT смысл задачи не в использовании готового инструмента без понимания, как он устроен.
@iforand
@iforand Жыл бұрын
Хренасе! Я ещё понимаю вопрос про "почему бы не использовать replace?", но подумать здесь об regex_replace - это новый уровень! Даже не знаю как ещё можно сделать здесь код более тормознутее :)
@xvostbobra
@xvostbobra 5 ай бұрын
А у вас по высшему образованию берут?
@ambushedraccoon6408
@ambushedraccoon6408 4 ай бұрын
Смотря где. В Европе и США очень тяжело без диплома, на постсоветском пространстве проще, но тоже иногда могут спросить. В любом случае диплом лучше иметь, но его отсутствие, конечно же, не причина не строить карьеру программиста.
@RushFuture
@RushFuture Жыл бұрын
Смог досмотреть до extern "C"... "Будут компилироваться как C", чё правда? :) Может лучше не спрашивать того, чего сам не знаешь? И уж тем более стоит не рассказывать свои выдумки поучительным тоном :) Впрочем всё понятно было ещё по "хИдерам" и "сипипи файлам" вместо заголовков и модулей.
@WapUAs
@WapUAs Жыл бұрын
Сори я чет не понял подвох. В параметрах "std::string", а у этого класса есть же метод "replace", почему бы просто не использовать его для замены символа, на бекслеш + заменяемый символ? Это же делается в 1 строку.
@iforand
@iforand Жыл бұрын
Во-первых, потому что входная строка константиная и её все равно придется копировать перед этим, во-вторых, тут топят за скорость выполнения кода, а менять стринг на стринг всяко длительнее. :)
@homie2417
@homie2417 Жыл бұрын
Это мидл?)
@user-cb8nc5to4z
@user-cb8nc5to4z Жыл бұрын
39:40 Ждал от собеседующего упоминания о LE и BE. Че там мудрить: двоичная история - это всегда индивидуальная снежинка.
@leonidpospelov2437
@leonidpospelov2437 Жыл бұрын
нормальный чувак, всё знает. сделает прекрасную карьеру. а в комментах душнилы
@tagireminov8858
@tagireminov8858 Жыл бұрын
а как можно с Вами связаться?
@ambushedraccoon6408
@ambushedraccoon6408 Жыл бұрын
Здравствуйте. пишите сюда: ambushed.raccoon.tube.mail@gmail.com
@hmixa
@hmixa Жыл бұрын
Интервьюер интервью прошёл! А претендент, что не вопрос то мимо. 🤣🤣🤣🤣 А вообще тут видна типичная ошибка всех умненьких студентиков: учат и козыряют знаниями фреймворков но у них нет простого понятия о программистком повседневном ремесле.
@fedoresko
@fedoresko Жыл бұрын
Да, тут интетесны градации между джуном и мидом. Понятно, что всё на усмотрение собеседующего. По этому кандидату видно, что он высокоуровневый программист, хорошо понимает лямбды, но битики-байтики не особо его интересуют, странно что выбрал именно C++ после джавы, не ясно что именно в C++ подкупило. )
@bookbrain9863
@bookbrain9863 Жыл бұрын
@@fedoresko объясни пж как происходит смещение строки если они добавляют символ перед char c, я знаю как это можно на си сделать, но как реализовано в стринг хз
@fedoresko
@fedoresko Жыл бұрын
@@bookbrain9863 если не знаешь, то посмотри. ) Вот например: template basic_string operator+(_CharT __lhs, const basic_string& __rhs) { typedef basic_string __string_type; typedef typename __string_type::size_type __size_type; __string_type __str; const __size_type __len = __rhs.size(); __str.reserve(__len + 1); __str.append(__size_type(1), __lhs); __str.append(__rhs); return __str; } Делаешь новую строку - добавил символ, добавил старую: всё готово. )
@bookbrain9863
@bookbrain9863 Жыл бұрын
@@fedoresko понятно, то есть всё равно смещать надо право всю строку, я бы сделал без использования кучи, ну да ладно
@fedoresko
@fedoresko Жыл бұрын
@@bookbrain9863 тут нет указания, используется ли куча. На практике небольшие строки аллоцируются на стеке.
@RUMACTEP
@RUMACTEP Жыл бұрын
Все-таки это уровень Junior'а, а не Middle'а
@DamirKamenev
@DamirKamenev Жыл бұрын
Нормализацию ролика по громкости хорошо бы сделать. У интервьюера невыразительная дикция и довольно тихий голос (или низкий уровень записи микрофона). У кандидата ровно наоборот. Один шепчет, другой бьёт по мозгам. Большое спасибо, что голос не повышает!
@s.g.7213
@s.g.7213 Жыл бұрын
Собеседующий не прошёл собеседование. :) return std::string(); Cоздание объекта и возврат, когда слышишь такие казусы , сидишь и думаешь "это проверка?" , а то как то не хочется работать под началом "спеца" с таким уровнем знаний. return {}; можно. return "" ; не рекомендуется так как это всё равно что return std::string(""), то есть будет не явное преобразование типа с вызовом его конструктора. Лучше избегать всех неявный преобразований. Если честно. И это это Мидл ?????
@antonschoolboy2304
@antonschoolboy2304 Жыл бұрын
Это мидл из аспирантуры? Весело.🤣
Собеседование Junior C++
54:00
Ambushed Raccoon
Рет қаралды 37 М.
Собеседование C++
47:00
Ambushed Raccoon
Рет қаралды 23 М.
SHE WANTED CHIPS, BUT SHE GOT CARROTS 🤣🥕
00:19
OKUNJATA
Рет қаралды 3,6 МЛН
😱СНЯЛ СУПЕР КОТА НА КАМЕРУ⁉
00:37
OMG DEN
Рет қаралды 1,8 МЛН
КАК ЧИТАТЬ И ПОНИМАТЬ С/C++ КОД?
8:21
Winderton
Рет қаралды 180 М.
Собеседование Middle C++
1:01:50
Ambushed Raccoon
Рет қаралды 25 М.
Задача из Собеседования на 160,000 Евро в Год
13:27
Саша Лукин
Рет қаралды 1,1 МЛН
Собеседование Junior C++
45:32
Ambushed Raccoon
Рет қаралды 94 М.
Java vs C++: что выбрать?
12:39
Sergey Nemchinskiy
Рет қаралды 211 М.
Собеседование Middle C++
52:34
Ambushed Raccoon
Рет қаралды 19 М.
C++ Разработчик учит Python
28:01
Winderton
Рет қаралды 469 М.