Прийшов час осідлати справжнього Буцефала🏇🏻Приборкай норовливого коня разом з Newxel🏇🏻Умови на сайті
×Закрыть
Software Engineer
  • Что спрашивают на behavioral и system design интервью, или Как я попал в Facebook

    Facebook — это единственная из FAANG, которая не дала никакого (отрицательного) фидбека, просто пропала с экранов радаров.

    Поддержали: Mitori Hayabusa, Max Fomenko
  • Обе части пирога

    Не в тему вопрос, Иван.
    Вот всегда было интересно — Елены в родственниках присутствуют?

  • Самая сложная задача которую вы решали

    Как бы не совсем так.
    Линейная всё же, от числа бит зависит (решение в лоб).

  • Самая сложная задача которую вы решали

    Я, кстати, на всяких Литкодах зачастую использую этот подход (где он и не предполагался), что позволяет выиграть вычислительную сложность (вместо линейной — константная).

  • Самая сложная задача которую вы решали

    Но такие задачи не для собеседований.
    По крайней мере, если бы мне такое задали, я бы рассказал про битовую пермутацию и что её реализация — битовые хаки, которые я не упомню, но могу за пару минут загуглить.

  • Самая сложная задача которую вы решали

    Next binary permutation:

    uint64_t next(uint64_t n) {
      // Find the first unset bit (pivot).
      uint64_t pivotBit = __builtin_ctz((n | n - 1) + 1);
    
      // Set the first unset bit (pivot).
      uint64_t step1 = n | (1<<pivotBit);
    
      // Unset the first set bit (successor).
      uint64_t step2 = step1 & (step1 - 1);
    
      // Extract the part after the pivot.
      uint64_t suffixMask = (1 << pivotBit) - 1;
      uint64_t suffix = step2 & suffixMask;
    
      // Zero out the suffix, and only keep the 1's around.
      uint64_t final = (step2 & ~suffixMask) | (suffix >> __builtin_ctz(suffix));
      return final;
    }
    
    Поддержал: Andrew Sevastianov
  • Java vs. C++ junior

    Вы такое не показывайте массам, ибо убивают.
    А вообще, в мире Windows, я и не такое щупал.
    Дописка:
    Хотя не факт

  • Java vs. C++ junior

    Молодой человек,
    это разве Плюсы?
    Знали бы, что я на перфоленте могу — целую машину Тьюринга...

  • Java vs. C++ junior

    P.S. Под кольцевыми shared’ами я имел в виду не циклическую проблему ссылки поинтеров на самих себя, а стратегию реализации таких поинтеров, где вместо счётчика ссылок используется кольцо указателей, список иными словами, в котором нет накладных расходов по производительности и памяти (ну почти), зато есть проблема синхронизации в многопоточном окружении...

  • Java vs. C++ junior

    Доводилось мне работать над поисковым движком. Я там такие структуры таких вложенностей видывал.
    А как один и тот же объект в несколько контейнеров поместить?
    (чур, про shared и intrusive поинтеры не писать, там накладные расходы, как минимум по памяти, а то и атомарные счётчики, и да, я в курсе про кольцевые shared’ы, но... не надо нам Java лепить, где уши ключевых синтаксических сущностей из стандартной либы торчат, ибо не аккуратненько)

  • Java vs. C++ junior

    Так это ж та самая первоапрельская шутка, что выше упомянута. И таки да, там «обещают» сырые указатели выпилить. Очень граммотно составлена и на нескольких ресурсах под разными соусами растиражирована в своё время перед первым апреля.
    Но плюсовика сложно обвести, джуна разве что. Суть-то Плюсов в «обратной совместимости» с Сями.

    Поддержал: Viktor Chyzhdzenka
  • Java vs. C++ junior

    Конструктор зовём напрямую, для глобальных/статических переменных и для стековых объектов. Для объектов на куче — либо обычный new, либо placement new.
    Припоминаю, что деструктор можно хаком в лямбду обернуть, но конструктор — увы. Ссылку на него никак не получить в текущих версиях языка.
    Сам удивляюсь, почему конструкторы/деструкторы поименнованные, типа ClassName/~ClassName, а не, например, constructor/destructor. В последнем случае можно было бы обойтись всякими malloc’ами и шаблонной магией.

  • Java vs. C++ junior

    Можно пример кода, пожалуйста?

  • Java vs. C++ junior

    А, и я в курсе, что эмбеддеры иногда без кучи обходятся.

  • Java vs. C++ junior

    Разговор, мне показалось, был о том, мол, как данные на куче выделять и инициализировать. Тут действительно комбо из *alloc + placement new / free + ~dtor работают.
    Может я что-то упускаю? Как тогда данные на куче создавать?
    (смарт-поинтеры и контейнеры, чур, не в счёт)

  • Java vs. C++ junior

    А конструктор как вызывать? Опять же placement new. Ещё варианты?

  • Java vs. C++ junior

    Интересно почитать про C++ без new.
    Поделитесь ссылкой, если не затруднит.
    Даже если это фейк. Слабо вообще верится.

  • Java vs. C++ junior

    Увы, но доля правды в этом есть.
    P.S. Приятным он становится с мидл+ левела.

  • Java vs. C++ junior

    Дык то же шутка была первоапрельская.
    Но некоторые так прониклись, что до сих пор рассмеяться забыли.

    Поддержал: Viktor Chyzhdzenka
  • Java vs. C++ junior

    Конечно требует, такова наша профессия. Потому и выбрал, интересно, всегда что-то новое и нужно держать себя в тонусе.
    Но я имел в виду, что Плюсы нужно изучать постоянно, плюсы в плюсах, как технология сама в себе.
    Я больше не знаю таких языков, разве что академические или экспериментальные.
    Возможно неясно выразился, вектор изучения смещается с технологий на сам язык.

← Сtrl 123456...10 Ctrl →