Учусь на программиста, заканчиваю университет. Благодаря Вашему видео устроился на работу) Теперь я кассир пятерочки, потому что понял, что про с++ я знаю практически ничего😀
@@DimanMazafaca Если реально, то все конечно относительно) Пока я не трудоустроен, т.к. впереди еще защита диплома. Но если сравнить меня 3 года назад, я имею в виду мои знания по программированию и сейчас, то может это не небо и земля, но потихоньку начал взлетать)) Потому что раньше я банально не понимал что такое return, куда он что возвращает, кому он что должен). Но относительно этого видео я конечно долю правды в коммент внес, многих тонкостей по языку не знал. Банальные вещи, можно написать. Какую-нибудь условную систему написать могу, вот недавно одному человеку делал курсовую, где нужно было написать систему поиска врачей по симптомам, где использовал наследование. Как бы простые вещи уже знаю, но тонкостей типа что вызовется первым: конструктор объекта или конструктор поля класса - это для меня новое. Понимаю, что язык еще изучать и изучать)
@@Andymit Если этот человек твой товарищ больше не помогай ему) а то выйдет тупым как я)))) 3 года в унике штаны протирал теперь в ускоренном темпе фронтенд изучаю
Более 15 лет занимаюсь программированием на C++, но все равно подобные вопросы на собеседовании иногда ставят меня в тупик, поскольку на практике такого рода конструкции случается применять чуть реже, чем никогда. Боюсь представить, как принимают на работу Senior'a. В любом случае и вне зависимости от результата, уверен что собеседование с @Daria Emacs не было бы для меня впустую потраченным временем :)
@@ДмитрийНормов-ю6ц для кого-то большую часть времени занимает изучение C++. Как ты этого не понимаешь? Слабо верится, что ты вообще программист ибо это знает даже middle разработчик. Можешь быть свободен.
Отличный видео! По больше бы таких). Сам сейчас учусь в универе и был страх что я очень мало знаю и не смогу никогда пройти собеседование, но после вашего видео страх пропал и я понял что мне осталось совсем немного и смогу сам идти на собеседование. Спасибо вам большое❤️❤️❤️❤️
....но потом тебе все равно перезвонят и скажут что "выбор был сделан в пользу лучшего кандидата", а ты такой будешь сидеть и не понимать как нужно было ЕЩЁ лучше отвечать на вопросы, у которых ответы, грубо говоря, константные. И после пачки таких интервью ты уже сам себе перестанишь доверять и начнешь задаваться вопросом " а не протупил ли я выбрав кодить на плюсах", поймешь что 6 лет универа, по факту, слиты из-за наивного представления профессии черезчур радужной, с кучей розовых единорожков и, конечно же, "с печеньками" о которых HR-ы так любят писать на каждом углу. Потеряешь остатки уверенности и растеряешь даже тот скилл который был. Поймешь, что камбэк скорее не возможен чем возможен... И забьешь в конце концов.
Я не программист, но как учителю информатики было очень интересно и даже поймал себя на мысли, что где-то на 85-90% я ответы на вопросы таки знал! Приятно себя потешил)) Спасибо за столь полезное видео!!
Добрый день!Наконец то кто-то сделал это видео! Спасибо Вам и Алексею! Молодцы! 724 просмотра меньше чем за сутки... Очень не плохо:) Смотрю, формат людям понравился)
Спасибо за ролик, очень интересно, учил С++, в ООП дошел до конструктора копирования, закончил учебу в колледже, учил язык сам, чтобы хорошо закрыть программирование и остановился, выгорание, покинул из-за войны свой дом, ничего не хотелось, а щас попался ваш ролик, начал лазить по целой папке с работами от самых простых тем до последних, появилось желание возобновить учебу, просмотреть и освежить все старое и пойти дальше, спасибо!
Сейчас студент второго курса, мы занимаемся ознакомительной практикой на с++ . Очень кстати был выход вашего видео, потому что здесь всплыли некоторые моменты, о которых я так и не узнал из методического пособия. Теперь, думаю, вопросов будет меньше. С нетерпением жду видео данного формата, здесь достаточно много полезной информации. По крайней мере информации для обучающихся в университете точно)) спасибо за выпуск
Друг, я думаю, что ты уже на 4 курсе. Но запомни, учи все сам тоже. университет не даст тебе достаточных знаний, покупай книгу и учи STL. Без STL щас никуда
Ахах та же ситуация , я все думал что я туповат для собеседований и знаний маловато, но после просмотра понимаю что уже можно идти записываться на сабес. Начал чувствовать себя увереннее )
Сказать честно и откровенно,все эти тонкости и узкие места языка-в основном только для собесов,в реальных условиях код должен быть максимально безопасным и эффективным...А главное должна быть грамортная архитектура,а все тонкости языка-крайне редкий случай использования
17:10 Обалдеть. Я АВТОР ЭТОГО КОДА ПРО ПЕРСОНАЖА, ОРКА, ЭЛЬФА И ЧЕЛОВЕКА! Делал такую программу для лабораторных для студентов в МАИ. Похоже, что она пошла дальше в массы 😂
Я такого изощренного способа вычисления факториала никогда не видел. Довольно интересно)) Жаль, что на больших числах не работает, без длинной арифметики не обойтись
@@АндрейКамуда Тем что он учебный и никакого смысла не несет практического с одной стороны и при этом достаточно мутный с другой? Код пишется в первую очередь чтоб его потом читали, если ты БЕГЛО листая код не понимаешь о чем там речь - это плохой код и ему не место в проде
@@rustonelove ну, вообще, не на любых, как бы, потому что во-первых, ограничение стека для рекурсии (если конечно вручную не увеличить его) , а во-вторых еще идет ограничение же типом данных. А факториал - это достаточно быстрорастущая функция, так что дойти до предела типа числа не составит труда, даже если взять какой-нибудь uint64_t
Смог ответить практически на все вопросы благодаря преподам из универа, спасибо им за то что преподавали си и плюсы, и все это держится в голове до сих пор, но в жизни пригодилось только знание ООП :) (мимо фронтендер)
Спасибо автору за видео. Отличная подача. Ради интереса собрал пример на 25 минуте у меня вывод был "A2:C:~C:~A2:", т.е. вывод строк из родительского класса В не происходит, как я понимаю из-за того, что мы переопределили конструктор и деструктор. Собирал на платформе AstraLinux, компилятор g++ 6.3.0, но думаю, что и на других компиляторах будет тоже самое.
господи, неужели собеседование С++ джуна показали в прямом эфире)) не зря ждал. Но было бы круче сделать как в реальных компаниях собеседуют, есть канал, где блогер программист правда он javascript звонит в компании типа устроиться на работу, и он в прямом эфире показывает как реально там проводят интервью. Если покажете реальное собеседование по С++ в компаниях будет вообще огонь.
@@java_art202 ну этот блогер не боится, одна компания на него реально грозила в суд подать))у меня даже ссылка на его видос есть th-cam.com/video/nToDJ0sh5Z4/w-d-xo.html
Девочка приятная, это хорошо, а вот список вопросов я бы подредактировал:) Нужно поменьше формализма типа "статического полиморфизма", и побольше вопросов на рассуждения и глубину понимания. В частности большой респект за арифметику с плавающей точкой.
Уже не первого эксперта читаю, который задвигает про "формализм" и "статический полиморфизм". Макаки что-ли? Статический полиморфизм это практически всё, что делает C++ C++. Ты перепутал методичку.
@@rustonelove Прикол в том что такие вопросы и знание ответов на них никому особо не интересны и работать не помогают. Как хочешь ты это называй. Поэтому им не место на собеседованиях.
@@DariaEmacs Ну так то да) Просто тут больше вопрос в том, что собеседующий хочет узнать за счет таких вопросов? Я лично никогда таким не интересуюсь, ровно как и терминологией вообще. Важно то как человек реализует знания в коде, а не заученные фразочки:)
@@asisu2877 На самом деле просто не надо ходить в места, где требуется полистывать Страуструпа перед собеседованием. Это же не экзамен, где важно просто получить оценку и забыть как страшный сон, нужно быть уверенным что человек ответивший на вопросы собеседования ответит на них и через месяц и через год и не будет забывать применять на практике.
Я вчера проходил собеседование в очень крупную кампанию по веб разработке, к сожалению знаний не хватило и меня послали вежливо)) Ребят главное не настраивайте себя на лучшее как это сделал Я, чтобы не расстраиваться после неудачных собесов)
А насколько для C++ джуна важны знания например POSIX, сети, протоколы передачи данных? Или эти моменты постигаются в процесе работы? Понимаю, зависит от организации, но если нет коммерческого опыта, то владение языком рассматривается как основной критерий? Понимаю, что основы CS важны для c++ника
@@IExSet Это не так работает. Всё, что тебе впаривали под видом подобных разделений - ложно. Язык универсальный - в этом его суть. Другое дело, что он не универсальный с ТЗ его пользователей. И вот здесь как раз таки и есть настоящее разделение. Те "не универсальные языки" - это практически и не языки вовсе. Это такое локальное убожество призванное лишь к одному - дать вчерашнему поломою возможность написать хоть что-то.
Меня вот попросили на собеседовании написать функцию, принимающую кортеж и лямбда функцию, которая выполняется для каждого элемента кортежа. Это эмбейд для микроконтроллеров :) Что называется - открывали ли вы 14 стандарт :) А потом показали, что рекурсию можно построить на типах при помощи enable_if - вот это было мощно :) Тут еще по божески, про атомарность(std::atomic) ничего не было.
@@rustonelove Просто им важно было понять, что я могу на шаблонах и как я их понимаю :) Можно и без рекурсии, развернуть в список, но с кортежами только рекурсия вроде, насколько я знаю.
#6 special function: A a2 = a1; Вывод зависит от конкретной реализации. Стандарт позволяет выполнять данный код двумя разными путями. Непосредственная инициализации конструктором копирования либо инициализации временного объекта конструктором копирования и последующее использование операции присваивания и удаление временного объекта (Прата 602-603...). А еще в примере с выводом сообщений из деструкторов мы не увидим сообщения так как вызовутся они уже после отработки main() - нужны дополнительные обрамляющие скобки для удаления при выходе из вложенного блока до выхода из main()
На самом деле инкапсуляция это размещение данных и методов в одном компоненте(как говорит википедия) в c++ это 2 ключевых слова class и struct, а вот геттеры\сеттеры и пр это уже сокрытие реализации, что относится к инкапсуляции но не означает ее в первую очередь
Пример с эпсилоном, эти вычисления будут выполняться на каждой итерации цикла. Эффективней запомнить константы интервала или эпсилон и сравнивать с ними, а ещё лучше завести целочисленный счётчик и всё измерять по нему ????
потому что часто в реалных проектах используют другие пространства имен (например, написанные другими разрабами), а подключение стандартного пространства имен ломает все. А пространсва имен - это то, что позволяет склеить из кусков кода разных программитсов один код, так что не обойтись без этого.
12:00 вот и до дифференциалов добрались😁. Как я понимаю точность до +/- 0.1, возможно нужно стремиться работать с целочисленными переменными, результат поделить на 10.
10:00 нафиг здесь интервалы, можно просто внешний цикл сделать с целой переменной. Тогда и в условии if будет целое значение. x можем менять внутри цикла или вычислять его умножая дельту на целое значение из цикла. И в цикле стояла бы переменная которую логично перечислять (номер ячейки в сетке), а не координаты являющиеся уже следствием счёта. В более сложных циклах понятные индексы улучшили бы читаемость кода.
5:36. Вы берете ссылки на память, которая доступна только во время выполнения функции. После выхода из функции ссылка недействительна. Её можно возвращать, если переменная внутри тела функции будет статической или если возвращать ссылку на rvalue аргумент. Использование значения по dangling reference - неопределённое поведение.
Нечего делать, вставлю 5 копеек по каждому вопросу: 1. Нормальный вопрос. Главные отличия: - чтобы задать значение указателю, нужно использовать адрес (оператор &)), а ссылке не нужно. - Указатель может быть переменной (указывать на разные адреса) а ссылка не может. - Чтобы получить данные, на которые указывает указатель, его нужно разыменовать (оператор *). Ссылку не нужно. - В коде везде, где применяется ссылка, в конечном бинарном файле будет указатель. Ссылка - это синтаксический сахар. - Указатель может ни на что не указывать (нулевой адрес, NULL, nullptr, 0). Ссылка же должна всегда. "Кандидат" лил очень много воды по этой теме. Лучше помолчать, подумать, составить нормальное предложение и высказать, чем мычать и лить воду. Говорить про то, что он говорил много лишнего, не буду, это очевидно. Это показывает, что человек некомпетентен в этом вопросе. 2. Дурной вопрос. Проблема в коде. Код дебилен. Никто такой бред в реальной коде писать не будет. Такие вопросы задают "гики" чисто ради самодовольствия по типу "а он так же любит копаться в ненужном коде, как и я?". Если вам задают такой вопрос, молча просмотрите код, изучите его полностю, потом не спеша говорите "в этой строке выведет вот это", идите глазами дальше, и так по каждой строке вывода (здесь их 3). Код, кстати ужасен. Никто в C++ не пишет void в параметрах функции, это в C писали. 3. Хороший вопрос на знание того, как хранятся биты в вещественных типах и как их сравнивать. Отличная статья здесь: noobtuts.com/cpp/compare-float-values. А код тоже такой себе. Во-первых cmath находиться в iostream, его повторно подключать не нужно. Во-вторых "кандитат" лил ооочень много воды. Это делается для того, чтобы отвлечь интервьюера от вопроса. Психологический ход, но я заметил и слышать было сложно. Также "кандидат" спешил, говоря вещи, которые были ошибочны. Не спешите с ответом, молча подумайте несколько секунд, это не делает вас тупым. И вообще, что это за "dx / 2" если сам интервьюер говорит, что нужно использовать епсилон. Это значение есть в стандартной библиотеке, вот ссылка. Пользуйтесь: en.cppreference.com/w/cpp/types/numeric_limits/epsilon 4. Класика. Нужно знать. 3 принципа Объектно-Ориентированого Программирования (или 3 краеугольных камня ООП, как сказала интервьюер, мне не нравится это название), это инкапсуляция, наследование и полиморфизм. Нажаль некоторые добавляют сюда еще и абстракцию. Поэтому уточняйте, сколько нужно рассказать их. Я считаю дебилизмом сюда добавлять абстракцию, но опишу свои определения этих четырех понятий: Инкапсуляция - принцип ООП, который позволяет объединить данные и методы их обработки в единую сущность, которая в С++ зветься структурой или класом, и защитить их от внешнего использования благодаря модификаторам доступа (В С++ это protected и private). Реализовывается возможностью создавать классы и структуры. Наследование - принцип ООП, который позволяет создавать новые классы на основе уже существующих без повторного написания кода. Реализовывается двоеточием и именем базового класса при создании дочернего класса. Полиморфизм - принцип ООП, который позволяет использовать разную реализацию кода при одинаковом интерфейсе. В С++ есть 3 типа полиморфизма: ad-hoc полиморфизм (другими словами перезагрузка функций), параметризованный полиморфизм (другими словами шаблоны функций) и полиморфизм подтипов, который реализовывается виртуальными методами и их вызовами через указатели/ссылки на базовые классы. Обычно именно третий тип имеют ввиду, когда говорят про полиморфизм, что не точно. Статический полиморфизм - это первые 2 типа. Динамический - это третий тип. Абстракция - принцип ООП, который позволяет отделить схожие характеристики разных классов и объединить их в едином базовом класе. Реализовывается абстрактными класами (или наличием чисто виртуальных методом у класса). "Кандитат" дал неточное определение инкапсуляции. Он ее называет сокрытием данных и дает определение сокрытию данных. Хотя сокрытие данных - это часть инкапсуляции. Плюс много воды. Давайте четкое краткое определение и все. Все другое интервьюер задаст вам сам. Ну и другие принципы были описаны лишь примерами, без определения. Ну ладно, не всем интервьюерам может зайти, но пусть. 5. Вопрос для внимательных. Суть заключается в том, чтобы проверить, знает ли человек порядок вызова конструкторов и деструкторов при наследовании. Сложность в примет добавляют поля классов B и C. Сложность заключается в том, что нужно знать, что вызовется первым - конструктор базового класса, или конструктор поля. Правильный ответ - конструктор базового класса. "Кандидат" ответил не правильно. Вторая часть в комментариях ниже...
6. Вопрос на знание того, что такое полиморфизм подтипов (смотрите описание в вопросе №4) и что такое сокрытие реализации. Сокрытие реализации заключается в том, что дочерний клас имеет метод с таким же именем, но не переопределяет базовый метод (в базового метода отсутствует ключове слово virtual). "Кандидат" ответил правильно на вопрос. И да, достаточно написать virtual лишь в методе базового класса, все дочерние автоматически при переопределении этого метода будут также виртуальными. Но я люблю дописывать это слово, чтобы явно подчеркнуть. И не забывайте при переопределении использовать слово override. 7. Хороший и важный вопрос. Виртуальный деструктор нужен для того, чтобы при использовании полиморфизма подтипом у вас правильно вызывались деструкторы. Представьте класс A и класс B, который наследуется от него. Если создать что-то наподобие: A* ptr = new B(); и потом delete ptr; то деструкторкласса B вызываться не будет. А если класс А будет иметь виртуальный деструктор, то будет. 8. Вопрос, который не касается C++, а относится к знаниям дискретной математики. Ответ на эту задачу с объяснением здесь: znanija.com/task/417681. Задача решается знанием формулы а не логикой, из-за чего если вы не знаете, как работать с множествами, то ответ не найдете. Либо будете долго считать, что интервьюер не позволит. Я не знал, как эту задачу решить. Нет ничего плохого в том, что какой то раздел математики вам не знаком. Это важно лишь тогда, когда вы йдете на узкую специальность, например игровую разработку, в которой часто используются вектора и линейная алгебра (которую могут спросить). Совет по ответам на такие вопросы: подумайте молча, постарайтесь найти ответ, после чего определить доказательство вашего значения. Если не нашли, говорите, что пробовали считать в голове, говорите значение, которое получилось, но говорите, что не уверены в нем. Я бы такие вопросы на собеседованиях не задавал, я бы спросил только, знает ли человек определенные области в математики и задавал бы теоретические вопросы. 9. Частый и важный вопрос. Компилятор автоматически генерирует: - Конструктор по умолчанию (без параметров) - Конструктор копии - Конструктор переноса (с С++11) - Деструткор - Перезагруженный оператор присваивания копией - Перезагруженный оператор присваивания переносом (С++11) Причем здесь есть много дебильных тонкостей, например если создать свой обычный конструктор с параметрами, то конструктор по умолчанию пропадет, зато останутся другие. А если создать конструктор копии, то пропадет и конструктор переноса. Ну и всякое такое. 10. Тоже нужно знать. Кстати, не во всех компиляторах может вызываться сразу конструктор копии в этом выражении (MyClass object2 = object1). Дело в том, что здесь конструктор копии вызывается неявно. Явный вызов выглядит вот так (MyClass object2(object1) или MyClass object2{object1}). Из-за чего некоторые старые компиляторы могут сначала создать временный объект и только потом вызвать конструктор копии. Поэтому вызывайте конструкторы копии явно. 11. Знать указатели на функции - вопрос спорный и уже староват немного. Сейчас есть лямбда-функции и функторы (ну и std::function). С ними проще, ну ладно. Далеко не все знают, что такое указатели на функции. 12. Размер масива можно узнать двумя способами: Старый способ: size = sizeof(arr) / sizeof(arr[0]) Новый способ: std::size(arr) (Функция std::size появилась в C++17) 13. Спорный вопрос. Лучше просто спросить, что кандидат знает по С++17, какие новшества может показать и все. И вообще, задача была "как сделать так, чтобы символ нельзя было передавать". Ее решить можно способом, который вместе с С++ придуман. Вот: void f(int& a). Ссылка на int не может указывать на char. 14. Без комментариев. А точнее комментарий идентичный до вопроса №2. 15. Знание метапрограммирования для новичка? Серйозно? Жесть, вы жеские. 16. Не Юник ПэТэЭр и Шаред ПэТэЭр, а Юник ПиТиАр и Шерд ПиТиАр. А если серйозно, то знание умных указателей важно. unique_ptr, shared_ptr и weak_ptr нужно знать. Итог: не соглашусь с Дарией, человек далеко не все знает. Если бы я задавал ему эти вопросы, то я бы не брал его на роботу. Вы ему сильно помогали. Но дело в том, что я бы такие вопросы не задавал (ну хотя-бы половину). "Кандидат" действительно знает многие вещи, но не те, которые нужны были для ответа на вопросы. Совет Дарье, как интервьюеру: в принципе все было хорошо, только пункт №16 задел (придирчив к английскому). Ну и если сами составляли вопросы, то не нужно задавать вопросы "по веселью". Нужно задавать вопросы "по роботе". Я понимаю, что это пробное и демонстрационное интервью, поэтому все окей, нет придирок. Совет "Кандидату": меньше воды. В разы меньше воды. Больше думай, меньше говори. И купи нормальный микрофон. А вообще буду рад также пройти демонстрационное собеседование. Если интересно, пишите сюда, запишем видео, попробую свои силы. P.S. Ну и да, я преподавал C++ 2 года, у меня на канале много видео на украинском языке по C++, обзорам книг по программированию, прохождение собеседований, практика С++ и немножко C#. Кто знает украинский, заходите, может зайдет.
Учу с++ прошел основные термины по типу полиморфизма наследования абстракции и тд, но хотел бы углубить свои познания.Что вы бы могли порекомендовать к прочтению либо к прохождению?
Ссылка это алиас/никнейм переменной Если у нас есть необходимость переопределения переменнной,то следует использовать указатель,так как переопределять ссылку нельзя Ссылка не может ссылаться на null Также существует арифметика указателей ,но нет арифметики ссылок Наверное так бы ответил
53:49 : можно ли узнать, каково решение данной задачи при помощи специализации? Был бы очень Вам благодарен :) Крутой собес, продолжайте в том же духе!
В С++ есть шаблонные переменные и их специализация. Поэтому можно просто создать переменную от n. godbolt.org/z/83z8s1 На это дристню с enum даже не смотри. Это древний хак для получения компилтайм-значения. Сейчас они есть встроенные. Я добавил в пример constexpr-поля.
@@rustonelove За примеры спасибо (на type traits я впервые увидел реализацию), но всё же как-то грубовато. Не вижу ничего плохого в примере с enum как учебным и классическим решением старого С++ .
@@СергейНикитин-т9ж Нет - enum, а особенно как учебный - это позорище. Это лишь говорил о том, что пациент ничего не знает о C++. А тот, кого учат таким образом - обречён.
Боже храни вас )) Умная девушка программист ,приятной внешности ,а то надоели эти фронтендеры из инстаграмма ,со своим инфо цыганством (( Тут наткнулся на девочку 15 лет которая учит программировать на питоне ( Все они лезут в IT
Я фронтердер, но учу и буду учить хардовые темы типо функциональное программирование, алгоритмы, чтобы можно было на фоне этих дурачков быть алмазом. Среди говнища.
Лол, я несколько часов назад сел изучать питон и уже пытаюсь реализовать свой алгоритм нейросети по подражанию самообучения реального трейдера. Возможно, Вы будете намного сильнее меня в программировании. Я бы не боялся любого собеседования, т.к. больше чем Вы будете знать - Вы не сможете ответить, а потому зачем волноваться?
Спасибо, Mike). Да, вопросы, похожие были, но стандарт был старый. (Я устраивалась на работу ещё на 5 курсе, студенткой, не могу сказать, это был полноценный джун, а потом, после получения высшего образования и двух лет программирования только на С++, были именно такие собеседования).
@@misteranderson6058 да сейчас и без еды джуны никому не нужны. Если ты даже не просишь з/п, это все равно некоторые расходы + будешь отвлекать опытных коллег. Т.е. ты еще компании должен и доплачивать, чтобы ее заинтересовать.
@@phat80 Ну толковые джуны все таки нужны. Но это Джун, который уже умеет писать код и хорошо разбирается в предметной теме, вот прям очень хорошо. Таких Джунов процентов 5 в лучшем случае.
А я не учусь на прогера. Я вообще тестер, но интересно слушать. Что-то даже сам знаю. Хотя игры бы делал чисто душу отвести по творческой части. А проганье так, полезное дополнение :)
Здравствуйте, ребята! Прошу вашего совета: хочу стать С++ разработчиком. Читаю и занимаюсь по книге Стивена Прата «язык программирования С++. Лекции и упражнения.» Это первое знакомство с айти. Что делать следующим этапом? Как с этого этапа перейти к этапу изучения создания чего-то, приложения мобильного, например? Какие слои знаний накладывать дальше и в каком порядке?
Резюме героя видео: hh.ru/resume/e66eb372ff083eb6a80039ed1f347447336250
Он прошёл?
Прошел
@@DariaEmacs Я влюблён)) Выходи за меня Дарья, я готов унаследовать все твои классы))
🤣🤣🤣👍 Фраза - супер)))).
Дарья, а подскажите пожалуйста, я хочу программировать микроконтроллеры(stm32), есть ли мне смысл изучать плюсы? Или на чистом С остановиться?
Учусь на программиста, заканчиваю университет. Благодаря Вашему видео устроился на работу) Теперь я кассир пятерочки, потому что понял, что про с++ я знаю практически ничего😀
А если реально какие успехи по профессии?)_
@@DimanMazafaca Если реально, то все конечно относительно) Пока я не трудоустроен, т.к. впереди еще защита диплома. Но если сравнить меня 3 года назад, я имею в виду мои знания по программированию и сейчас, то может это не небо и земля, но потихоньку начал взлетать)) Потому что раньше я банально не понимал что такое return, куда он что возвращает, кому он что должен). Но относительно этого видео я конечно долю правды в коммент внес, многих тонкостей по языку не знал. Банальные вещи, можно написать. Какую-нибудь условную систему написать могу, вот недавно одному человеку делал курсовую, где нужно было написать систему поиска врачей по симптомам, где использовал наследование. Как бы простые вещи уже знаю, но тонкостей типа что вызовется первым: конструктор объекта или конструктор поля класса - это для меня новое. Понимаю, что язык еще изучать и изучать)
@@Andymit Если этот человек твой товарищ больше не помогай ему) а то выйдет тупым как я)))) 3 года в унике штаны протирал теперь в ускоренном темпе фронтенд изучаю
@@DimanMazafaca не, это все на фрилансе было) да, я отчасти такой же как и ты) но я сам больше сидел когда было интересно и изучал языки
Пхах
Наконец-то кто-то сделал данный формат для c++. Прошу вас, продолжайте
Но при этом С++ настолько суров, что даже посмотреть этот видос сложно (из-за звука)
@@f3arning хпххп
@@f3arning Та да...
Мне кажется это ещё по лайту было)
Это тебе не Word и не exel
Если бы собеседования всегда проводили такие приятные девушки, жить было легче 😊
Из-за звука сложно воспринимается
Такая милая и позитивная девушка! Мир добрее с такими людьми
Спасибо 😊.
джуны любят на простые вопросы ответ растягивать на пол часа)
А олдам вообще лень было бы отвечать на эти дебильные вопросы).
@@MariaEsenina +++
Как приятно видеть эту девушку😍 Как лесная фея🍃💚 Ох я была бы рада, если бы меня собеседовала такая нимфа💫
@@yakovleva_foto ))) спасибо
Какое прекрасное видео!
Дарья ,спасибо Вам за контент.
Более 15 лет занимаюсь программированием на C++, но все равно подобные вопросы на собеседовании иногда ставят меня в тупик, поскольку на практике такого рода конструкции случается применять чуть реже, чем никогда. Боюсь представить, как принимают на работу Senior'a. В любом случае и вне зависимости от результата, уверен что собеседование с @Daria Emacs не было бы для меня впустую потраченным временем :)
Вампир, вы 15 лет программируете на С++ и вы до сих пор не senior ????
@@ДмитрийНормов-ю6ц что, думаете после 5 лет, всех сразу на эту должность берут и везде она есть?
Меня всегда и везде это бесило. Некоторые люди запоминают правила, а некоторые нет, разницы в реальной жизни от этого никакой.
@@ДмитрийНормов-ю6ц для кого-то большую часть времени занимает изучение C++.
Как ты этого не понимаешь?
Слабо верится, что ты вообще программист ибо это знает даже middle разработчик.
Можешь быть свободен.
@@ammonjerro396 в реальной жизни никакой, да. но на собесе главное отсеять самых слабых и проверка памяти и смекалки - это лучший способ.
Отличный видео! По больше бы таких). Сам сейчас учусь в универе и был страх что я очень мало знаю и не смогу никогда пройти собеседование, но после вашего видео страх пропал и я понял что мне осталось совсем немного и смогу сам идти на собеседование. Спасибо вам большое❤️❤️❤️❤️
вот для тебя все и делалось ( ну тебя и таких как ты, потому что сам такой недавно был)
....но потом тебе все равно перезвонят и скажут что "выбор был сделан в пользу лучшего кандидата", а ты такой будешь сидеть и не понимать как нужно было ЕЩЁ лучше отвечать на вопросы, у которых ответы, грубо говоря, константные. И после пачки таких интервью ты уже сам себе перестанишь доверять и начнешь задаваться вопросом " а не протупил ли я выбрав кодить на плюсах", поймешь что 6 лет универа, по факту, слиты из-за наивного представления профессии черезчур радужной, с кучей розовых единорожков и, конечно же, "с печеньками" о которых HR-ы так любят писать на каждом углу. Потеряешь остатки уверенности и растеряешь даже тот скилл который был. Поймешь, что камбэк скорее не возможен чем возможен... И забьешь в конце концов.
@@paulrei00 если ты деградант, то не значит что все вокруг такие же.
@@bombdoge7543 судя по твоему ответу ты тоже.
@@paulrei00 ну, я хотя-бы не проебывал 6 лет жизни на универ и не ною в комментах.
Вы молодец, до связи, обращайтесь, когда будете знать c++)))))
Я не программист, но как учителю информатики было очень интересно и даже поймал себя на мысли, что где-то на 85-90% я ответы на вопросы таки знал! Приятно себя потешил)) Спасибо за столь полезное видео!!
тот случай, когда не шибко шаришь в ссылках и классах, а подсчет бит видишь за секунды )
Благодарю Алексея и Дарью за видео!
Спасибо :)
Класс, нужно ещё такие видео👌
Вау, совершенно замечательное видео. Было очень интересно и познавательно.
Добрый день!Наконец то кто-то сделал это видео! Спасибо Вам и Алексею! Молодцы! 724 просмотра меньше чем за сутки... Очень не плохо:) Смотрю, формат людям понравился)
Спасибо за ролик, очень интересно, учил С++, в ООП дошел до конструктора копирования, закончил учебу в колледже, учил язык сам, чтобы хорошо закрыть программирование и остановился, выгорание, покинул из-за войны свой дом, ничего не хотелось, а щас попался ваш ролик, начал лазить по целой папке с работами от самых простых тем до последних, появилось желание возобновить учебу, просмотреть и освежить все старое и пойти дальше, спасибо!
Сейчас студент второго курса, мы занимаемся ознакомительной практикой на с++ . Очень кстати был выход вашего видео, потому что здесь всплыли некоторые моменты, о которых я так и не узнал из методического пособия. Теперь, думаю, вопросов будет меньше. С нетерпением жду видео данного формата, здесь достаточно много полезной информации. По крайней мере информации для обучающихся в университете точно)) спасибо за выпуск
Спасибо, Илья :).
Ограничиваться методическим пособием при изучении C++, это как море вычерпывать чайной ложкой.
Друг, я думаю, что ты уже на 4 курсе.
Но запомни, учи все сам тоже. университет не даст тебе достаточных знаний, покупай книгу и учи STL. Без STL щас никуда
Продолжайте этот формат, он хорош. Было бы неплохо видеть больше таких видео и с бОльшим уровнем сложности/сеньорности
Видео супер, спасибо, не мог понять какой у меня уровень, теперь понимаю что чуть выше джуниора. Учусь на втором курсе
Если не секрет, то в каком вузе/колледже учишься?
Джун это не уровень знаний, а состояние души. Мало кто может быть "выше джуна" в 18 лет чисто в силу незрелости.
Ахах та же ситуация , я все думал что я туповат для собеседований и знаний маловато, но после просмотра понимаю что уже можно идти записываться на сабес. Начал чувствовать себя увереннее )
на реального джуна не хватает тут вопросов)
Всегда интересно было увидеть как примерно выглядит собеседование в компанию на должность прогера.
Интересно, что реально можно написать на таком уровне вопросов ? d == 2.0 это реальная проблема ?
@@IExSet Собеседование на джуна, ты хочешь чтобы с новичка спрашивали как с полноценного миддла или сеньора?
@@IExSet это тип, как ты все тонкости языка прощупал, обычно, зная эти вопросы многое отпадает
Сказать честно и откровенно,все эти тонкости и узкие места языка-в основном только для собесов,в реальных условиях код должен быть максимально безопасным и эффективным...А главное должна быть грамортная архитектура,а все тонкости языка-крайне редкий случай использования
Крутой формат, пожалуйста сделайте собеседование на middle и senior позиции
собеседование на роль senior я бы назвал "Почувствуй себя никем")))
Кстати, да).
Них--я не понял, но очень интересно))
Обязательно делаете еще собеседования!
Спасибо огромнейшее за ваш труд. Особенно Алексею за невероятную смелость. Когда я прохожу собеседования петросян отдыхает )))
17:10 Обалдеть. Я АВТОР ЭТОГО КОДА ПРО ПЕРСОНАЖА, ОРКА, ЭЛЬФА И ЧЕЛОВЕКА! Делал такую программу для лабораторных для студентов в МАИ. Похоже, что она пошла дальше в массы 😂
круто
Я такого изощренного способа вычисления факториала никогда не видел. Довольно интересно)) Жаль, что на больших числах не работает, без длинной арифметики не обойтись
За такой код в проде надо давать по башке:)
@@matanmaster а чем такой код плох? за исключением конечно того, что алгоритм другой нужно было выбрать.
@@АндрейКамуда Тем что он учебный и никакого смысла не несет практического с одной стороны и при этом достаточно мутный с другой? Код пишется в первую очередь чтоб его потом читали, если ты БЕГЛО листая код не понимаешь о чем там речь - это плохой код и ему не место в проде
Работает на каких угодно числах. Ну конкретно эта древняя дристня на enum-хаке не работает, а так работает.
@@rustonelove ну, вообще, не на любых, как бы, потому что во-первых, ограничение стека для рекурсии (если конечно вручную не увеличить его) , а во-вторых еще идет ограничение же типом данных. А факториал - это достаточно быстрорастущая функция, так что дойти до предела типа числа не составит труда, даже если взять какой-нибудь uint64_t
Смог ответить практически на все вопросы благодаря преподам из универа, спасибо им за то что преподавали си и плюсы, и все это держится в голове до сих пор, но в жизни пригодилось только знание ООП :) (мимо фронтендер)
Здорово!
Спасибо автору за видео. Отличная подача.
Ради интереса собрал пример на 25 минуте у меня вывод был "A2:C:~C:~A2:", т.е. вывод строк из родительского класса В не происходит, как я понимаю из-за того, что мы переопределили конструктор и деструктор. Собирал на платформе AstraLinux, компилятор g++ 6.3.0, но думаю, что и на других компиляторах будет тоже самое.
интересное начало, особенное с решением заменить ошибку на костыль/другую ошибку, очень интересно )))
Чем чаще говорят «соответственно», тем больше это говорит, что человек хочет показаться умнее, чем он есть
это признак волнения, а не желание "казаться"
@@DariaEmacs ваше определение никак не конфликтует с моим. Человек вполне может стараться казаться умнее, чем есть, когда волнуется.
Какой интересный ракурс =)
На фоне печи, люди разбирают [code]
Крутое собеседование , вы молодцы !
Я, пожалуй, подпишусь и посмотрю побольше ваших видео, чтобы быть готовым к своему первому собеседованию
ну как
Алексей красава, чудесный мэн! =)
господи, неужели собеседование С++ джуна показали в прямом эфире)) не зря ждал. Но было бы круче сделать как в реальных компаниях собеседуют, есть канал, где блогер программист правда он javascript звонит в компании типа устроиться на работу, и он в прямом эфире показывает как реально там проводят интервью. Если покажете реальное собеседование по С++ в компаниях будет вообще огонь.
Я думаю, за такое можно засудить. Нельзя записывать разговор, не предупредив об этом.
@@java_art202 ну этот блогер не боится, одна компания на него реально грозила в суд подать))у меня даже ссылка на его видос есть th-cam.com/video/nToDJ0sh5Z4/w-d-xo.html
интересно было бы еще и на джаве собеседование посмотреть) спасибо за труды!)
Спасибо)).
Запишите пожалуйста в дальнейшем собеседования на позицию senior C++
Выдержал только одну минуту. Уже взорвался мозг..... Ну зачем же так жёстко-то?
Волшебно и восхитительно
Девочка приятная, это хорошо, а вот список вопросов я бы подредактировал:) Нужно поменьше формализма типа "статического полиморфизма", и побольше вопросов на рассуждения и глубину понимания. В частности большой респект за арифметику с плавающей точкой.
Уже не первого эксперта читаю, который задвигает про "формализм" и "статический полиморфизм". Макаки что-ли? Статический полиморфизм это практически всё, что делает C++ C++. Ты перепутал методичку.
@@rustonelove Прикол в том что такие вопросы и знание ответов на них никому особо не интересны и работать не помогают. Как хочешь ты это называй. Поэтому им не место на собеседованиях.
Я думаю, место или не место решать работодателю). Тут спорить бесполезно, не устраивают вопросы - встал и ушел).
@@DariaEmacs Ну так то да) Просто тут больше вопрос в том, что собеседующий хочет узнать за счет таких вопросов? Я лично никогда таким не интересуюсь, ровно как и терминологией вообще. Важно то как человек реализует знания в коде, а не заученные фразочки:)
Спасибо за видео. Весьма полезное. Вдохновляет.
Блин, я, конечно, посмотрел первые пару минут, но вроде бы пользуешься, знаешь, но когда объяснить надо, то в ступор встаешь
Это точно, проще написать, чем объяснить).
просто перед такими собесами полистывать Страуструпа и будет норм
@@asisu2877 На самом деле просто не надо ходить в места, где требуется полистывать Страуструпа перед собеседованием. Это же не экзамен, где важно просто получить оценку и забыть как страшный сон, нужно быть уверенным что человек ответивший на вопросы собеседования ответит на них и через месяц и через год и не будет забывать применять на практике.
Проще готовым пользоааться( написать самому... Это читать надо много...
То ощущение, когда код на с++ для продакшна не писал, но прям уверен что будучи на месте того парня прошел бы.
Бедная девушка, за уши прям тащит кандидата, подсказывает как может !
Богатая! Задачи не стояло кого-то валить, нужно было понять, может ли кандидат мыслить и рассуждать. С этим он справился на 5.
Классный формат, давайте ещё! :)
Это чувство, когда применяешь то, не знаю что.... так, не знаю как.. и по итогу, что самое как раз удивительное, всё работает :)
Я вчера проходил собеседование в очень крупную кампанию по веб разработке, к сожалению знаний не хватило и меня послали вежливо)) Ребят главное не настраивайте себя на лучшее как это сделал Я, чтобы не расстраиваться после неудачных собесов)
Не расстраивайтесь, это всегда лотерея! ))
Очень интересное собеседование, продолжайте в том же духе)
А насколько для C++ джуна важны знания например POSIX, сети, протоколы передачи данных? Или эти моменты постигаются в процесе работы? Понимаю, зависит от организации, но если нет коммерческого опыта, то владение языком рассматривается как основной критерий?
Понимаю, что основы CS важны для c++ника
Даша, огромное спасибо за метод "птички". Иначе в этом и с поллитрой не разберёшься.
Ох, неужели я дождался на ютубе языка языков его величество С++ :D
хаха его величество не смеши)
@@ПользовательИнтернета-э6г Покажи другое величество. Действуй.
@@rustonelove очень тупо пытаться всё запихать в один универсальный язык
@@IExSet Это не так работает. Всё, что тебе впаривали под видом подобных разделений - ложно. Язык универсальный - в этом его суть. Другое дело, что он не универсальный с ТЗ его пользователей. И вот здесь как раз таки и есть настоящее разделение. Те "не универсальные языки" - это практически и не языки вовсе. Это такое локальное убожество призванное лишь к одному - дать вчерашнему поломою возможность написать хоть что-то.
Приятная и позитивная девушка)
Оч полезное видео. Сижу, кричу, подсказываю герою))
Спасибо 😊.
Меня вот попросили на собеседовании написать функцию, принимающую кортеж и лямбда функцию, которая выполняется для каждого элемента кортежа. Это эмбейд для микроконтроллеров :) Что называется - открывали ли вы 14 стандарт :) А потом показали, что рекурсию можно построить на типах при помощи enable_if - вот это было мощно :) Тут еще по божески, про атомарность(std::atomic) ничего не было.
Радуйся наоборот. В чём проблема с мк? Если рекурсия на enable_if - это для них круто, то ты попал в колхоз. В любом случае это лучше легаси-болота.
Жуть)), зачем такое спрашивать на собеседовании...
@@rustonelove Просто им важно было понять, что я могу на шаблонах и как я их понимаю :) Можно и без рекурсии, развернуть в список, но с кортежами только рекурсия вроде, насколько я знаю.
Спасибо, познавательно.
Адское адище) Хорошо что в свое время решил сесть за сишарп
Алексей молодец
#6 special function:
A a2 = a1;
Вывод зависит от конкретной реализации. Стандарт позволяет выполнять данный код двумя разными путями. Непосредственная инициализации конструктором копирования либо инициализации временного объекта конструктором копирования и последующее использование операции присваивания и удаление временного объекта (Прата 602-603...). А еще в примере с выводом сообщений из деструкторов мы не увидим сообщения так как вызовутся они уже после отработки main() - нужны дополнительные обрамляющие скобки для удаления при выходе из вложенного блока до выхода из main()
Спасибо за такие видео,лайк.
Завтра собеседование, вроде всё помню, а всё равно вернулся сюда и нашёл свои пробелы)))
Спасибо!😇
Спасибо, Никита 😀!
Как прошло собес.?
@@yura4824 отлично
@@nikitafamily5341 Никита, расскажите в паре предложий о текущем положении ваших дел? Вроде год прошел. Там же работаете? Интересно всегда так узнать)
учил в универе плюсы 1 семестр. понял, что даже до джуна мне пока далеко.
За 1 семестр в универе до джуна на любом языке далеко)
ахаахахах, КАКОЙ ТАМ ДЖУН, АЪАХАХАХАХА
не каждому дана эта
@@artem1430 сочувствую, что вы в универе дельфи учите, у меня в школе плюсы уже были(классе в 9 начали изучение).
@@flytrap. возможно, он в шараге учиться
Соответственно, соответственно
Было бы интересно посмотреть разбор тестового задания. Что-то типа "Покодим":)
Какого, Александр? :)
@@DariaEmacs Какого-нибудь тестового задания с собеседования по C++
Или я не совсем правильно понял суть вопроса?:)
Тестовые задания довольно рафинированная штука. :) Я лучше реальный код подписчика разберу.
@@DariaEmacs Так даже лучше)
За такие примеры кода в реальной жизни надо "загрызать".... и выдавать запрет на профессию.
🤣
У меня херня какая-то, на собесах теряюсь на простых вопросах, потом волосы рву. Типа что такое for? -ДЛЯ!
На самом деле инкапсуляция это размещение данных и методов в одном компоненте(как говорит википедия) в c++ это 2 ключевых слова class и struct, а вот геттеры\сеттеры и пр это уже сокрытие реализации, что относится к инкапсуляции но не означает ее в первую очередь
Соответственно!!!!
Интересное собеседование) кое что даже вспомнил)))
Спасибо, Alex)!
Мне кажется автору нравится парень который отвечает :)
Назовите отличие ссылки от указателя:
- Ссылка ссылается, указатель - указывает ))))))
Даша, за часть кода руки поотрубал бы, но собеседование у вас, наверное, не пройду. Ведущий разработчик всемирно известной компании, стаж 20+
Так это не мой код). Это то, что спрашивают на собеседованиях). (По крайне мере, меня спрашивали).
Зверь)))
Видно, человек ходит по собеседованиям) Кстати, это лучший способ изучения языка))
Зачёт парню, что не побоялся записи. Классные девайсы на втором плане.
Да! Да!
Неа. Лучший способ изучения языка -- сделать что-нибудь практическое и полезное.
@@mikemichaelism личный опыт?
@@cyrilanisimov Личный опыт? Лет 35 на Си, а Си++ -- для тестов прошивок, которые наваял на Си.
охренеть, молодая Долина кодер)
Пример с эпсилоном, эти вычисления будут выполняться на каждой итерации цикла. Эффективней запомнить константы интервала или эпсилон и сравнивать с ними, а ещё лучше завести целочисленный счётчик и всё измерять по нему ????
Кстати, есть ещё одна новенькая ну или не совсем новенькая фишка))
template
void f(T);
Новенькая фишка это концепты)
Протухшая штучка, но выше уже сказали. Причём протухшая дважды.
Я не С++ программист, но на 12й минуте сдали нервы и я выключил видео с криком "ДА ПОДЕЛИ ТЫ DX НА 2 УЖЕ!!!!"))))
Хорошо, что Вы не проводите собеседования)))).
Там вообще не дожлно быть DX, а абстрактный tolerance типа 1e-6
@@matanmaster +-DX/2
@@НиколайЗахаров-б1м Вообще значение dx не нужно, это плохой код, достаточно взять достаточно маленькую эпсилон-окрестность.
@@matanmaster да, точно.. а что это?)))
Было очень интересно - я бы еще посмотрел или поучаствовал.
Спасибо))
Потренируйтесь с кем-нибудь обязательно!
Соответственно
У меня вопрос, почему не используют using namespace std?
потому что часто в реалных проектах используют другие пространства имен (например, написанные другими разрабами), а подключение стандартного пространства имен ломает все. А пространсва имен - это то, что позволяет склеить из кусков кода разных программитсов один код, так что не обойтись без этого.
@@dosairin6260 Спасибо!
Почем не использовать целочисленный цикл? Для данного примера поиска нужного значения в цикле он будет правильно и быстрее.
Вы не поняли суть задания. Оно даже называлось double. И нужно было узнать, знает ли человек, как работать с этим типом данных
@@antonslyzhko4926 Спасибо Антон, это я понял, мне просто не понравился пример ;)
12:00 вот и до дифференциалов добрались😁. Как я понимаю точность до +/- 0.1, возможно нужно стремиться работать с целочисленными переменными, результат поделить на 10.
10:00 нафиг здесь интервалы, можно просто внешний цикл сделать с целой переменной. Тогда и в условии if будет целое значение. x можем менять внутри цикла или вычислять его умножая дельту на целое значение из цикла. И в цикле стояла бы переменная которую логично перечислять (номер ячейки в сетке), а не координаты являющиеся уже следствием счёта. В более сложных циклах понятные индексы улучшили бы читаемость кода.
5:36. Вы берете ссылки на память, которая доступна только во время выполнения функции. После выхода из функции ссылка недействительна. Её можно возвращать, если переменная внутри тела функции будет статической или если возвращать ссылку на rvalue аргумент. Использование значения по dangling reference - неопределённое поведение.
Demenev Dmitriy вроде бы все ок, возвращается ссылка на а, которая определена глобально
Так она и есть статическая, посмотри где она определена
@@matanmaster Предыдущий комментатор это отметил) Но спасибо за замечание)
Нечего делать, вставлю 5 копеек по каждому вопросу:
1. Нормальный вопрос. Главные отличия:
- чтобы задать значение указателю, нужно использовать адрес (оператор &)), а ссылке не нужно.
- Указатель может быть переменной (указывать на разные адреса) а ссылка не может.
- Чтобы получить данные, на которые указывает указатель, его нужно разыменовать (оператор *). Ссылку не нужно.
- В коде везде, где применяется ссылка, в конечном бинарном файле будет указатель. Ссылка - это синтаксический сахар.
- Указатель может ни на что не указывать (нулевой адрес, NULL, nullptr, 0). Ссылка же должна всегда.
"Кандидат" лил очень много воды по этой теме. Лучше помолчать, подумать, составить нормальное предложение и высказать, чем мычать и лить воду. Говорить про то, что он говорил много лишнего, не буду, это очевидно. Это показывает, что человек некомпетентен в этом вопросе.
2. Дурной вопрос. Проблема в коде. Код дебилен. Никто такой бред в реальной коде писать не будет. Такие вопросы задают "гики" чисто ради самодовольствия по типу "а он так же любит копаться в ненужном коде, как и я?". Если вам задают такой вопрос, молча просмотрите код, изучите его полностю, потом не спеша говорите "в этой строке выведет вот это", идите глазами дальше, и так по каждой строке вывода (здесь их 3). Код, кстати ужасен. Никто в C++ не пишет void в параметрах функции, это в C писали.
3. Хороший вопрос на знание того, как хранятся биты в вещественных типах и как их сравнивать. Отличная статья здесь: noobtuts.com/cpp/compare-float-values. А код тоже такой себе. Во-первых cmath находиться в iostream, его повторно подключать не нужно. Во-вторых "кандитат" лил ооочень много воды. Это делается для того, чтобы отвлечь интервьюера от вопроса. Психологический ход, но я заметил и слышать было сложно. Также "кандидат" спешил, говоря вещи, которые были ошибочны. Не спешите с ответом, молча подумайте несколько секунд, это не делает вас тупым. И вообще, что это за "dx / 2" если сам интервьюер говорит, что нужно использовать епсилон. Это значение есть в стандартной библиотеке, вот ссылка. Пользуйтесь: en.cppreference.com/w/cpp/types/numeric_limits/epsilon
4. Класика. Нужно знать. 3 принципа Объектно-Ориентированого Программирования (или 3 краеугольных камня ООП, как сказала интервьюер, мне не нравится это название), это инкапсуляция, наследование и полиморфизм. Нажаль некоторые добавляют сюда еще и абстракцию. Поэтому уточняйте, сколько нужно рассказать их. Я считаю дебилизмом сюда добавлять абстракцию, но опишу свои определения этих четырех понятий:
Инкапсуляция - принцип ООП, который позволяет объединить данные и методы их обработки в единую сущность, которая в С++ зветься структурой или класом, и защитить их от внешнего использования благодаря модификаторам доступа (В С++ это protected и private). Реализовывается возможностью создавать классы и структуры.
Наследование - принцип ООП, который позволяет создавать новые классы на основе уже существующих без повторного написания кода. Реализовывается двоеточием и именем базового класса при создании дочернего класса.
Полиморфизм - принцип ООП, который позволяет использовать разную реализацию кода при одинаковом интерфейсе. В С++ есть 3 типа полиморфизма: ad-hoc полиморфизм (другими словами перезагрузка функций), параметризованный полиморфизм (другими словами шаблоны функций) и полиморфизм подтипов, который реализовывается виртуальными методами и их вызовами через указатели/ссылки на базовые классы. Обычно именно третий тип имеют ввиду, когда говорят про полиморфизм, что не точно. Статический полиморфизм - это первые 2 типа. Динамический - это третий тип.
Абстракция - принцип ООП, который позволяет отделить схожие характеристики разных классов и объединить их в едином базовом класе. Реализовывается абстрактными класами (или наличием чисто виртуальных методом у класса).
"Кандитат" дал неточное определение инкапсуляции. Он ее называет сокрытием данных и дает определение сокрытию данных. Хотя сокрытие данных - это часть инкапсуляции. Плюс много воды. Давайте четкое краткое определение и все. Все другое интервьюер задаст вам сам. Ну и другие принципы были описаны лишь примерами, без определения. Ну ладно, не всем интервьюерам может зайти, но пусть.
5. Вопрос для внимательных. Суть заключается в том, чтобы проверить, знает ли человек порядок вызова конструкторов и деструкторов при наследовании. Сложность в примет добавляют поля классов B и C. Сложность заключается в том, что нужно знать, что вызовется первым - конструктор базового класса, или конструктор поля. Правильный ответ - конструктор базового класса. "Кандидат" ответил не правильно.
Вторая часть в комментариях ниже...
6. Вопрос на знание того, что такое полиморфизм подтипов (смотрите описание в вопросе №4) и что такое сокрытие реализации. Сокрытие реализации заключается в том, что дочерний клас имеет метод с таким же именем, но не переопределяет базовый метод (в базового метода отсутствует ключове слово virtual). "Кандидат" ответил правильно на вопрос. И да, достаточно написать virtual лишь в методе базового класса, все дочерние автоматически при переопределении этого метода будут также виртуальными. Но я люблю дописывать это слово, чтобы явно подчеркнуть. И не забывайте при переопределении использовать слово override.
7. Хороший и важный вопрос. Виртуальный деструктор нужен для того, чтобы при использовании полиморфизма подтипом у вас правильно вызывались деструкторы. Представьте класс A и класс B, который наследуется от него. Если создать что-то наподобие: A* ptr = new B(); и потом delete ptr; то деструкторкласса B вызываться не будет. А если класс А будет иметь виртуальный деструктор, то будет.
8. Вопрос, который не касается C++, а относится к знаниям дискретной математики. Ответ на эту задачу с объяснением здесь: znanija.com/task/417681. Задача решается знанием формулы а не логикой, из-за чего если вы не знаете, как работать с множествами, то ответ не найдете. Либо будете долго считать, что интервьюер не позволит. Я не знал, как эту задачу решить. Нет ничего плохого в том, что какой то раздел математики вам не знаком. Это важно лишь тогда, когда вы йдете на узкую специальность, например игровую разработку, в которой часто используются вектора и линейная алгебра (которую могут спросить). Совет по ответам на такие вопросы: подумайте молча, постарайтесь найти ответ, после чего определить доказательство вашего значения. Если не нашли, говорите, что пробовали считать в голове, говорите значение, которое получилось, но говорите, что не уверены в нем. Я бы такие вопросы на собеседованиях не задавал, я бы спросил только, знает ли человек определенные области в математики и задавал бы теоретические вопросы.
9. Частый и важный вопрос. Компилятор автоматически генерирует:
- Конструктор по умолчанию (без параметров)
- Конструктор копии
- Конструктор переноса (с С++11)
- Деструткор
- Перезагруженный оператор присваивания копией
- Перезагруженный оператор присваивания переносом (С++11)
Причем здесь есть много дебильных тонкостей, например если создать свой обычный конструктор с параметрами, то конструктор по умолчанию пропадет, зато останутся другие. А если создать конструктор копии, то пропадет и конструктор переноса. Ну и всякое такое.
10. Тоже нужно знать. Кстати, не во всех компиляторах может вызываться сразу конструктор копии в этом выражении (MyClass object2 = object1). Дело в том, что здесь конструктор копии вызывается неявно. Явный вызов выглядит вот так (MyClass object2(object1) или MyClass object2{object1}). Из-за чего некоторые старые компиляторы могут сначала создать временный объект и только потом вызвать конструктор копии. Поэтому вызывайте конструкторы копии явно.
11. Знать указатели на функции - вопрос спорный и уже староват немного. Сейчас есть лямбда-функции и функторы (ну и std::function). С ними проще, ну ладно. Далеко не все знают, что такое указатели на функции.
12. Размер масива можно узнать двумя способами:
Старый способ: size = sizeof(arr) / sizeof(arr[0])
Новый способ: std::size(arr) (Функция std::size появилась в C++17)
13. Спорный вопрос. Лучше просто спросить, что кандидат знает по С++17, какие новшества может показать и все. И вообще, задача была "как сделать так, чтобы символ нельзя было передавать". Ее решить можно способом, который вместе с С++ придуман. Вот: void f(int& a). Ссылка на int не может указывать на char.
14. Без комментариев. А точнее комментарий идентичный до вопроса №2.
15. Знание метапрограммирования для новичка? Серйозно? Жесть, вы жеские.
16. Не Юник ПэТэЭр и Шаред ПэТэЭр, а Юник ПиТиАр и Шерд ПиТиАр. А если серйозно, то знание умных указателей важно. unique_ptr, shared_ptr и weak_ptr нужно знать.
Итог: не соглашусь с Дарией, человек далеко не все знает. Если бы я задавал ему эти вопросы, то я бы не брал его на роботу. Вы ему сильно помогали. Но дело в том, что я бы такие вопросы не задавал (ну хотя-бы половину). "Кандидат" действительно знает многие вещи, но не те, которые нужны были для ответа на вопросы.
Совет Дарье, как интервьюеру: в принципе все было хорошо, только пункт №16 задел (придирчив к английскому). Ну и если сами составляли вопросы, то не нужно задавать вопросы "по веселью". Нужно задавать вопросы "по роботе". Я понимаю, что это пробное и демонстрационное интервью, поэтому все окей, нет придирок.
Совет "Кандидату": меньше воды. В разы меньше воды. Больше думай, меньше говори. И купи нормальный микрофон.
А вообще буду рад также пройти демонстрационное собеседование. Если интересно, пишите сюда, запишем видео, попробую свои силы.
P.S. Ну и да, я преподавал C++ 2 года, у меня на канале много видео на украинском языке по C++, обзорам книг по программированию, прохождение собеседований, практика С++ и немножко C#. Кто знает украинский, заходите, может зайдет.
спасибо, интересно было прочитать)
Учу с++ прошел основные термины по типу полиморфизма наследования абстракции и тд, но хотел бы углубить свои познания.Что вы бы могли порекомендовать к прочтению либо к прохождению?
miro.com/app/board/o9J_lFH_iBs=/
github.com/salmer/CppDeveloperRoadmap
Там можно переключиться на русский. github.com/salmer/CppDeveloperRoadmap/blob/main/Russian/README.md
Ссылка это алиас/никнейм переменной
Если у нас есть необходимость переопределения переменнной,то следует использовать указатель,так как переопределять ссылку нельзя
Ссылка не может ссылаться на null
Также существует арифметика указателей ,но нет арифметики ссылок
Наверное так бы ответил
53:49 : можно ли узнать, каково решение данной задачи при помощи специализации? Был бы очень Вам благодарен :)
Крутой собес, продолжайте в том же духе!
Спасибо:) :
#include
template
struct F{
enum { value = n * F::value };
};
template
struct F{
enum { value = 1 };
};
int main() {
std::cout
В С++ есть шаблонные переменные и их специализация. Поэтому можно просто создать переменную от n. godbolt.org/z/83z8s1
На это дристню с enum даже не смотри. Это древний хак для получения компилтайм-значения. Сейчас они есть встроенные. Я добавил в пример constexpr-поля.
@@rustonelove За примеры спасибо (на type traits я впервые увидел реализацию), но всё же как-то грубовато. Не вижу ничего плохого в примере с enum как учебным и классическим решением старого С++ .
@@СергейНикитин-т9ж Нет - enum, а особенно как учебный - это позорище. Это лишь говорил о том, что пациент ничего не знает о C++. А тот, кого учат таким образом - обречён.
Боже храни вас )) Умная девушка программист ,приятной внешности ,а то надоели эти фронтендеры из инстаграмма ,со своим инфо цыганством (( Тут наткнулся на девочку 15 лет которая учит программировать на питоне ( Все они лезут в IT
Я фронтердер, но учу и буду учить хардовые темы типо функциональное программирование, алгоритмы, чтобы можно было на фоне этих дурачков быть алмазом. Среди говнища.
Такое мышление тебя будет ограничивать. Не надо к людям так относиться.
У чувака на заднем фоне блок питания не хилый, я бы через 15 сек сказал бы что он взят на работу.
Я на 2-м курсе программирования и мне чё-то стремно стало после вопросов😣. Ааа везде такое собеседование на профессию программиста?:
Нет, конечно, везде собеседования разные. Где-то джунов спрашивают только алгоритмы, а язык не затрагивают. Не переживайте :).
Лол, я несколько часов назад сел изучать питон и уже пытаюсь реализовать свой алгоритм нейросети по подражанию самообучения реального трейдера. Возможно, Вы будете намного сильнее меня в программировании. Я бы не боялся любого собеседования, т.к. больше чем Вы будете знать - Вы не сможете ответить, а потому зачем волноваться?
У меня для тебя очень плохие новости дружище , почти все было программа первого курса (по крайней мере на С)
Да везде и никак по-другому. Свободная касса легче орать. Вперёд.
@@maksimermmokhin4641 да это первое занятие, всё что они здесь обсуждали. 17 летних лопушков этому учат
Даша, очень интересно. Тебя тоже так собеседовали? Или иначе было? Я не про формат, а про вопросы.
Спасибо, Mike). Да, вопросы, похожие были, но стандарт был старый. (Я устраивалась на работу ещё на 5 курсе, студенткой, не могу сказать, это был полноценный джун, а потом, после получения высшего образования и двух лет программирования только на С++, были именно такие собеседования).
Интересное видео, у меня было немного сложнее интервью на позицию trainee
О! Нико, а что там спрашивали?
@@DariaEmacs похожие вопросы + vtable и задачи давали. В целом формат похожий был, может тогда мне казалось что сложнее)
Надо говорить "Ну возьмите меня"😃
лучше пишу на c++ за еду.
@@Archik4 В начале пути всегда за еду.
@@misteranderson6058 да сейчас и без еды джуны никому не нужны. Если ты даже не просишь з/п, это все равно некоторые расходы + будешь отвлекать опытных коллег. Т.е. ты еще компании должен и доплачивать, чтобы ее заинтересовать.
@@phat80 Ну толковые джуны все таки нужны. Но это Джун, который уже умеет писать код и хорошо разбирается в предметной теме, вот прям очень хорошо. Таких Джунов процентов 5 в лучшем случае.
@@misteranderson6058 нет, джунов-то может и все 100%, только проходимцев всяких еще 1000% )
В задании с конструкторами, диструкторы не будут вызываться в обратном порядке, так как не определены как виртуальные)
Очень интересно про объявление виртуального конструктора, пожалуйста, приведите пример)).
А я не учусь на прогера. Я вообще тестер, но интересно слушать. Что-то даже сам знаю. Хотя игры бы делал чисто душу отвести по творческой части. А проганье так, полезное дополнение :)
А че там делать ??
Спасибо)
Здравствуйте, ребята! Прошу вашего совета: хочу стать С++ разработчиком. Читаю и занимаюсь по книге Стивена Прата «язык программирования С++. Лекции и упражнения.» Это первое знакомство с айти. Что делать следующим этапом? Как с этого этапа перейти к этапу изучения создания чего-то, приложения мобильного, например?
Какие слои знаний накладывать дальше и в каком порядке?
Здравствуйте! А Вы хотите мобильное создавать для андроид или кроссплатформенное?
@@DariaEmacs пока это не важно для меня
Зато важно для ответа). На С++ можно что-то системное написать, десктопное, кроссплатформенное.