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

Всем привет!
Провели собеседование с Владимиром на позицию Middle C++ Developer.
Интервью по большей части состоит из лайв-кодинга.
Левую часть кода обрезало при записи, но вся значащая информация сохранилась.
Приятного просмотра!
Twitch-канал: / ambushedraccoontv
Telegram: t.me/ambushedraccoon
Полезные ссылки:
Три возраста паттерна синглтон:
habr.com/ru/post/147373/
Синглтон Майерса и многопоточность:
ru.stackoverflow.com/question...
Не забудьте поддержать видео :)
Таймкоды:
00:00 Вступление
01:58 Бинарный поиск. Левая граница
23:47 Конструктор копирования
28:49 Конструктор и присваивание. Разница
31:20 Singleton
39:55 Singleton Майерса
41:45 Фидбэк

Пікірлер: 82

  • @user-ik7om3hh8r
    @user-ik7om3hh8r Жыл бұрын

    Спасибо за видео!

  • @alexandrchioroglo5612
    @alexandrchioroglo5612 Жыл бұрын

    С новым годом, братья

  • @eliot8707

    @eliot8707

    Жыл бұрын

    С новым и тебя! 🎉

  • @xikxp1
    @xikxp1 Жыл бұрын

    Проверка, реализованная кандидатом в цикле в первой задаче приводит к нескольким багам: 1) Если у нас ровно один элемент в массиве и он равен key, то мы не зайдём в цикл и вернём -1, что некорректно. Пример: arr=[3], key=3 2) Возможна ситуация, когда на одной из итераций right станет меньше left и мы наткнёмся на UB или на бесконечный цикл. Пример: arr=[3,3], key=3 В подобных реализациях лучше всегда писать такие проверки, которые гарантируют, что правая граница не стала левее левой и помнить, что вырожденный случай, когда они совпадают, тоже корректен

  • @ostrov11

    @ostrov11

    Жыл бұрын

    ... "лучше" враг хорошего

  • @ambushedraccoon6408

    @ambushedraccoon6408

    Жыл бұрын

    Да, все верно, Спасибо, я проглядел.

  • @s.g.7213
    @s.g.7213 Жыл бұрын

    Чувак реально молодец!!!! Это первый чувак ,за 10 лет пока я провожу собеседования , от которого я услышал, что singleton решает проблему порядка инициализации глобальных переменных. И кстати именно для этого он и был придуман Маерсом изначально.

  • @wokeupinthefuture

    @wokeupinthefuture

    Жыл бұрын

    разве Маерс придумал синглтон?

  • @s.g.7213

    @s.g.7213

    Жыл бұрын

    @@wokeupinthefuture А кто по вашему? Он был описан в 94 году в книге "банды четырех", но насколько мне известно авторство принадлежит именно Маерсу.

  • @articice7342

    @articice7342

    Жыл бұрын

    @@s.g.7213 В книге четырёх в 6.2, 6.3 описано про появление паттернов. Как я понял паттерны (описанные в книге) есть результат совместной работы. В книге также указывалось, что сингелтон был реализован ещё в smalltalk. Если есть ссылка где указано кто конкректно придумал базовые паттерны (хотя бы один), буду признателен если поделитесь.

  • @s.g.7213

    @s.g.7213

    Жыл бұрын

    ​@@articice7342 паттерны есть результат совместной работы, но не только тех людей, которые значатся авторами книги , а близкого к стандарту сообщества в целом, которое общается между собой. Тут есть небольшое недопонимание, потому как я говорил , о синглтоне Маерса в с++ ,а не паттерне в широком смысле этого слова. Если говорить о синглтоне Маерса в с++ .То первая его реализация, не запрещала копирование объекта, потому как решала проблему не однозначности порядка создания глобальных переменных в первую очередь.

  • @s.g.7213

    @s.g.7213

    Жыл бұрын

    @@cppdeveloper А вот Александреску - Современное проектирование , у меня кто то спёр из уволившихся сотрудников....

  • @dmit100
    @dmit100 Жыл бұрын

    Решение через лямбду часто можно видеть на литкоде, и мне оно тоже не нравится. Что можно улучшить: Интервьюеру: перестать употреблять "как бы" через каждое предложение. Кандидату: придумывать/спрашивать несколько тесткейсов и подробно разбирать их перед тем, как что-то кодить.

  • @user-ri8dx3cc1b
    @user-ri8dx3cc1b Жыл бұрын

    Джунам на заметку! Оператор присваивания реализован не оптимально. Сначала необходимо делать проверку не происходит ли самоприсваивание. if(this == &other) return *this .......... Если этого не делать, то на больших объектах будете терять драгоценное время. А время - деньги! Ну и конструктор копирования лучше реализовать через вызов оператора присваивания

  • @agordov

    @agordov

    Жыл бұрын

    Вообще для примера из видео достаточно будет и представленной реализации, или даже написать = default. А так гораздо удобнее и красивее (имхо) использовать copy-and-swap, особенно если мы возможно часто копируем, но не самих себя, т.е. проверка будет срабатывать очень редко (мы ведь не хотим каждый раз тратить время на бесполезные проверки (хотя тут скорее всего будет срабатывать бранч предиктор и часто реальная проверка не будет произведена)). А если еще и приходится часто копировать, но не часто менять содержимое, то стоит задуматься о COW, т.к. в этом случае может получиться еще лучше по производительности.

  • @user-ri8dx3cc1b

    @user-ri8dx3cc1b

    Жыл бұрын

    @@agordov Всё зависит от уровня кандидата. ИМХО! В рамках поставленной задачи, представленное решение ближе к джуну чем к мидлу. Мидл уже самостоятельная, боевая единица команды, и про принцип DRY лучше не забывать.

  • @articice7342

    @articice7342

    Жыл бұрын

    Никогда так не делал, ни в одно большом проекте (с которым работал) такого не встречал. С временем работы програмы из-за этого никогда проблем не было. Имхо, больше аремени будет тратиться на постоянные проверки для всех мелких классов, чем на экономию при выполнении присваивания, которого, у хорошего программиста никогда не должно произойти.

  • @syogun544
    @syogun544 Жыл бұрын

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

  • @ambushedraccoon6408

    @ambushedraccoon6408

    Жыл бұрын

    Привет. Я читами больше не занимаюсь. Да и в любом случае не смогу помочь. Особенно на линуксе.

  • @user-dk5rx1be6v
    @user-dk5rx1be6v Жыл бұрын

    👍

  • @ArtyomMG
    @ArtyomMG Жыл бұрын

    На 25:40 что не понравилось обоим? Uniform initialization вроде уже давно есть. Можно и так проинициализировать, Нет?

  • @DadundddaD

    @DadundddaD

    Ай бұрын

    Тот же вопрос.

  • @user-yw7ml8jy9i
    @user-yw7ml8jy9i Жыл бұрын

    Здравствуй, с какой целью ты проводишь собесы??? И как попасть на них???

  • @ambushedraccoon6408

    @ambushedraccoon6408

    Жыл бұрын

    Привет! Цель - создание обучающего контента. Дабы попасть на собеседование следите за новостями канала в телеграме t.me/AmbushedRaccoon Там я объявляю наборы кандидатов.

  • @robbarret9568
    @robbarret9568 Жыл бұрын

    Нихрена ты его раскатал! Теперь даже джуном не возьмут!

  • @ambushedraccoon6408

    @ambushedraccoon6408

    Жыл бұрын

    Ничего не раскатал, нормально кандидат справился.

  • @pavel_trpn
    @pavel_trpn Жыл бұрын

    CopyAssignExample это POD, зачем для него реализовывать ctor и другие самостоятельно? Потом спрашивать кейсы их вызова? У мидла???

  • @kimpantnw1834
    @kimpantnw1834 Жыл бұрын

    большое спасибо за видео,если не сложно,можно тайм коды по вопросам пожайлуста

  • @ambushedraccoon6408

    @ambushedraccoon6408

    Жыл бұрын

    Таймкоды готовы.

  • @kimpantnw1834

    @kimpantnw1834

    Жыл бұрын

    @@ambushedraccoon6408 спасибо

  • @user-zq9ni6lw5e
    @user-zq9ni6lw5e4 ай бұрын

    Кто-то писал, что middle неверно вычисляется? Если оба числа будут близки к максимуму, то будет переполнение, лучше так: int middle = l + (r - l) / 2;

  • @ambushedraccoon6408

    @ambushedraccoon6408

    3 ай бұрын

    Писали уже, да. В любом случае спасибо.

  • @yupiter9403

    @yupiter9403

    2 ай бұрын

    соглы, удивился, что кандидат написал так

  • @voidptr_t
    @voidptr_t Жыл бұрын

    А разве не проще в задаче с копированием написать = default?

  • @ambushedraccoon6408

    @ambushedraccoon6408

    Жыл бұрын

    Проще. Но такая реализация пригодится на случай Deep copy.

  • @jzxdrift
    @jzxdrift10 ай бұрын

    Ты хотел сказать рекурсивно а не рекуррентно?

  • @user-st3fm6bs5j
    @user-st3fm6bs5j Жыл бұрын

    Вообще на видео CodeShares картинка уехала вправо (((

  • @ambushedraccoon6408

    @ambushedraccoon6408

    Жыл бұрын

    Поправил в следующих видео.

  • @user-vr5im7ts9i
    @user-vr5im7ts9i9 ай бұрын

    если это уровень Middle то я Senior

  • @SergeSavostin
    @SergeSavostin Жыл бұрын

    Я чего-то не понимаю, или для middle это, мягко говоря, слабовато?

  • @alexsndralexandr3069

    @alexsndralexandr3069

    Жыл бұрын

    Все вы правильно понимаете,я пока что учусь,но тут до мидла не дотягивает.

  • @user-st3fm6bs5j
    @user-st3fm6bs5j Жыл бұрын

    Нихера не видно в записи в этом CodeShared

  • @ambushedraccoon6408

    @ambushedraccoon6408

    Жыл бұрын

    Да мелковато, но с компьютера можно разглядеть. В следующих видео крупнее.

  • @user-st3fm6bs5j

    @user-st3fm6bs5j

    Жыл бұрын

    @@ambushedraccoon6408 Сделай покпупнее, если дальше будешь, у тебя замечательные видео

  • @ambushedraccoon6408

    @ambushedraccoon6408

    Жыл бұрын

    @@user-st3fm6bs5j Спасибо) хорошо.

  • @skynowa2626
    @skynowa2626 Жыл бұрын

    Это 5-ти минутка

  • @pandalove6795
    @pandalove679510 ай бұрын

    Фууух я сначала первую задачу решил сам сделать, сделал её как раз просто заменив arr[mid] > value на arr[mid] >= value и сначала испугался т.к. как будто я что-то упускаю, т.к. посмотрел код собеседуемого и послушал комментарии автор, хотя код я протестировал. Но потом отлегло.

  • @georgyg1531
    @georgyg1531 Жыл бұрын

    Как же долго на простой задаче то

  • @vasiliypupkin6311
    @vasiliypupkin6311 Жыл бұрын

    Спасибо за видео, но вот нам в РБ работы нет, как и в Рашке, милой сами устроятся, а что Джуна делать, вечно готовиться ?

  • @h1ghammcsgo698

    @h1ghammcsgo698

    Жыл бұрын

    Есть вакансии на джунов. Надо искать.

  • @vasiliypupkin6311

    @vasiliypupkin6311

    Жыл бұрын

    @@h1ghammcsgo698 1 на 1000 человек, обратно на заводик(

  • @vladimirchizh8853

    @vladimirchizh8853

    Жыл бұрын

    Это не правда) Вакансии есть. Но их конечно гораздо меньше.

  • @h1ghammcsgo698

    @h1ghammcsgo698

    Жыл бұрын

    @@vasiliypupkin6311 ну зависит от направления. В ue сейчас есть спрос на джунов. Так как рынок просел и не все тянут запросы мидлов.

  • @vasiliypupkin6311

    @vasiliypupkin6311

    Жыл бұрын

    @@h1ghammcsgo698 по снг 2 компании кто работает с ue, мой вектор ++

  • @fil7409
    @fil7409 Жыл бұрын

    синглтон - это же антипаттерн ))

  • @goczt

    @goczt

    Жыл бұрын

    В вопросах проектирования автор застрял где то в 2005-ых, видимо работал в геймдеве и с легаси кодом много

  • @ambushedraccoon6408

    @ambushedraccoon6408

    Жыл бұрын

    Вброс на троечку. Синглтон позволяет покрыть много интересных для собеседования моментов в познаниях кандидата. А прежде чем спрашивать, что с Паттерном не так я предпочитаю выяснить, что кандидат знает .

  • @goczt

    @goczt

    Жыл бұрын

    @@ambushedraccoon6408 может быть и позволяет, но в 2023 году на полном серьёзе отправлять кандидата изучать как реализовывать устаревший паттерн, это практически вредничать. С моей стороны иронии бы не возникло, если бы был хотя бы НАМЁК на то, что с паттерном что-то не так. Да, знать полезно, а ещё полезнее знать, почему от него предпочитают отказываться. Я специально сходил в поисковик и глянул всю первую страницу выдачи. Нигде не сказано ничего не только про то, почему паттерн не стоит использовать, но и что он не соответсвует современному пониманию разработки ПО в принципе. Для тех кто знает английский, рекомендую к просмотру запись с конференции CppCon: Retiring the Singleton Pattern: Concrete Suggestions for What to use Instead

  • @omnidroid3783
    @omnidroid3783 Жыл бұрын

    Хрюкнул с гринскрина

  • @immickful

    @immickful

    Жыл бұрын

    Ась, о чем речь? Тайминги хоть давайте момента хрюкача.

  • @vada322
    @vada3222 ай бұрын

    Интересно а без образования берут?

  • @ambushedraccoon6408

    @ambushedraccoon6408

    2 ай бұрын

    Берут. Но лучше иметь, чем не иметь. Если вообще нет никакого образования кроме школьного это может показаться странным для работодателя.

  • @aanoonymouss
    @aanoonymouss Жыл бұрын

    Фейспалм с обоих... Я себе лицо рукой разбил из-за вас. Больше из-за интервьюера Пометьте, что это комедийный контент, и что к нему не нужно относиться серьезно. А то новички вас всерьёз будут воспринимать

  • @arthurlouiskarl

    @arthurlouiskarl

    Жыл бұрын

    лол, что тебе не нравится в интервьювере-то?

  • @georgyg1531

    @georgyg1531

    Жыл бұрын

    ​​@@arthurlouiskarl это даже не уровень новичка. Это уровень "я прошел 2х недельный курс по с++ и алгоритмам"

  • @raresongs3788

    @raresongs3788

    8 ай бұрын

    @@georgyg1531 Да какие 2 недели -> за пару часов управиться можно, и то, попутно отвлекаясь на видосы на Ютубе