Такой вопрос попадается на собеседованиях. Показывает эрудицию кандидата в теме ООП. Плюс можно понаблюдать как человек думает, какие ассоциации строит, какие параллели проводит при ответе на данный вопрос.
Было бы некорректно назвать как-то иначе, я бы вводил зрителей/кандидатов в заблуждение. Так она называется в стандартной библиотеке. en.cppreference.com/w/cpp/types/is_same
22:40 интервьюер говорит что перемещения как бы не существует и это тоже копирование, что имеется ввиду, ведь мы ничего не копируем, мы по сути заменяем владельца, указатель, но вся информация остаётся все так же на том же месте... Скажите пожалуйста что произходит, а то я в замешательстве.
Не могу сказать, что произойдет на разных операционных системах с разными компиляторами, возможно, существуют какие-то процессорные оптимизации, которые сделают перемещение быстрее. Но с точки зрения синтаксиса языка операция перемещения - это скорее особое копирование, более экономное. Объясню на примере. Возьмем тип данных std::string. Очень грубо говоря, это обертка над C-строкой типа char*. Если мы сделаем присваивание: std::string a{"qwerty"}; std::string b = a; то для объекта <b> будет выделена память вызовом функции malloc, затем данные будут побайтово скопированы из первой строки во вторую. Или же мы можем сделать следующим образом: std::string a{"qwerty"}; std::string b = std::move(a); std::move создаст из переменной <a> rvalue-ссылку на <a>, которая сообщит компилятору, что объект a может быть перемещен. И далее, без выделения памяти и побайтового копирования, мы просто возьмем указатель из <a> и присвоим его указателю внутри строки <b>. Указатель же в первой строке мы занулим. В результате строка <b> будет использовать те же самые данные, то есть объект <a> как бы переместится в <b>.
47:24 "Считается так, что хард-скилы подтянуть можно, а софт-скилы подтянуть нельзя. На самом деле и то, и то подтянуть можно". Вот красавец. Какая же уважуха тебе, камрад, за эти слова. Я уже разуверился в гуманизме в среде программистов. И дальше. "Но никто не захочет подтягивать вам софт-скилы". Просто база. Ты со своими внутренними сложностями работодателю не нужен. От тебя нужен продукт. К сожалению, не могу найти как вас зовут. Но смотрю ваши ролики регулярно) Иногда даже пытаюсь критиковать в силу своих скудных способностей))) Но, этот меня сильно тронул чисто с человеческой стороны. Мое почтение, дорогой товарищ.
Привет! Мне 13 лет и я изучаю c++, посоветуй, что мне на нем писать? И у меня вопрос - зачем передовать агрументы в main? Тоесть например: int argc, char *argv[]. Что от этого меняется?
Привет! Аргументы в мэйне это параметры запуска приложения, не могу сказать насколько это прям распространённая тема, но с помощью этого ты можешь запускать приложение в различных "режимах", которые сам и пропишешь. Например, параметр для включения или наоборот отключения ведения логов или любого другого функционала. В общем, можешь сейчас особо не заморачиваться насчёт этого и просто не указывать их. По поводу того, что писать: гугли Programming challenge v4.0, удобно будет в виде картинки сохранить. Там свыше ста идей для различных проектов от rpn калькулятора и tcp/ip сервера до графических движков. Всё это отсортировано по уровням сложности. Дальше выбирай что нравится и вперёд изучать статьи, гайды и документацию. Удачи!)
нынче блогеры в прогеры решили податься.....мда. Потом удивляемся почему программы такие тормознутые получаются... middle переменную называется a и b...завтра сеньором будет, начнет называть их _a и _b....
Не вижу никакой проблемы в том, чтобы назвать переменную a и b, если это используется к месту. Пример сигнатура std::swap, en.cppreference.com/w/cpp/algorithm/swap То, что Вы делает выводы о производительности современного ПО, основываясь только на названиях переменных или самом факте ведения блога, создает впечатление, что у Вас как минимум пробелы в софт скилах.
можно пожалуйста обьяснить как это работает for(auto item: a){ tmp_map[item]++; } мы же тут по факту в ключи передаем значения вектора а, в чем смысл? у нас же ключи могут только уникальные значения хранить, (тайм код 13:53)
Без этой "хрени" не обойдется ни одно собеседование в крупную с большим количеством разных проектов компанию. Это нечто вроде общего теста, чтобы понимать потенциальные возможности кандидата без привязки к конкретным технологиям. То, что Вам это не нравится, не причина пренебрегать таким важным аспектом подготовки.
увы, с тем же успехом можно загадки загадывать) достаточно примитивный способ оценки кандидатов, через узкие задачки с олимпиад по информатике. и это все я пишу с тем моментом что алгоритмические моменты люблю в программировании)) оценить нужно опыт, обучаемость, скиллы хард и софт, проактивность и сообразительность. литкод это дрочка на часть хардов и больше ничего. это порок фангов что подобным способом набирают себе сотрудников. и тем более о каких скилах и качестве может идти речь если разработчик может юзать разные языки в силу различных обстоятельств. нельзя быть проскилловым везде. а вот везде быть средним вполне реально, собсно и качество продуктов будет таким же.
Своей категоричностью вы вводите людей в заблуждение. Исключения - это правильный механизм обработки ошибок с точки зрения стандарта и синтаксиса язык, да, на бумаге он выглядит отлично. Но не стоит забывать, что C++ язык слишком многопрофильный. Самый простой пример: исключения не будут являться так называемым "real-time safe" - кодом, потому что время обработки исключения не будет константой. И в целом огромное количество проектов, на которых исключения не то что не приветствуются, а запрещены вообще.
int find_range_n(const std::vector<int>& vec, int number) { char cnum = '0' + number; int maxn = 0; for (auto el : vec) { string strn = to_string(el); int len = ranges::count(strn, cnum); if (len == strn.size() && maxn < len) { maxn = len; } } return maxn; } Что в видео, что в комментах, реализация этой функции вообще не имеет отношения к поставленной задаче. Вот правильное решение, хотя и не оптимальное.
11:30 - почему у методов Read нет возвращаемого значения, куда они считывают? Про виртуальные методы собеседующий сказал - override нужен если мы уберем virtual. Зачем? Если не убирать virtual override тоже полезен. В комментариях вы написали что-то про перекрытие, но в видео про это ни слова, и у меня есть сомнения, что вместо переопределения будет перекрытие. 32:32 - название метода некорректное, для проверки, что это одно и то же дерево достаточно сравнить только два указателя, если это корни, кск сказао ведущий. Хотя непонятно, что жто корни, так как имена переменных ни о яем не говорят. Поля x у TreeNode нет, есть поле val. Слабенько.
Этот чувак лучше отвечает на более углубленные вопросы, чем "мидлы" в последних видосах) Особенно редкое понимание о том, что виртуальность на момент вызова конструктора еще не готова
Override это не только синтаксический сахар, так как он на уровне компилятора выдаст дополнительную ошибку в случаи не соответствия. Так же забыли сказать про такую деталь про полиморфизм в случаи с интерфейсом и удобную работу с одним типом данных интерфейса, мелочь вроде, но дает более объективный ответ как по мне.
я вроде установил сфмл, опен жл, захотелось установить pdcurses не понимаю как это сделать, нигде нормального гайда нет, пытаюсь понять че написано в READ.ME ниче не понимаю, пытался в PowerShell команду которую просят прописать, ниче не работает, я не понимаю почему в си++ нельзя сделать как питоне в пару кликов установки этих библиотек, а не танец с бубнами
Что появилось в 11 стандарте? Правильный ответ: да кого это ебет? Тут что экзамен по истории с++? Какой смысл помнить все стандарты на память? Аж трясет
Мне задавали подобные вопросы. Странная какая-то реакция. Причем тут помнить все стандарты на память? Полезно знать ключевые моменты стандартов, чтобы, например, на обсуждении с условным бизнесом вы могли сходу предложить пару идей, обосновывающих ваше желание перейти на более высокий стандарт и инвестировать время в технический долг.
Я бы решил задачу по другому. Видимо менее эффективно. Но без стека. Просто бы представил двумерный массив в виде одномерного. Далее std::set<int> busy_map; И сразу бы проверял за раз 1 остров. Идем по X. Встретили 1 - проверяем все в округе (вправо и вниз, внизу - соседние ячейки пока не закончатся). В set заносится индекс любой ячейки, которая равна 1 для этого острова. Как только закончили с островом - плюсуем каунтер на 1. Когда перейду на следующую строку я просто буду пропускать ячейки, индекс которых уже "занят". В итоге алгоритм будет сводиться к поиску контуров островов, без стеков. А busy_map поможет в этом. Интересно, что бы там мне сказали на такой алгоритм. Стали бы возникать или нет.
Да, врядли в продакшене тебе придется решать именно такую задачу, но раз уж ты не раз упомянул, что работаешь (или работал на тот момент) в геймдеве, то должен понимать что подобные подходы и алгоритмы, где надо проверить соседние элементы, а точнее пиксели, применяются в обработке изображений. Например наложить построцессинг какой-то, размыть фон, определить края объекта, сделать мягкие тени и многое многое другое.
ну какой же это сеньор? не многопоточность добавили, а memory model - что куда как более широкий сабж, атомики теже. про hash tables - вопрос ни о чем. Load factor ни тот ни другой не знает. про инвалидацию ссылок и итераторов похоже ни тот ни другой не слышал. про Move semantics слышал-слышал молодец. о чем вообще вопрос? сборщики мусора с generations похоже тоже мимо прошли. очень поверхностное собеседование. извините.
Короче ребят, логика такая. Если вы реально мечтаете делать игры, то учитесь на геймдизайнеров или графических дизайнеров (3d художников). Это те люди кто реально влияет на то, какой будет игра. Учится на них быстрее и проще, чем на прогеров. Если же вы хотите быть программистом и писать код, то лучше выбрать промышленную разработку, там и зарплаты выше и вакансий больше.
На сеньора ожидал вопросов по паттернам (какие знает, когда уместно применять, плюсы/минусы), по стандарту побольше, важные аспекты производительности и изменения в стандарте (move-семантика, (N)RVO, ...), умные указатели (какие знает, принципы реализации), по шаблонам пробежаться. Понять насколько широк кругозор и глубина погружения в проблематику типовых проблем при разработке.
@@alexandrgonzales6503 Данил на самом деле дает вполне позитивную и познатавтельную волну. Вот подчеркну, что позитивную. Как правило собсес - это стрессовая ситуация, с нами по разному обходятся, могут и совсем никакой обратки давать (плавали, знаем. "Вы не тянете на эту позицию" - типа норм ответ). Данила, наоборот, все точно обьясняет - подучи это или то. Кроме того. Осмелюсь сказать, как человек между миддлом и сениором - Данила если не знает что-то, то так и говорит, т.е. не пытается представить из себя того, кем он не является. Если не знает - то не знает. Если недавно узнал - то так и говорит. Если резюмировать - мне нравится _человечность подхода , без потери _точности. Так держать.