0:28 - Фарит рассказывает о себе 1:31 - задача: развернуть односвязный список 16:48 - задача: найти уникальный элемент 24:47 - опыт работы в Яндексе 27:01 - статические и динамические библиотеки 30:44 - constexpr 35:22 - метапрограммирование 38:52 - static_assert 41:10 - бесконечная рекурсия 42:38 - работа с потоками 51:12 - фидбек
Большое спасибо за Ваши труды, смотрю Ваш канал уже более года, от старта изучения языка до трудоустройства. Видео очень полезные, продолжаю узнавать много нового и интересного для себя. Желаю успеха Вам и Вашему каналу!
1) Желательно всё же компилировать написанное 2) Терминейтить потоки функциями ос плохая идея - могут зависнуть ресурсы. Тут лучше делать дамп процесса и отправлять разработчикам на анализ, а сам процесс просто перезапустить.
Классическое решение reverseList и к нему функция печати List, всё это есть в первой главе SICP. На Lisp или Scala это пишется гораздо проще. : ListNode* reverselist(ListNode* list){ auto aux=[](ListNode* curNode, ListNode* prevNode, auto& aux_ref) { if (curNode->next==nullptr) { curNode->next=prevNode; return curNode; } ListNode* nextNode=curNode->next; curNode->next=prevNode; return aux_ref(nextNode, curNode, aux_ref); }; return aux(list,nullptr,aux); } void printList(ListNode* list){ if (list->next==nullptr) { std::cout
Божественный Яндекс. Годами не могут пофиксить хваленый Ямаркет и музыку, в маркете - RecycleView падает в exeption, Fragments не сохраняют данные при переключении в Activity. В музыке песни не переключаются. Видимо Listener отвалился. Или играет одна и та же песня. какую бы не включил, видимо Map поплыла с ключами. И все бы ничего, но на собеседовании ты должен быть БОГОМ, решать УМНЫЕ ЛОГИЧСКИЕ ЗАДАЧКИ и вообще знать наизусть как и что устроено внутри STD. У меня всё.
Проблема в том что многие не понимают по каким принципам работают такие крупные компании независимо от названия и страны (также работает и Apple, Google, Amazon и т.д.), и ломятся туда толпами, думая что это же яндекс там мне заплатят много денег, прокачаюсь в знаниях, опыте и т.д., нет это не так работает во главу угла там ставятся деньги, то есть нужен работник пускай криво косо, но будет справляться со своими обязанностями, но платить ему придется минимум на 50% ниже чем по рынку, на качество продукта такой крупной компании насрать, они уже монополист и альтернатив или нет, или конкуренты могут отнять несущественную долю рынку, отсюда в таких крупных компаниях работают в основном люди в лучшем случае середнячки, а то и новички, как только новичок (или глупый середнячок) под обещания повышения поработает в такой компании 1-3 года, обычно такой срок проходит когда до людей доходит что никто не собирается повышать, они сваливают оттуда через этот срок или их просят на выход, если начнут возникать почему не повышают, не платят больше и т.д., потом набираются следующие дурачки клюющие на бренд, и так продолжается до бесконечности, потому что народа немерянно хотящего работать в таких брендовых крупных компаниях, отсюда и кривое качество продуктов.
@@maksimgorohov504 "но каким образом ваш рассказ вяжется с жестким отбором людей в эти компании" - суть в том что отбираются лучшие прошедшие жесткий отбор, но с оплатой ниже рынка и обещаниями что в будущем эту оплату повысят (естественно никто и не собирается повышать), разводка на дурачка который на это поведется, то есть условно если бы так человек пошел бы в не брендовую компанию ему заплатили больше, потому что не стоит очередь из желающих в такую, а в брендовую стоит очередь, ведь большинство, как рассуждает, что если крупная компания то зп у них будет выше рынка, только вот в чем загвоздка выше рынка в таких компаниях только у приблатненных, а у того кого наймут с улицы будет зп ниже рынка, и тянуть он будет к тому же работу и за себя и за приблатненных, причем этот человек вполне может заменить отдел этих приблатненных в одиночку (знаю такой пример), вот так это работает, суть в том что в крупных брендовых компаниях знаний опыта зачастую для обычного человека требуют столько что в других не брендовых, более мелких, он раза в 2 больше будет получать за те же самые знания и опыт, рассуждать правильно надо вставая на место руководства таких компаний, и рассуждения там просты донельзя хочу чтобы работник был гений и за копейки, в крупных это осуществимо, потому что есть очередь из желающих дурачков (до людей выше написал это доходит через 1-3 года и разводка в основном на джунов и слабеньких мидлов), в средне-мелких такого нет, потому что такой очередь там нет, надеюсь теперь понятно, если нет, то уже не знаю как объяснять. P.S. Причем для заманухи естественно в вакансии и пишут зп якобы по рынку или выше, а уже на собесе естественно озвучивается другая сумма существенно ниже рынка и тут либо человек соглашается (ведется) или на выход.
@@nullptr_or_null8301 "в том что отбираются лучшие прошедшие жесткий отбор" тогда почему у них так плохо написаны приложения, о чем говорил Андрей выше
@@maksimgorohov504 Аааа, джун или слабый мидл, не может априори писать код, выстраивать архитектуру и т.д. как это делают крепкие мидлы и уж тем более сеньоры, потому что последние (мидлы и сеньоры) знают различные варианты решения одной и той же задачи, а также плюсы и минусы этих решений, и знают где и как применять эти решения, начинающий джун (даже если он гений), слабый мидл этого всего не знают им не хватает знаний и опыта, даже если они мега талантливые пройдет 1-3 года как раз чтобы из них вышел хотя бы мидл и то если они будут развиваться на разных типах и сложностях задач (в таких крупных компаниях обычно такого не дают особо) отсюда так как выше писал смена таких работников обычно происходит раз в 1-3 года и отсюда получаются плохо написанные приложения (потому как новый приходящий городит свой велосипед на другие велосипеды, которые писали до него такие же как он новички), а крупной компании на это пох, потому что они монополист и они могут класть большой и толстый на рядовых пользователей, потому как они уже в основном уже аффилированы тесно с государством и основные деньги пилят с госзаказов и госраспилов (суммы там вам и не снились) плять объяснять это долго, я бы дал ссылку на видео где человек в теме все это разжевывает (я и без него это знаю, потому как сам наблюдал это со стороны работая инженером в одной можно сказать госконторе).
Как все переусложнено в первой задаче. Надо хранить cur и prev, prev сначала равен nullptr, тогда не нужна будет проверка на "краевые условия" да и сам цикл будет более естественный. Возвращать надо будет prev.
После года опыта, если не набираетесь на работе то рекомендую начать с Солида, а потом плавно перейти на паттерны. Это важно просто для того, чтобы расти как специалист, не только для собеседований.
Нет. Правильнее сказать, что оно может вычислиться на этапе компиляции, но не факт. Как я и приводил пример в одном случае считалось на этапе компиляции, в другом - в рантайме. Рекомендую почитать стандарт en.cppreference.com/w/cpp/language/constexpr и закрепить на практике.
Не понятно почему он их бинарные назвал конечно, если это битовые. От специфики работы зависит я вот очень много сталкивался когда работал с bunch сериализацией в UE
Тут на самом деле очень всё сложно и все требуют разное. Но основное что могу порекомендовать это естественно понимание и знания Git и работа с GitHub(или другие). Стоит изучить Cmake и Conan (или их альтернативы). С их помочью собирать программы и подключать сторонние библиотеки. Стоит после этого начать знакомство с boost. Для начала например парсинг аргументов с помощью boost. Стоит подключить библиотеки для БД и немного их потыкать, полезно немного знать SQL. Если интересно то потыкать QT. Работа с Linux и хоть пару уроков связанных с GDB.
@@ambushedraccoon6408статическая библиотека это не исполняемый файл, и динамическая тоже. Разница в какой момент символы будут разрешены: при компоновке либо при исполнении
Боже, решение с ксором в задаче о нахождение уникального элемента, просто шикарно. Я кстати когда думал сам над решением, пришел к использованию битовых операций, но только с целью хранения информации о том, что элемент уже есть. (1 есть, 0 нет). Но вот до использования ксора не додумался.
Насчёт RevertList что то сомнения закрались.. Хоть я инженер, не программист не судите строго.. А на стеке хватит памяти если список очень большой.. Если 10 миллионов? Я думал надо что то типа выделяем памяти с запасом, проходимся до конца, записывая всë в массив в этой памяти.. По мере надобности выделяем ещё.. А дойдя до конца, проходимся обратно.. Ну и память удаляем
10:12 интервьюер, ты ойкаешь, вздыхаешь, сбиваешь своими вставками с мысли, задал вопрос подожди пока решит задачу и потом покажи какой ты nevyebeniy. Нахера ты лезешь, отбил всё желание смотреть
ну такое, 80% вопросов не релевантны на позицию middle, и в реальных проектах о них вспомнят в последний момент, особенно по constexpr и проверка статического результата. Не реалистичная бредятина
А это точно разработчик из Яндыкса? Есть большие на эту тему сомнения. Обычно яндекс проводит 3-4 технических собеса на алгоритмы и знание языка. Мне кажется на собесе был самозванец :) Теперь к автору видоса. Автор!, а похоже ты и сам не понимаешь (судя по твоему ответу) разницы между динамическими и статическими библиотеками - подучи-ка, дружок, мат-часть а уже потом вопросы задавай.
@@faritavtakhov5115а ты на какой позиции? Junior? Middle? Просто если junior, то все наезды в комментариях абсолютно нерелевантны. В любом случае ты большой молодец)
Совершенно бесполезная первая часть собеса с решениями задач. Так как проверяется тупо навык задрачивания решения задач на ЛитКод и тому подобных, которые в реальной разработке редко когда понадобятся. Я бы уже после это части распрощался с таким работодателем
ну вообще нет. будь там задача уровня hard с литкода, то да. А это medium с натяжкой. Тут проверяется возможность кандидата мыслить логически. И во многих компаниях(если не во всех. Я прошел больше 50 собесов и только 1-2 раза встречал, когда таких вопросов не было) такое применяют постоянно
Без этой "хрени" не обойдется ни одно собеседование в крупную с большим количеством разных проектов компанию. Это нечто вроде общего теста, чтобы понимать потенциальные возможности кандидата без привязки к конкретным технологиям. То, что Вам это не нравится, не причина пренебрегать таким важным аспектом подготовки.
увы, с тем же успехом можно загадки загадывать) достаточно примитивный способ оценки кандидатов, через узкие задачки с олимпиад по информатике. и это все я пишу с тем моментом что алгоритмические моменты люблю в программировании)) оценить нужно опыт, обучаемость, скиллы хард и софт, проактивность и сообразительность. литкод это дрочка на часть хардов и больше ничего. это порок фангов что подобным способом набирают себе сотрудников. и тем более о каких скилах и качестве может идти речь если разработчик может юзать разные языки в силу различных обстоятельств. нельзя быть проскилловым везде. а вот везде быть средним вполне реально, собсно и качество продуктов будет таким же.
0:28 - Фарит рассказывает о себе
1:31 - задача: развернуть односвязный список
16:48 - задача: найти уникальный элемент
24:47 - опыт работы в Яндексе
27:01 - статические и динамические библиотеки
30:44 - constexpr
35:22 - метапрограммирование
38:52 - static_assert
41:10 - бесконечная рекурсия
42:38 - работа с потоками
51:12 - фидбек
Спасибо большое
Надо было ему дать задачу из контеста, где условие на лист а4, как Яндекс даёт на стажировку.
Большое спасибо за Ваши труды, смотрю Ваш канал уже более года, от старта изучения языка до трудоустройства. Видео очень полезные, продолжаю узнавать много нового и интересного для себя. Желаю успеха Вам и Вашему каналу!
Спасибо)
И куда ты устроился за год изучения языка ?
@@vasiliypupkin6311на базар
1) Желательно всё же компилировать написанное 2) Терминейтить потоки функциями ос плохая идея - могут зависнуть ресурсы. Тут лучше делать дамп процесса и отправлять разработчикам на анализ, а сам процесс просто перезапустить.
решение задачи про парные элементы, это очень красиво - прям кайфанул❤
жаль что парных элементов должно быть четное число, а иначе не прокатит
Классическое решение reverseList и к нему функция печати List, всё это есть в первой главе SICP. На Lisp или Scala это пишется гораздо проще. :
ListNode* reverselist(ListNode* list){
auto aux=[](ListNode* curNode, ListNode* prevNode, auto& aux_ref)
{
if (curNode->next==nullptr) {
curNode->next=prevNode;
return curNode;
}
ListNode* nextNode=curNode->next;
curNode->next=prevNode;
return aux_ref(nextNode, curNode, aux_ref);
};
return aux(list,nullptr,aux);
}
void printList(ListNode* list){
if (list->next==nullptr) {
std::cout
Божественный Яндекс. Годами не могут пофиксить хваленый Ямаркет и музыку, в маркете - RecycleView падает в exeption, Fragments не сохраняют данные при переключении в Activity. В музыке песни не переключаются. Видимо Listener отвалился. Или играет одна и та же песня. какую бы не включил, видимо Map поплыла с ключами. И все бы ничего, но на собеседовании ты должен быть БОГОМ, решать УМНЫЕ ЛОГИЧСКИЕ ЗАДАЧКИ и вообще знать наизусть как и что устроено внутри STD. У меня всё.
Проблема в том что многие не понимают по каким принципам работают такие крупные компании независимо от названия и страны (также работает и Apple, Google, Amazon и т.д.), и ломятся туда толпами, думая что это же яндекс там мне заплатят много денег, прокачаюсь в знаниях, опыте и т.д., нет это не так работает во главу угла там ставятся деньги, то есть нужен работник пускай криво косо, но будет справляться со своими обязанностями, но платить ему придется минимум на 50% ниже чем по рынку, на качество продукта такой крупной компании насрать, они уже монополист и альтернатив или нет, или конкуренты могут отнять несущественную долю рынку, отсюда в таких крупных компаниях работают в основном люди в лучшем случае середнячки, а то и новички, как только новичок (или глупый середнячок) под обещания повышения поработает в такой компании 1-3 года, обычно такой срок проходит когда до людей доходит что никто не собирается повышать, они сваливают оттуда через этот срок или их просят на выход, если начнут возникать почему не повышают, не платят больше и т.д., потом набираются следующие дурачки клюющие на бренд, и так продолжается до бесконечности, потому что народа немерянно хотящего работать в таких брендовых крупных компаниях, отсюда и кривое качество продуктов.
@@nullptr_or_null8301 но каким образом ваш рассказ вяжется с жестким отбором людей в эти компании
@@maksimgorohov504 "но каким образом ваш рассказ вяжется с жестким отбором людей в эти компании" - суть в том что отбираются лучшие прошедшие жесткий отбор, но с оплатой ниже рынка и обещаниями что в будущем эту оплату повысят (естественно никто и не собирается повышать), разводка на дурачка который на это поведется, то есть условно если бы так человек пошел бы в не брендовую компанию ему заплатили больше, потому что не стоит очередь из желающих в такую, а в брендовую стоит очередь, ведь большинство, как рассуждает, что если крупная компания то зп у них будет выше рынка, только вот в чем загвоздка выше рынка в таких компаниях только у приблатненных, а у того кого наймут с улицы будет зп ниже рынка, и тянуть он будет к тому же работу и за себя и за приблатненных, причем этот человек вполне может заменить отдел этих приблатненных в одиночку (знаю такой пример), вот так это работает, суть в том что в крупных брендовых компаниях знаний опыта зачастую для обычного человека требуют столько что в других не брендовых, более мелких, он раза в 2 больше будет получать за те же самые знания и опыт, рассуждать правильно надо вставая на место руководства таких компаний, и рассуждения там просты донельзя хочу чтобы работник был гений и за копейки, в крупных это осуществимо, потому что есть очередь из желающих дурачков (до людей выше написал это доходит через 1-3 года и разводка в основном на джунов и слабеньких мидлов), в средне-мелких такого нет, потому что такой очередь там нет, надеюсь теперь понятно, если нет, то уже не знаю как объяснять.
P.S. Причем для заманухи естественно в вакансии и пишут зп якобы по рынку или выше, а уже на собесе естественно озвучивается другая сумма существенно ниже рынка и тут либо человек соглашается (ведется) или на выход.
@@nullptr_or_null8301 "в том что отбираются лучшие прошедшие жесткий отбор" тогда почему у них так плохо написаны приложения, о чем говорил Андрей выше
@@maksimgorohov504 Аааа, джун или слабый мидл, не может априори писать код, выстраивать архитектуру и т.д. как это делают крепкие мидлы и уж тем более сеньоры, потому что последние (мидлы и сеньоры) знают различные варианты решения одной и той же задачи, а также плюсы и минусы этих решений, и знают где и как применять эти решения, начинающий джун (даже если он гений), слабый мидл этого всего не знают им не хватает знаний и опыта, даже если они мега талантливые пройдет 1-3 года как раз чтобы из них вышел хотя бы мидл и то если они будут развиваться на разных типах и сложностях задач (в таких крупных компаниях обычно такого не дают особо) отсюда так как выше писал смена таких работников обычно происходит раз в 1-3 года и отсюда получаются плохо написанные приложения (потому как новый приходящий городит свой велосипед на другие велосипеды, которые писали до него такие же как он новички), а крупной компании на это пох, потому что они монополист и они могут класть большой и толстый на рядовых пользователей, потому как они уже в основном уже аффилированы тесно с государством и основные деньги пилят с госзаказов и госраспилов (суммы там вам и не снились) плять объяснять это долго, я бы дал ссылку на видео где человек в теме все это разжевывает (я и без него это знаю, потому как сам наблюдал это со стороны работая инженером в одной можно сказать госконторе).
constexpr функция при передаче в cout:
std::cout
C XORом очень круто, действительно все гениальное просто.
Спасибо за интервью, с каждым видео все интереснее!
Спасибо за отличный контент и вашу работу. Есть ли в планах сделать тестовый собес на уровень Senior C++?
И Вам спасибо! Да, сегодня записали. Посмотрим как видео себя покажет.
Битовые операции - вынос мозга, но решение мощное. Впечатляющий кейс
что там выносящего? Дефолтная опреация в компьютере. Почти все зануления компилятор как раз с помощью xor делает.
Во второй задаче решение очевидно, но я бы задал вопрос: найти элемент - это индекс в векторе или достаточно значения?
Как все переусложнено в первой задаче. Надо хранить cur и prev, prev сначала равен nullptr, тогда не нужна будет проверка на "краевые условия" да и сам цикл будет более естественный. Возвращать надо будет prev.
а это разве не будет занимать дополнительно память?
@@sugma1142 Нет. Будут те же самые 2 переменные, просто строчек кода будет меньше.
это реально требования к мидлу на плюсах?
Здравствуйте! Интересное интервью, благодарю! Данное собеседование на позицию middle, верно?
Да, на middle, все верно.
Видео вышло. Так что теперь ждем стрим
О чем речь? Какой стрим?
Лайк однозначно
как нашел
@@faritavtakhov5115 давно подписан, и смотрел некоторые видосы
И ещё один вопрос. На какую позицию must have паттерны проектирования?
После года опыта, если не набираетесь на работе то рекомендую начать с Солида, а потом плавно перейти на паттерны.
Это важно просто для того, чтобы расти как специалист, не только для собеседований.
полотёр
Т.е. constexpr - это не гарантия вычисления на этапе компиляции?
Нет. Правильнее сказать, что оно может вычислиться на этапе компиляции, но не факт.
Как я и приводил пример в одном случае считалось на этапе компиляции, в другом - в рантайме.
Рекомендую почитать стандарт en.cppreference.com/w/cpp/language/constexpr
и закрепить на практике.
Яндекс отбирает отличных разработчиков)
Про бинарки это задачка на закопать за почти 15 лет практики приходилось использовать раза 2
Не понятно почему он их бинарные назвал конечно, если это битовые. От специфики работы зависит я вот очень много сталкивался когда работал с bunch сериализацией в UE
@@shadowfiend8794 все правильно назвал xor это бинарный оператор он на вход принимает 2 значения а возвращает 1
@@wolfwood1010 да это понятно что правильно, но как подсказка это не очень, явно он имел ввиду именно битовые.
Да, я допустил ошибку. Но собеседуемый так или иначе все понял.
Хочу чтобы начали появляться код ревью)) на канале
Чуть подробнее, пожалуйста. Как вы думаете это должно выглядеть?
@@ambushedraccoon6408 Что-то по типу такого было бы очень полезно, такого нет по С++ на русском ютубе
ua-cam.com/video/mOSirVeP5lo/v-deo.html
привет! подскажите, что нужно знать для первой джуниорской работы с++ программистом не в геймдев? что кроме самого язык нужно?
Тут на самом деле очень всё сложно и все требуют разное. Но основное что могу порекомендовать это естественно понимание и знания Git и работа с GitHub(или другие). Стоит изучить Cmake и Conan (или их альтернативы). С их помочью собирать программы и подключать сторонние библиотеки. Стоит после этого начать знакомство с boost. Для начала например парсинг аргументов с помощью boost. Стоит подключить библиотеки для БД и немного их потыкать, полезно немного знать SQL. Если интересно то потыкать QT. Работа с Linux и хоть пару уроков связанных с GDB.
@@МаксимГуськоуже изучил по твоим наставлениям GIT и GITLAB. Дальше буду cmake смотреть параллельно на с++ документацию читаю и доучиваю Stl. Спасибо
Открой любую вакансию на HeadHunter и посмотри, что требуют разные компании. Выбери ту, которая тебе понравилась и учи то, что им нужно )
крутые обои
Решение первой задачи:
ListNode* reverse (ListNode* head) {
ListNode* prev = nullptr;
while(head->next) {
ListNode* next = head->next;
head->next = prev;
prev = head;
head = next;
}
head->next = prev;
return head;
}
Тоже зациклится на циклическом списке. У сишников с такими структурами бяда 🙂
@@IExSet Почему это беда? В условиях задачи не было упоминания цикличности. И там одной проверки всего достаточно, чтобы ее обойти. Нет никакой беды
У меня вопрос-а разработчик ничего кроме синтаксиса и типовых задач литкода знать не должен?))
Решение 1 Задачи, используя рекурсию, которая не возможна по мнению автора:
#include
struct ListNode
{
int val;
ListNode* next;
ListNode(int x): val(x){}
ListNode(int x, ListNode* next): val(x), next(next){}
};
ListNode* RevertList(ListNode* head, bool first = true){
if(head == nullptr || head->next == nullptr){
return head;
}
else{
ListNode* result = RevertList(head->next, false);
head->next->next = head;
if(first){
head->next = nullptr;
}
return result;
}
}
int main() {
ListNode* prev = nullptr;
for(int x = 0; x
Упадет при
RevertList(nullptr, true);
@@ambushedraccoon6408 Updated
32:40 - собеседующий не слышал про consteval???
с C++20 ещё не все знакомы и работали
@@sakost в 23-м году? А драфт ещё раньше был известен. Вся суть C++ разработки)
Мое разворачивание списка: ListNode* RevertList(ListNode* head)
{
if (!head || !head->next)
{
return head;
}
ListNode* tail{ head };
ListNode* prev{ head};
ListNode* current{ nullptr };
ListNode* next{ nullptr };
if (prev)
{
current = prev->next;
prev->next = nullptr;
}
if (current)
{
next = current->next;
}
do
{
tail = current;
//2 -> 1
current->next = prev;
prev = current;
current = next;
next = current ? current->next : nullptr;
}
while (current);
return tail;
}
в перуом можно было типо стека все сделать и все.
Решение на 14:13 тоже работало
Да, работает. Но читается хуже.
Is it real 24:14 , return integer in void function ???
it's just a mistake. It happens. In such case scenario we don't have a compiler to show us obvious errors.
And generally speaking, it's acceptable to make such mistakes in most interviews.
Вот что значит не уважать Лисп, сей алгоритм зациклится на циклическом списке, у которого последний элемент ссылается на первый!!!
Зачем задаешь вопросы, на которые сам не знаешь ответ?) Про статические библиотеки например
Задаю, потому что знаю. И в принципе я могу просто задать вопрос, чтобы послушать рассуждения интервьюера на данную тему.
@@ambushedraccoon6408статическая библиотека это не исполняемый файл, и динамическая тоже. Разница в какой момент символы будут разрешены: при компоновке либо при исполнении
Боже, решение с ксором в задаче о нахождение уникального элемента, просто шикарно. Я кстати когда думал сам над решением, пришел к использованию битовых операций, но только с целью хранения информации о том, что элемент уже есть. (1 есть, 0 нет). Но вот до использования ксора не додумался.
Насчёт RevertList что то сомнения закрались.. Хоть я инженер, не программист не судите строго.. А на стеке хватит памяти если список очень большой.. Если 10 миллионов? Я думал надо что то типа выделяем памяти с запасом, проходимся до конца, записывая всë в массив в этой памяти.. По мере надобности выделяем ещё.. А дойдя до конца, проходимся обратно.. Ну и память удаляем
И почему это всё не андефайнд бихевиор? Мы возвращаем указатель на то, что создали на стеке? Если ошибаюсь расскажите пожалуйста в чем.
В решении, на стеке хранятся только 3 указателя(cur, prev, temp), независимо от размера списка. А значит, stackoverflow не будет.
@@ТимурСаляхов-е6е нет, возвращается копия указателя prev, который указывает на первый узел реверснутого списка.
Спасибо. Буду разбираться
есть два типа людей:
0. Которые хейтят яндекс
1. Те, которые в нем работают
Я скоро переметнусь из одной касты в другую, пхехе.
Коммент для продвижения
10:12 интервьюер, ты ойкаешь, вздыхаешь, сбиваешь своими вставками с мысли, задал вопрос подожди пока решит задачу и потом покажи какой ты nevyebeniy. Нахера ты лезешь, отбил всё желание смотреть
ну такое, 80% вопросов не релевантны на позицию middle, и в реальных проектах о них вспомнят в последний момент, особенно по constexpr и проверка статического результата. Не реалистичная бредятина
А это точно разработчик из Яндыкса? Есть большие на эту тему сомнения. Обычно яндекс проводит 3-4 технических собеса
на алгоритмы и знание языка. Мне кажется на собесе был самозванец :)
Теперь к автору видоса. Автор!, а похоже ты и сам не понимаешь (судя по твоему ответу) разницы между динамическими
и статическими библиотеками - подучи-ка, дружок, мат-часть а уже потом вопросы задавай.
Я алгоритмы хорошо знаю
Поошибался, бывает, че за духота
@@faritavtakhov5115а ты на какой позиции? Junior? Middle? Просто если junior, то все наезды в комментариях абсолютно нерелевантны.
В любом случае ты большой молодец)
Совершенно бесполезная первая часть собеса с решениями задач. Так как проверяется тупо навык задрачивания решения задач на ЛитКод и тому подобных, которые в реальной разработке редко когда понадобятся. Я бы уже после это части распрощался с таким работодателем
ну вообще нет. будь там задача уровня hard с литкода, то да. А это medium с натяжкой. Тут проверяется возможность кандидата мыслить логически. И во многих компаниях(если не во всех. Я прошел больше 50 собесов и только 1-2 раза встречал, когда таких вопросов не было) такое применяют постоянно
Более 50 прошёл, задачи на логику, меня терзают смутные сомнения... А ты вообще дееспособен писать каменты😂
задачи конечно...
олимпиадная хрень, это не собес, это бесполезные ребусы
Без этой "хрени" не обойдется ни одно собеседование в крупную с большим количеством разных проектов компанию. Это нечто вроде общего теста, чтобы понимать потенциальные возможности кандидата без привязки к конкретным технологиям.
То, что Вам это не нравится, не причина пренебрегать таким важным аспектом подготовки.
увы, с тем же успехом можно загадки загадывать)
достаточно примитивный способ оценки кандидатов, через узкие задачки с олимпиад по информатике.
и это все я пишу с тем моментом что алгоритмические моменты люблю в программировании))
оценить нужно опыт, обучаемость, скиллы хард и софт, проактивность и сообразительность.
литкод это дрочка на часть хардов и больше ничего.
это порок фангов что подобным способом набирают себе сотрудников.
и тем более о каких скилах и качестве может идти речь если разработчик может юзать разные языки в силу различных обстоятельств.
нельзя быть проскилловым везде.
а вот везде быть средним вполне реально, собсно и качество продуктов будет таким же.
Был бы рад вашей оценки моей жалкой попытки. еще только учусь. Тоже первое что пришло в голову это рекурсивная функция, реализовал так - using namespace std;
struct ListNode {
int value;
ListNode* next;
ListNode() : value(0), next(nullptr) {}
ListNode(int x) : value(x), next(nullptr) {}
ListNode(int x, ListNode* next) : value(x), next(next) {}
};
void ReverseList(ListNode *header, ListNode* &finalHeader) {
if ((*header).next != nullptr) {
if ((*header).next->next != nullptr) {
ListNode* buffer = (*header).next->next;
(*header).next->next = header;
ListNode* bufferForNext = buffer->next;
buffer->next = (*header).next;
(*header).next = nullptr;
ReverseList(bufferForNext,finalHeader);
bufferForNext->next = buffer;
}
else {
(*header).next->next = header;
finalHeader = header->next;
}
}
}
int main() {
ListNode a1(1);
ListNode a2(2);
a1.next = &a2;
ListNode a3(3);
a2.next = &a3;
ListNode a4(4);
a3.next = &a4;
ListNode a5(5);
a4.next = &a5;
ListNode a6(6);
a5.next = &a6;
ListNode a7(7);
a6.next = &a7;
ListNode a8(8);
a7.next = &a8;
ListNode* finalHeader = nullptr;
ReverseList(&a1, finalHeader);
};
вершина перевернутого листа находится в указателе finalHeader
p.s. первая задача
Это пи.здец какой-то))
какой-то там симэйк)) абалдеть просто. в яндексе кто вообще работает?)
статика и шарэд либа это же очевидная вещь. какой кошмар
+