Ищем истину: тема leetcode

Доброго времени суток.

Итак:

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

2) Опытные, крутые специалисты могут вообще не решить Easy задач по массивам. Зато умеют написать систему и выпустить в прод. Ценны для бизнеса.

Вопрос: литкод помогает развивать мышление, но к реальным навыкам имеет немного отношения. Почему же ФААНГ и приближенные его так возносят? Или это как тест IQ в мире программирования?

👍ПодобаєтьсяСподобалось3
До обраногоВ обраному2
LinkedIn

Найкращі коментарі пропустити

Давайте я розповім вам, як таргани займаються сексом.

Перед тим як спаритися, самець та самка обмінюються феромонами та починають шлюбні ігри. Конкретно — танцюють один перед одним. У різних видів по-різному. Деякі можуть просто позадирати ніжки та крила один перед одним, а потім перейти до справи. А здорові південноамериканські таргани, наприклад, можуть хвилинами танцювати www.youtube.com/watch?v=PiHc8dMxmDg по конкретних траєкторіях, і лише після цього почнеться спарювання.

Суть цього дійства досить зрозуміла — перед тим, як спаритися, обом сторонам, а особливо самці, потрібно пересвідчитися, що партнер достатньо здоровий, не хворий, не контужений, не придавлений тапком, тому що невдахи нікому не потрібні. У невдах погані гени — всім потрібно відбирати добрі. Чи це означає, що цей тест на 100% дасть самиці гарантію, що саме цей самець ідеальний для спарювання? Звичайно, ні. Але цей тест достатньо точний, щоб таргани продовжували плодитися і залишатися однією з основних напастей будинку, з легкістю мутуючи резист до нових отрут за кілька поколінь.

Звичайно, наука не стоїть на місці, і якщо уханська лабораторія виведе тарганів, які будуть мати суперсенсори на головогрудях, які за секунду сканування дадуть таргану на 100% упевненість, що його партнер здоровий, як бик, тоді вони будуть розмножуватися з абсолютною точністю, і їхнє уберменшне потомство переможе звичайних тарганів. Але поки таких суперсенсорів немає, і супертарганів немає, звичайні таргани продовжуть танцювати ці тупі танці, щоб розмножитися і продовжити цикл далі, тому що у звичайних тарганів для проріджування популяції є лише їхні недосконалі сітчасті очі та нюх. Але все одно: це good enough.

Повертаючись до початкового питання: чому FAANG потрібен літкод? Хз, понтуються мабуть.

Насправді, якщо копнути продукти фаангу поглибше, то на якомусь рівні літкод в них таки є. Без літкоду ваш плеєр Спотіфая не почне грати пісню протягом 200 мс від кліку по кнопці Play (а така у них внутрішня вимога). І те саме з відео на Нетфліксі, з пошуком в гуглі. Ваш браузер під капотом містить всі алгоритми літкоду (і ще в 10 разів більше) щоб працювати так швидко, як він працює. Ви скажете «та все одно 9 з 10 людей в тих фаангах займаються не цим» і будете праві. Але фаангам потрібно все ж знайти і ту одну людину з 10, яка зможе і це.

литкод — это способ малолетнему интервьюеру и/или пафосной конторе потешить своё чсв, поунижав опытного 35-летнего кандидата.

советую гуглам и их подражателям из третьего галерного мира идти дальше и перейти на алгебраическую топологию, причем самую базовую — а хуле. посмотреть problem solving skill и умение оперировать простыми абстракциями. каждый день сталкиваешься с подобными проблемами — даже когда кофе из кружки пьешь на перекуре!

например:
1) показать, что (индуцированный гомоморфизм) отображение фундаментальной группы универсального покрытия в фундаментальную группу базового пространства является мономорфизмом.
2) показать существование взаимно биективных, непрерывных, но гомотопически неэквивалентных отображений (привести схему построения пространств снабженных такими картами).
3) (для дебилов) показать что del (del X) = 0

не решил 1 и 2 — не мужик, формошлёп.
третье исключительно для квотированных джунов из LGBTQ.

вон, Петя в 20 лет написал свой MAPPER. Вася прикрутил туда ко-цепи для оценки того насколько хорошим является исходное пространство. Джон просто гей. а ты лох с кубернетесом.

2) Опытные, крутые специалисты могут вообще не решить Easy задач по массивам. Зато умеют написать систему и выпустить в прод.

Каждый раз, когда такое читаю, вспоминаю, как мне пришлось выяснять, почему аццки тормозит система, которую опытный специалист, не умеющий решать изи задачи по массивам, выпустил в прод — оказалось, он мерджил два датасета вложенными циклами.

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Бг создал мир за 7 дней. Делай 7 приложений, по одному на день. 10 не надо, сильно много.

Вернее даже 6, на седьмой день отдыхать будешь. © Artyom

И наступил день первый. И усадил бубен свою жопу в мягкое кресло. И набрал 6 строк кода.

Client.SetDefaultCollection("Questionary")
                  .WantMergeDocumentFor("Report", 1)
                  .OpenForm(result => 
                  {
                      if(result.Result)
                      {
                          Client.SetDefaultCollection("Report")
                                .OpenForm(1);
                      }
                  });

И заколосился анонимный опросник, под вин и под веб и даже с админкой.
ibb.co/GC0hNn1

И увидел бубен, что это хорошо !

А как насчет напротив каждой ошибки в регистраторе ошибок (Jira штоль) сделать поле:
Пожертвовано на исправление: И кнопку: Пожертвовать на исправление.
P.S.
Много за идею этого крауд-фриланса не прошу. Хватит и процента. За это могу и других идей на_обнаруживать, насканировать.
С автоматической публикаций исправлений на стек оверфло.
Будет как бы такой практический литкод.

Или это как тест IQ в мире программирования?

в нашей отрасли — это один из способов «меряться пиписьками», особенно когда других вариантов нет (зарплаты, тачки, спортзал и т.д.) — просто еще один способ выбрать тусовку по интересам.

Недавно появился новый проект LeetCode-in-Java.

github.com/javadev/LeetCode-in-Java

Цікаво, що задачі, які вирішуєш на літкоді, повністю забуваються.
Сьогодні вирішив пройти пору задачок, а після Accepted показало табличку, що я вже це вирішував, та ще й з кращим результатом по пам’яті

12/22/2021 14:49	Accepted	364 ms	39 MB	csharp
10/07/2020 00:18	Accepted	76 ms	25.9 MB	csharp

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

Кстати говоря, а ты уверен, что решил хуже? Мог же сам литкод добавить тормозов, введя нужные задержки в ряд функций, применение которых считают некошерным. Если в играх, выманивающих деньги, такое есть — то почему не должно было появиться в литкоде, зарабатывающем, по точно той же модели: ОТНИМИ время, чтобы ВЕРНУТЬ его за деньги, и ОТНЯТЬ снова.

Є маленька проблема, можна зайти у розділ з рішеннями і звірити своє рішення з рішеннями інших безкоштовно.

Неплохо, неплохо. А теперь посчитай, сколько времени ты на это просрал.

менше, ніж серія серіалу або прочитання глави художньої книги

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

В работе это не потребуется никогда. Потому что ЕСЛИ БЫ это каждый день требовалось — у меня на столе лежал бы решебник. А если раз в 20 лет — сколько тысячных процента вероятности, что через 20 лет ты это вспомнишь со 100% достоверностью?

А то что некоторые компании тупо не способны оценить людей, которых они нанимают для СВОЕЙ работы — да пошли они в ДияСити за дешёвыми кадрами, которые знают как помножить матрицу Лагранжа 9-ю способами, но не способны написать и 3 строк понятного кода.

Аргументы анонимусов на уровне употребленцев прошедших традиционную ферментацию продуктов.

ДОКАЗАТЕЛЬСТВА пользы литкода против просранного времени (не говоря уж о деньгах) — у тебя есть? Или только сказки их самих про успешного успешка, который прошёл говнкод и стал главой голактеки?

Аргументы в анти-литкодовцев примерно на уровне антиваксеров

и шо? всем плевать на мнение анонимного троля

Хорошая тема получилась
Мне понравилось
И сильнее всего мне доставило горение у анти-литкодовцев :-)

Как будто такие существуют.
Если те, кто говна не ест. А что литкод им не нужен, так совпадение ж!

Один из главных подожжёных не смог пройти мимо моего комента :-)

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

Вообще забавно как у народа горит от «неприменимости» знаний. На мобилке строил префиксные деревья, искал общую подпоследовательность, считал дистанцию редактирования, при разработке плагина обходил и менял ast, сейчас с гео-индексом работаю. Но это все ерунда, хардкор был с написанием роутер-компонента для навигации — по сути дерево с неограниченным количеством детей где каждая вершина имеет историю и служит точкой входа для модификации дерева (и надо проталкивать оповещения об изменениях наверх). Представьте что на экране есть две панели внутри которых независимо меняется контент когда пользователь куда-то переходит, каждая панель поддерживает историю переходов назад, внутри панелей может быть тоже сколько угодно таких разделений. Операции которые клиентский код может вызывать на уровне экрана могут быть достаточно сложными — очистить бэкстэк, удалить из него экраны по ключу, полностью переписать состояние. Как уже сказал это поменяет не только состояние текущего экрана, но и его родителей, потому что им надо знать, например, какая панель добавилась последней, чтобы при нажатии пользователем «назад» удалить именно ее.
Зачем это нужно — позволяет представить экран в виде логических блоков, унифицировать навигацию и эффективно организовать работу большой команды над одним приложением.

Вот такое вот UI формошлепство.

и сколько раз в жизни ты реализовывал задачи из второго абзаца? Знания применимы, просто — раз в столетие.

Работа с навигацией как бы в каждом первом приложении

Работа с навигацией как бы в каждом первом приложении

Справедливости ради писать навигационный фреймворк для большинства приложений не имеет смысла.

Я никогда не писал свой фреймворк, т.к. «продать» это сложно (я пытался, если что), а в перерывах между тасками я лучше Доу полистаю, нежели инжиниронгом на нычку заниматься, который никто не оценит. Но ещё ни разу не было такого, чтобы в приложении не приходилось костылять какой-то с существующих. Т.к. по навигации у бизнеса иногда прилетают такие идеи, что ни один фреймворк их не вывозит. Мне кажется, что именно на навигации в средне-больших приложениях сжигается время впустую больше всего, просто потому что изначально не заложили гибкость, а потом переделать навигацию стоит неимоверно дорого (банальное тестирования ток потребует полноценную регрессию ВСЕГО), и едем с тем что есть до самого конца.

да, навигация это больно при росте проекта — появляются либо год-классы, либо дико запутанный граф зависимостей. На правах саморекламы, вот тут очень упрощенно писал на примере флаттера о подходе который впервые в моем опыте нормально скейлился, так что вообще не возникало чувства что через год-два сложность выйдет из под контроля:
medium.com/...​with-flutter-ca0aac1275ad

Знания применимы, просто — раз в столетие.

И только формошлепство применимо каждую неделю

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

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

проблема в том, что бизнесу обычно нужно «good enough» на вчера, а не правильное и хорошее высокопроизводительное решение, поэтому олимпиадное программирование больше вредит чем помогает.

Якраз після таких «на вчора» ми потім переписували все за дуже непогані гроші.

І потім дописували нормально.

Вообще забавно как у народа горит от «неприменимости» знаний.

да никто не горит: тупо стебутся над задротами или лень этим заморачиваться просто так, без достойной компенсации (типа «слишком стар для этого дерьма» лучше пойду в бар с друзьями).

Вот как раз заскринил сайтик адептов литкода (ФБ):
i.imgur.com/LDvjd5b.png

Классно написали, да? (комп с 32Гб ОЗУ если что)

Опытные, крутые специалисты могут вообще не решить Easy задач по массивам. Зато умеют написать систему и выпустить в прод. Ценны для бизнеса.

Я вообще не верю что такие существуют.
«Крутой специалист» и «нерешатель Easy задач» — это взаимоисключающие определения.
«Нерешатель Easy задач» — вообще не программист.
Большинство «нерешателей» отсеиваются еще при поиске ими первой работы. Потому что при собеседовании на вакансии начинающих программистов с вероятностью близкой к 100% придется решать задачи.
Те же кто просочились через барьер призванный оградить IT от «нерешателей» — с большой вероятностью бросят программирования, из-за понимания что не тянут, или из-за «выгорания».

Но да, кто-то все же прорвется на миддл-плюс и даже на синьорские позиции с небольшими зарплатами — там на техническом интервью могут не дать задачи. Но не верю что это будут «крутые специалисты». Как можно доверить создание большой системы человеку который не способен создать малую?

«Нерешатели Easy задач» — неспособны разбить сложную проблему на несколько простых (потому что это первое что приходится делать при решении задач). Не могут понять что от них хочет заказчик (как не могут разобраться в условиях задачи). Да и вообще неспособны сделать хоть что-то сильно отличающееся от уже написанного кода — когда в скачанном нужно сделать большие изменения или написать что-то с нуля.
Справятся лишь когда надо выполнить простую последовательность действий, накидать по экрану элементы формы, отправить на сервер JSON и т.д. Но при любом нестандарте им потребуется серьезная помощь от нормальных программистов.

Почему же ФААНГ и приближенные его так возносят?

Потому что они богаты и могут себе это позволить. Потому что их программисты пишут код который будет использоваться огромным количеством людей — десятками, сотнями миллионов. В такой ситуации важна скорость выполнения, потребляемая память, скорость разработки и многое, многое другое — с чем хороший программист справится лучше плохого.
ФААНГ при помощи leetcode отсеивают посредственностей, и берут к себе на работу лучших из лучших.

Думаете ФААНГ будут действовать себе в убыток, давая на собеседованиях сложные задачи?
Думаете что хозяева аутсорс и продуктовых фирм в Украине действуют себе в убыток, отсеивая на собеседованиях тех не может решить easy задачи, хотя типа «умеет написать систему и выпустить в прод»?
Все это сделано ради получения прибыли, чтоб не допустить плохих программистов (в случае ФААНГ — средних) к написанию кода. Плохие программисты — убыточны.

пан натурально считает, что существует бездонная пропасть в талантах между инженегром, решившим задачу за 29 минут, и инженегром, решившим за 31 минуту?

Похоже украинские паны натурально считают, что кодинговые интервью — это натурально лииткод: если успел нажать до 30 минут кнопочку «submit» с правильным решением — возьмут, а если хоть на секунду прокосячил — пролетел. ИРЛ кодинг оценивается по нескольким параметрам (в ФБ, например, по четырем), диапазон оценок в каждого из которых несколько пошире, чем «зачет/незачет», так что разница между 29 минутами и 31 очень несущетсвенна.

так у второго инженегра никакого кодинг-интервью не будет. не прошёл он автоматизированный отборочный тур. сраный неудачник, чоужтам.

не прошёл он автоматизированный отборочный тур.

Мне, честно говоря, не очень интересно обсуждать твои фантазии по поводу автоматизированных отборочных туров.

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

А, вот откуда такое жжение пониже спины — не осилил пару совсем уж примитивных задачек на амазоне. Кстати, открою тебе тайну: хакерранк тесты — это только на хайринг ивентах, где нужно проверить сразу тонны кандидатов из стран третьего мира, и то, близкие к хорошему результату тесты они кажись тоже руками пересматривают. А для обычных кандидатов — обычный телефонный скрининг с живым человеком. А насчет разницы в данном случае между теми, кто успел или не успел: там время дается с нормальным запасом, поэтому если ты успел засабмитить только в последнюю секунду то не стоит сильно обольщаться — с таким уровнем тебе все равно мало что-то светит на полном интервью. Так что существенной разницы тоже нет.

а хорошъ ли ты, байда, в латыни и астрономии? или же только в скоростной литкод-суходрочке? єто важно.

Не надо утрировать.
Между тем кто в принципе неспособен справиться с easy задачками, и тем кто умеет их решать — действительно бездонная пропасть.
А разница между средним программистом, и тем кто может пройти в FAANG не такая уж и большая. Поэтому при прочих равных может оказатся важным даже то что кандидат немного не уложился в отведенное для задачи время.

Инженер вообще решать не станет, он знает где взять ответ. А если и станет — то даже потратив на это 60 минут, он всё равно инженер, потому что таких задач попадётся от силы 1 на 10 лет. А вот попадётся ли компании ещё инженер — вопрос. Или будет контора скулить что все такие глупые — при этом продолжая нанимать по критерию зубрёжки.

С тем же успехом можно оценивать английский по балам на ЗНО.

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

Мидлы и сеньйоры ценятся ... за умение логически мыслить ... оптимизировать.

Те кто не умеют решать easy задачи чаще всего имеют серьезные проблемы и с логическим мышлением и с «оптимизацией» любого вида.

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

Большинство «нерешателей» отсеиваются еще при поиске ими первой работы.

Большинство литкод-дракошей — тупо в пике синдрома Даннинга-Крюгера. И не способны решать задачи, а только [думают что] умеют сравнивать с «правильным» ответом, смысла которого они сами не понимают.

А что мешает дать собственные задачи, а? И уволить людей, которые не могут их ни дать, ни проверить. Да, не смотря на их грустные глазки и большие сиськи. А если такие нужны — нанять почасово.

весело наблюдать как анти-литколеры преимущественно из епамов и приватбанков :)

ок, джон, опиши плз свое видение адекватного собеседования

Элементарно, надо ити не в глубину задротства олимпиадного программирования, спрашивая по 2 харда за 40 минут. А в ширину знаний.
Каждый FAANG должен выбрать себе список языков программирования, фреймворков, баз, и облаков, которые он признает, и спрашивать их тонкости. Эти списки языков на самом деле уже и так есть.
У Google например Java, Go, и С++, допустим еще базы Posgress и MongoDB будут, ну и облако GCP само собой.
У Microsoft .NET, Typescript, Azure, SQL Server.
И только попробуйте сказать что: «FAANG нужны инженеры, а не фреймворк маками».
Я например учил Azure, а сдал AWS Solution Architect Professional, потому что там все тоже самое. Как задрот SQL Server по Posgress я тоже интервью пройду.
И любой нормальный дотнетчик легко выучить Java, и пройдет по ней интервью.
Понятно если в Google пришел разработчик с MS стеком, его не надо трахать тонкостями именно Java, а лучше спрашивать то, что есть и в его стеке тоже.
А System Design надо тоже оставить.
А Behavioral Interview цирк шапито, надо отменить, так как там все равно все пиздят.

Каждый FAANG должен выбрать себе список языков програмирования, фреймворков, баз, и облаков, которые он признает, и спрашивать их тонкости. Эти списки языков на самом деле уже и так есть.

Да не вопрос, у тебя спросят про работу с фейсбуковским облаком, которое не используется за пределами фейсбука, или про работу с фейсбуковским ЯЗЫКОМ, который не используется за пределами фейсбука, или с одним из стопицот самописных фреймворков, которые не используются за пределами фейбсука, или с самописными базами данных, которые, внезапно, также не используются за пределами фейсбука. Как ты думаешь, что количества нытья в этом топике уменьшится и не увиличится?

Опять ты не понял о чем я🙈
У тебя одни крайности, спрашивать или совсем ненужную хуйню типа Литкода, или прям весь стек который на проекте, все 100500 фреймворков🤦‍♀️
Попсовых облаков только 3.
Языков штук 5.
Вот из них и выбирать надо.
И знания попсовых фреймворков, языков и облаков поможет лучше разобраться в кастомных.

Опять ты не понял о чем я🙈

Может у тебя проблемы с выражением своих мыслей?

Каждый FAANG должен выбрать себе список языков программирования, фреймворков, баз, и облаков, которые он признает, и спрашивать их тонкости.

Вот ФБ выбрал, но, как видишь, тебе это не нравится. Наверное, они должны выбирать только из того, что Джонни выучил на курсах, иначе будет нечестно.

Попсовых облаков только 3.

ФБ ни одно из них не использует. Зачем им твои знания AWS или Azure? Зачем им знания твоего дотнета, когда они пишут на своем диалекте php?

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

/s/(фреймворков, языков и облаков)/(алгоритмов и структур данных)

PHP и JavaScript тоже не FB придумал, но они его использую.
Google тоже Java не придумывали.
Netflix и Twitter AWS тоже не придумывали, но используют или использовали.
В FB могли бы спрашивать, PHP, Java, и C++, а из облаков AWS как самое попсовое.
Я же тебе пишу, что нормальный Azure архитект и по AWS на все вопросы ответит, если хоть немного с ним работал, так как концепции там все одни и теже.

PHP и JavaScript тоже не FB придумал, но они его использую.

FB использует Hack, а не PHP. Им в свое время было лень переписать их PHP на Rust Java, и они посчитали, что будет лучше если они добавят свистоперделки в PHP, чтоб их код продолжал работать.

hacklang.org

Ты уверен, что ты хочешь, чтоб тебя на интервью по этой фигне гоняли?

Или, например, по особенностям использования variadic templates и корутинов в С++ и фреймворка folly?

AWS как самое попсовое

Похоже укросиньорам настолько лень думать, что вместо того, чтобы разобраться с десятком структур данных и парой десяткой основных алгоритмов, им лучше заучить 200+ (это только на сегодняшний день) сервисов, которые предоставляет AWS.

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

Каждый FAANG должен выбрать себе список языков программирования, фреймворков, баз, и облаков, которые он признает, и спрашивать их тонкости.

ооо дааа... питання в стилі ++i+=i+++i++ аж набагато кращі за «скільки квадратних люків влізе в круглий автобус».

И ты тоже в крайности ударился, как будто бывает только или Литкод, или дебильные вопросы.

ну а як ще розуміти «тонкощі мов програмування»? тому що «напишіть цикл фор, який виводить числа від 1 до 10» якось на «тонкощі» не тягне, а те що тягне настільки специфічне, що краще вже літкод ніж таке.

Например:
1) чем таска от треда отличается в .NET.
2) какие конструкции синхронизации есть, и их особености.
3) IQuerable vs IEnurable в .NET.
4) Что такое this в JS, чем оно может быть вообще.
5) Что такое страницы в SQL.
6) Уровни синхронизации транзакций SQL.
7) Чем SQL от NoSQL отличается.
Погугли на том же Доу «DOU 150 вопросов по .NET» «DOU 150 вопросов по fronetnd», SQL, JS, и тп.
Но лучше самому придумывать вопросы которых нигде нет, и делать их более творческими, как я делал, типа как сделать то-то, в .NET, и вариантов может быть много.
Что ты за странный вопрос вообще, пойди в любой лидер рынка в Украине на синьора и выше, и узнаешь что будут спрашивать по:

«тонкощі мов програмування»
Почему же ФААНГ и приближенные его так возносят?

Потому что поток желающих со всего мира очень большой и его надо хоть как-то отфильтровать. Всё. Точка.

в том и главный прикол, что жесткие методы отсева потока применяют те, к которым потока нет. разве что выпускники «3месячных ойтикурсов» спамят

Классический карго культ — без понимания всякого смысла, копируют у фаангов. Аппелируют тем, что это лучшие практики)))
Потому у меня часто и возникают сомнения на собеседовании, когда я вижу подобное «А следует ли вообще с этими дятлами работать? На кой черт мне этот геморрой? В галере Х я получил бы офер неделю назад на ТОТЖЕ РЕЙТ)))»

жесткие методы отсева потока применяют те, к которым потока нет.

зачем работать с мудаками? собеседование — это взаимный процесс

Литкод только косвенный признак. Реальный признак, это смог ли человек начать и закончить в приемлемые сроки сложный проект, в условиях ограниченных ресурсов. Это единственная гарантия того, что человек придет в контору и не будет тренироваться на кошках, в смысле на проде заказчика. Не зафейлит проект.
И вообще, если к вам пришел человек и решает хитроумные задачи и прекрасно ориентируется в говнокоде и разных ньюансах, задумайтесь. Он этот опыт где-то получил и вполне готов разнообразить именно ваш репозиторий этими ньюансами вместо простых и понятных решений.

Відповідь: Частково допомагає.

Коли вирішуєте задачу на літкоді то завжди думаєте чи можна краще? Чи можна пожертвувати памятю заради перфоменса. Делеко не всі задачі на літкоді описані правильно, досить часто опис не на 100% відповідає тому що описано.

У ФААНГах задачі не чіткі, девелоперам доводиться спілкуватись, аналізувати і приймати трейд офи.

Можна зробити 1000 задач на літкоді і провалити інтервю, бо на інтервю від кандидата очікується:
1) Уважність до умов задачі, або зробити не чітке чітким.
2) Уважність до інтервюера або командна робота
3) Примати трейд офи. Як час написання задачі, память, швидкість..

2) Опытные, крутые специалисты могут вообще не решить Easy задач по массивам. Зато умеют написать систему и выпустить в прод. Ценны для бизнеса.

Досвідчений і реально програміст (тобто інженер) розв’яже легкий рівень задач по літкоду. Тільки без підготовки на таких задачах це займає більше часу, ніж відводять на, скажімо, типовій співбесіди. Бо там треба лускати такі задачки хвилин за 5-10, що без натаскуваннях на типових задачах для 99.9% людей неможливе. Але в межах півгодини більшість задач легкого береться без проблем. Ну бо це реально базові речі і базове вміння думати і мислити.

Але фреймворк-макаки, звичайно, можуть і за день з задачкою не впоратися, а може і взагалі ніколи.

Тут нижче лінкували задачку на суму з літкоду. O(n^2) — 3 хвилини просто для себе. Звістно це дуже фігове рішення і на нормальне я десь витратив ще 15-20 хвилин (бо лише наприкінці звернув увагу на едж кейс, а так мапу зробив одразу). Можна вирішити навіть фреймворк мавпою.

Але з точки зору фреймворк мавп — іноді і O(n^2) є прийнятною. Наприклад коли в мене фіксований n меньше 10. Це я просто пригадав неоптимальне вирішення однієї проблеми з реального проекту, коли я навмисно прописав що то фігня — але та фігня задовільняє потребі і робити щось складніше нема сенсу бо тут завжди лімітовано n.

проверка умения решать литкод на время не показывает только то, что кандидат насобачился решать литкод на время, да и всё. это канешно косвенно указывает на наличие какого-то интеллекта, однако ровно с тем же успехом можно на входе экзаменовать знание латыни или астрономии©, как уже было в каментах отмечено.

литкод — это способ малолетнему интервьюеру и/или пафосной конторе потешить своё чсв, поунижав опытного 35-летнего кандидата.

советую гуглам и их подражателям из третьего галерного мира идти дальше и перейти на алгебраическую топологию, причем самую базовую — а хуле. посмотреть problem solving skill и умение оперировать простыми абстракциями. каждый день сталкиваешься с подобными проблемами — даже когда кофе из кружки пьешь на перекуре!

например:
1) показать, что (индуцированный гомоморфизм) отображение фундаментальной группы универсального покрытия в фундаментальную группу базового пространства является мономорфизмом.
2) показать существование взаимно биективных, непрерывных, но гомотопически неэквивалентных отображений (привести схему построения пространств снабженных такими картами).
3) (для дебилов) показать что del (del X) = 0

не решил 1 и 2 — не мужик, формошлёп.
третье исключительно для квотированных джунов из LGBTQ.

вон, Петя в 20 лет написал свой MAPPER. Вася прикрутил туда ко-цепи для оценки того насколько хорошим является исходное пространство. Джон просто гей. а ты лох с кубернетесом.

Спасибо за вопросы, добавил в копилку.

литкод — это способ малолетнему интервьюеру и/или пафосной конторе потешить своё чсв, поунижав опытного 35-летнего кандидата.

Опытный 35-летний кандидат детектед

не опытный, не 35-летний, не кандидат (пенсионер) и даже уже не программист

В какую сферу из программистов выгореть удалось?

retirement забавы: криптотрейдинг для себя и немножэ́чко математики для этого дела.
тут, конечно, и до сплава по Днепру недалеко. а на то, чтобы программировать, здоровье закончилось.

Так задачи же легкие(в 1, правда, лень разбираться), надо просто теорию знать. Теорию выучить любой может, а вот научиться решать сложные задачи — нет

литкод — это способ малолетнему интервьюеру и/или пафосной конторе потешить своё чсв, поунижав опытного 35-летнего кандидата.

вас на собеседованиях унижают?

не, у меня всегда максимально были адекватные собесы по части ADS, когда речь вообще заходила.

1 и 2 ответил бы лет 10-12 назад. С тех пор я уже ТГКП просто не вспомню без предварительных вечеров листания лекций. я с трудом-то помню чем отличает поле от кольца (а это вообще базовая база)

К реальному программированию не имеет прямого отношения

Наоборот, литкод — это программирование в чистом виде.
Вы путаете программирование и software engineering. Программирование — это сиюминутный акт написания кода. И литкод здесь является отличным источником сигналов для интервьюеров.
А software engineering — это программирование интегрированное во времени. Ещё хорошее определение: Software Engineering is a Multi-person Development of Multi-version Programs. И вот к этому литкод действительно имеет очень отдаленное отношение. Но для этого есть другие раунды, такие как System Design и Behavioural с упором на [engineering] Leadership.
Ещё литкод отлично скейлится на крупные организации.

Это «домашняя работа», чтобы оценить насколько человек может разобраться в незнакомой сложной теме

о, давно не было, нормальное пятничное.

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

IMO превозносят ибо это:

1. problem solving skill. (зачем ты нужен без него, тряпка?)
2. алго-задачки это рандомный пример часто не имеющий ничего общего с реальностью задачи, которой ты как бы не должен знать, и даже может и не обязан решить, но должен показать интервьюеру как ты мыслишь в таких условиях, как приходишь к решению проблемы к которой не знаешь решения с ходу.
3. хорошо отсеивает аггрящееся, консервативное б😂дл0 :)

Странно что никто о полезности систем дизайна не спорит 🤔

То есть, ты сам признаешь что Литкод не нужен в релально жизни, но мы будет его спрашитвать, потому что...
ЭТО МОДНО!
И так делю FAANG.

problem solving skill

Ну мы же все знаем что это никакой не problem solving skill люди тупо решают по 500-1000 задач, и заучивают наизусть решения.

Ну мы же все знаем что это никакой не problem solving skill люди тупо решают по 500-1000 задач, и заучивают наизусть решения.

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

ЭТО МОДНО!

это лучше чем считать сколько шариков в автобусе поместиться, более приземленное. В моем понимании алго-задачи это акцент на проверить как мыслит, а не получить вылизанное решение за O(1).

В компанию где работаю была изи + хард, решил только изи, и то плохо, хард проговорил частично, этого хватило для оффера.

В компанию где работаю была изи + хард, решил только изи, и то плохо, хард проговорил частично, этого хватило для оффера.

Видимо просил 5к какие-то, столько и без Литкода дадут, а ты попробуй 500к в год попроси.

это лучше чем считать сколько шариков в автобусе поместиться

А нормальное интервью по фремворкам, базам данных, облокам и многопоточности, не вариант провести?

А нормальное интервью по фремворкам, базам данных, облокам и многопоточности, не вариант провести?

было во второй части интервью

Ок. По аналогії. Є крута команда технарів, які по кресленню можуть зібрати ракету і доставити людей на Марс. То по вашій логіці нахріна тоді НАСА тримати армію вчених/фізиків/теоретиків/математиків? Не вони ж будують і запускають)))

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

Только нет ни йоты объективности в параллельном мире бюрократизма.

Опытные, крутые специалисты могут вообще не решить Easy задач по массивам.

Я таких немало індусів бачив. Але сорі, спєца який не знає шо таке масив, я би крутим не назвав ніколи :(

Щодо літкоду, пару разів коли було впадло сильно довго думати, я там сюжети задачок підбирав на тренінги. Потім жостко м-м-м жив із студентами (хоча до верхніх 20% і не належу :8)) ) за те, що розв’язок був тупо копі-пасте з сайту :( Кстаті, аналогія з тестами на IQ виправдана: літкод може натренувати стандартні підходи до розв’язку певного класу задач, аби використати навички на тестах-співбесідах ... не тільки мені буває впадло довго думать :8)

Насправді, якщо копнути продукти фаангу поглибше, то на якомусь рівні літкод в них таки є. Без літкоду ваш плеєр Спотіфая не почне грати пісню протягом 200 мс від кліку по кнопці Play (а така у них внутрішня вимога). І те саме з відео на Нетфліксі, з пошуком в гуглі. Ваш браузер під капотом містить всі алгоритми літкоду (і ще в 10 разів більше) щоб працювати так швидко, як він працює. Ви скажете «та все одно 9 з 10 людей в тих фаангах займаються не цим» і будете праві. Але фаангам потрібно все ж знайти і ту одну людину з 10, яка зможе і це.

Как именно сортировка массивов поможет заиграть песню за 200мс?
Для этого вообще-то нужны кеши и георепликации в разных точках мира.
Ну и хорошие стабильные интернет каналы, от разных провайдеров.
Где ты блин сдесь увидел сортировку массивов или обход деревьев?
Тут все тупо инфаструктуры и архитектуры касается.

Алгоритмы сжатия данных, к примеру

А их обязательно писать с нуля за 20 минут?
Готовых библиотек нет?

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

это аудио там объемы копеечные.
скорее как писали выше — больше эдж локаций ближе к слушающим и кешинг-кешинг-кешинг.
те если у тебя 50 мс до точки выдачи(раундтрип 100) то тогда тебе осталось еще сто на тлс инкапсуляцю(ну пусть 20) и потом 80 на выдачу.
играть алгоритмами можно пожалуй только выдавая из кеша сразу всю фонотеку в пониженном битрейте и параллельно вытягивая уже лучшее качество и потом переключать на него .
я думаю там примерно так все и работает.

Сейчас придут деды, и расскажут что ты веб макака, а алгоритмы сортировки это самое главное.

Особессно смешно когда свидетели фулстеков начинают спрашивать про сортировки в JS (где написать кастом-сортировку в обход [].sort() можно только через два велосипеда с тремя костылями)

Та все врно, но чел который это все может оценить, нйти где конкретно затыки, и пути их исправления — чтобы не мог изи задачу на реверс строки решить ?

От бачите, Ви думаєте, що Спотіфай працює лише на кешах та геореплікаціях. Але він працює не так. Першу версію стрімінгу спотіфая написав автор uTorrent (вони навіть купили його для цього). І була то окрім кешів та геореплікації, ще пірінг-мережа. І от той хлопець на всякому там «літкоді» був просто помішаний (ну, ви ж пам’ятаєте перший uTorrent — 50 кб на весь клієнт включаючи UI і дикий перфоманс — це вже потім він скотився).

Пиринг сеть быстро выдает вот только беда в том что вначале нужно понять что где есть. Это не 200 мс. Далеко не 200. Или ты предлагаешь постоянно держать уже на клиенте данные о пирах под всю фонотеку? Еще и мобильных которые вполне могут резаться операторами .
В общем. Кеши дают более прогнозируемый результат.
Я допускаю что сами кеши там были с пирингом чтоб экономить в эдж локациях место в памяти. Типа кеш знает куда идти за любой песенкой. И по итогу лежит оно только в локациях где слушается, а после вытеснения из кеша и перезапроса — знает кеш где быстрее взять.
Я понятия не имею как работает спотифай, могу только предполагать

Я тебе тоже такое напишу, одно дело за 20 минут радномную задачку решить, другое знать алгоритмы и структуры данных и использовать их там где надо.
Ну вообще ты вспомнил конечно, ты бы еще первую версию MS-DOS вспомнил, и сделал вывод что надо ассмемблер и чистый C сейчас всем знать.

Как именно сортировка массивов поможет заиграть песню за 200мс?

Наприклад, в тебе є перелік у 30 млн. композицій. Користувач вибрав shuffle без повторів. Тільки обрати наступну композицію з використанням brute force буде майже завжди більше за 200 мс.

Я конечно не сениор спотифай литкод энжинир, но эта задача решается по-моему за 1 миллисекунду. Хранить список уже воспроизведенных треков и далее бьешь рандомом в число от 1 до 30 млн. Ударив смотришь в свой локальный кеш. Если не нашел вставляешь новый трек и включаешь его проигрывать. Если уже играло, бьешь рандомом ещё раз, пока не попадешь в новое для себя место.
Расчет показывает, что когда на твоём плеере проиграется 15 млн треков, эффективность алгоритма упадет примерно в два раза. До 2 мс.

Хорошо, но есть нюанс
1 чтобы отображать плейлист придется делать О(n) вызовов рандома, сумарно или на размер скрина(понты), да, 15 млн, даже 100 треков не помещаются на скрин и педжинг помогает оч хорошо, но теперь у тебя доьавился функционал обхода коллекции не просто через массив а через кастомную абстракцию с вызовом генератора рандомных числе(тут в дотнете хорошо помогает гет энумератор и эанмерабл интерфейсы и делает это практически не заметным для пользователя коллекции но нужно понимать что простую коллекцию уже использовать надо аккуратно(нужны тест кейсы, дом документация)).
2 кнопка — сохранить/экспортировать плейлист делает сложность алгоритма O( n) и никаких 1-2 мс уже нету.
Хотя генерация массива через рандом все еще дает не плохую сложность, всего O(n), сортировки обычно(если вообще не всегда, не помню уже точно) больше сложность имеют, главное локальный кэш не забыть сделать через хэшмап/дикшенари.

плейлист делает сложность алгоритма O( n) и никаких 2 мс уже нету.

Сформировать лист на 100 уникальных треков из 30 млн композиций за 2 мс это даже с запасом. Любой бенчмарк это подтвердит, мне даже лень садится за клавиатуру.

На компе с 8 ядрами и 32 Гб, охотно верю, на последних поколений айфонов, тоже верю, на очерендом ксяоми уже вопрос, хотя сотку я думаю вытянет, а вот если тысяча — хз :-)
Ну и шафл обычно применяется уже на сужествующий плейлист, у меня полно плейлистов где треки исчесляются сотнями а не 100 шт.

А вообще твой подход к вопросу показателен тем что ты ухватываешься в частный кейс и милисикунды, такое бы уже точно нехило скинуло бы тебе балов как программисту вообще, нежели комплексный подход к алгоритму и функционалу, я например сразу написал и про сложность не привязваясь к четким размерам типа 100шт и абстракции, и юай, и даже тестирование...

Как же ты далек от практики.
Вот я тебе на пальцах посчитаю. Поскольку задача близка к хештаблицам. Возьмём количество треков не как 30 млн, а 4.2 млрд. А в качестве дикшинари будет HArrayInt который легко успевает вставить 20 млн ключей в секунду, с проверкой на уникальность. Поскольку первые 100 ключей из 4,2 млрд будут почти 100% уникальны, коллизиями можно пренебречь, но пускай их будет 100%. Это рояли не играет.
Получается вставить 100 ключей с проверкой на уникальность это
(100*2)/20 000 000. Получается 0.02 мс + что-то на генерацию самого рандом числа. Ну пускай 0.04мс.

А вообще твой подход к вопросу показателен тем что ты ухватываешься в частный кейс и милисикунды

Слухай ну я понимаю что формошлеп это твой майндсет, но всё-таки когда тебе цифру приводят ты уже как-то должен соображать.

Ну пускай 0.04мс.

Можешь эту цифру умножить на 10 потому что вместо 100 треков у тебя ухи не отпали прослушать 1000 треков, можешь разделить мощность проца на мощность нокии 3310, но все равно получишь задержку которую сложно распознать человеческим глазом. На этом интерес к этой задаче у меня исчерпался.

Как-то ты аж сам по себе порвался, быстро довольно, хоть я тебе особо ничего и не писал. Страеешь :-)))

Ну а что я должен был написать, когда тебе написали про ожидаемое время подсчёта задачи в 0.04 миллисекунды, а ты там что-то блеешь про свой длинный список воспроизведения музыки или то что у тебя трубка ксяоми без 32 ядер процессора. Я стал нетерпим к формошлеперам.

Жаль что ты до формошлепера даже не дотягиваешь. Ни в понимании сложности алгоритмов ни в тем более в сис дизайне ибо даже захудалый рест и тот в такое овно извращаешь шо просто капец ... :-)

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

Ты знаешь эту притчу, про завод, рабочих и рационализатора, который пытался продать станок на завод, станок заменяет десять рабочих ? Сначала рационализатор пошел к рабочим. Рабочие лудиты его естественно захейтили. Логика тут понятна, как это, мы учились учились а теперь станок заменит десять рабочих. Потом рационализатор пошел к директору завода. И тот как раз все хорошо посчитал и купил станки. Смысл в том, что рядовую формошлеп-макаку вроде тебя не будут спрашивать, нужен рест или не нужен. Если выкатят технологии, которые заменяют десять рест фул апи макак, большие дяди купят это и внедрят.

Вообщем ты понял свою роль в этой дискуссии, рест или не рест.

Нет, я тебя не понял, по в который раз убедился что ты нуб :-)

У меня нет мотивов, чтобы ты что-то начинал понимать. Вот даже про миллисекунды, ты понимаешь фактически что оно так и будет работать. И тебе разжевали уже всю сложность алгоритма. Осталось тебя разве что тыкнуть носом в пятистрочный бенчмарк. Но, как я говорил, смыл луддита в луддизме. Другими словами луддит не будет признавать станки даже если они у него будут стоять перед носом и производить за день деталей больше чем луддит собирался произвести за месяц.

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

Так ты чушь написал про сложность О(n). Сложность там O(1). Именно столько занимает, чтобы выбрать следующий неповтояющийся трек рандомом. Даже если тебе спотифай показывает первую страницу в 10 рандом треков из 30 млн это все равно О(1), поскольку N=10 это тоже константа и не коррелирует с количеством треков.

А ты прочитай мой комент внимательно.

Какие дополнительные условия? 2 хештейбла (для репита) — неповторяющийся «рандом». Сложность линейная. Отыгравший трек уходит в «резервный» хештейбл. Потом меняешь хештейблы местами. Есть риск повторения двух подряд, который нивелируется очередностью удаления/добавления. А «через 1» вполне себе вписывается в понятие «случайно». Ну и шанс такого там будет приемлем

Из HashTable за константное время нельзя выбрать рандомное значение.

Если ты имеешь в виду сам алгоритм — то да, сорри не учел его. Там в лучшем случае линейное, а не константное время, если нам не надо удовлетворять NIST/FIPS критериям. Если еще что-то упустил — не стесняйся, указывай :)

Я имел в виду что держать 2 таблицы и брать/добавлять/удалять в них значения можно, в принципе, за линейное время.

Сам алгоритм рандомизации — уже немного отдельная штука

Смысл в том, что рандомное значение берется за константное время в очень грубых алгоритмах (хотя зависит от того, что брать константным).
Если представить варианты как массив 0...INT_MAX
То я бы это все же назавал константным временем за которое работает псевдорандомизация. Проблема со мной — я не вдавался в реальную сложность этой операции. Поэтому только предполагаю. По сути нам не надо настоящее случайное число — мы берем сисклок для этого и модуль его за константное опять же время. Потом берем из массива число по индексу.

Олсо хешсет в таком случае не нужен — достаточно массивов.

Это рояли не играет.

А, так ты на рояли набираешь код? Ну тода все ясно ))))))))))
Чем именно ты набираешь код на рояле плиз не пиши, хватит с меня мемов зелибобы :-)

Чем именно ты набираешь код на рояле плиз не пиши

Явно не руками он набирает код на рояле :-)

Та еще проще можно, рандом по тем трекам что в кеше.

Ток функция шафла листа есть в джавах из коробки (думаю в остальных дотнетах, жабаскриптах тож). Так что «литкод» не понадобился.

И где тут сортировка массивов? Тут опять узкое место будет база или сеть. Надо же просто достать одну песню с базы, как можно быстрее передать юзеру.
Нет миллиона песен которые надо сортировать.

В youtube music недавно шафл хреново работал даже на юзерских плейлистах в пару тысяч треков.

Причем физическая инфраструктура вероятно готовая.

як так?
prnt.sc/23ovmm8
gmail в їх рідному браузері має показувати кращий результат, ні?
перформанс 48 то якесь дно.
"

браузер під капотом містить всі алгоритми літкоду

" якихось таки не вистачило.

prnt.sc/23wh962 навіть не алгоритми літкоду. Хром, Гугл мітс

Только youtube music все также имеет проблемы с кешированием, периодически перестает подгружать треки (при наличии инета), временами заикается и подвисает.
А рекомендации нетфликса — это трындец. Как будто у них вместо шайтан алгоритмов применяюся хомячки, бегающие по тумблерам.
В гугле часто вся первая страница забита кривыми клонами StackOverflow.
А 200 мс это вообще офигеть сколько времени. Если конечно не писать на Electron говне.

Ваш браузер під капотом містить всі алгоритми літкоду (і ще в 10 разів більше) щоб працювати так швидко, як він працює.

І з кожним роком все швидше, швииииидше, швииииии....и......и..

Одразу видно, що їх по літкоду понабирали. І не тільки писак браузерів, скільки ЖабаСкриптерів.
От скажи мені, якщо ти провів багато часу на літкоді, ти взагалі бачив там деструктори? Ото ж бо. І не побачиш. Бо звідки теоретикам знати про реальність, в якій треба працювати програмам.

Когда-то прорешивал задачи на хакерранке для интереса. Бесило что решение на котлине не проходило все юнит тесты, когда аналогичный код на джаве проходил (код и логика 1 в 1). И версия котлина была старой. После этого забросил всю эту ерунду.
Ну а вообще все эти литкоды чистой воды скэм, квалификацию специалиста они не покажут, лишь только навык проходить такие «собеседования». Потом такие «спецы» роняют фейсбук с инстой из-за элементарных ошибок

1) Десь там в теорії між «навичками літкода» і вирішенням реальних продуктових задач є кореляції (не причинно-наслідковий зв’язок). На об’ємах, якими наймають фаанги, якщо кореляція дійсно є — це може допомагати. Звісно, якщо компанія наймає 5 людей на рік, такі кореляції не дуже важливі.
2) Простота стандартизації, мінімум суб’єктивності. Такі задачі вже 100 разів розібрали, і інтерв’ювери знають, чого їм очікувати, що є позитивним сигналом, що негативним. Якщо в компанії 5000 людей проводять співбесіди, кожен сам щось видумує, то зрозуміти, де в нас «планка» для найму буде дуже важко.
3) «Чесність» для спеціаліста. Задачі достатньо абстрактні, їх має бути нескладно зрозуміти, виконання такої задачі не вимагає якихось попередніх знань, окрім знань алгоритмів і обраної мови — тобто того, що має бути в кандидати по дефолту.

Тобто такий підхід непогано може працювати, якщо ви наймаєте людей сотнями і тисячами на абстрактну позицію «програміст», але не дуже працює, якщо ви маленька компанія (у вас 1-2 людини проводять співбесіди, не на потоці, і вони можуть нормально подивитись на кандидата і оцінити його індивідуально по вимогах конкретної позиції), або якщо ви наймаєте людину на специфічну позицію навіть у велику компанію (якщо ви берете керівника нового підрозділу, який має сам написати основи, і потім розвивати компонент, управляючи розробкою і набираючи нових людей)

у вас 1-2 людини проводять співбесіди, не на потоці, і вони можуть нормально подивитись на кандидата і оцінити його індивідуально по вимогах конкретної позиції

У Канемана в Thinking, Fast And Slow есть на эту тему отличный пример из его опыта хождения по граблям (перескажу по памяти, может немного неточно). Эн лет назад его — уже авторитетного психолога с именем — и еще ряд «тяжеловесов» наняли чтобы разработать систему отбора будущих офицеров для израильской армии. Ну они и разработали — опираясь на свое «знание человеческой психологии» — систему которая включала в себя экспертные оценки основанные на наблюдении за поведением... Позднее оказалось, что их система слила в одни ворота банальному формальному тестированию (хорошо проработанному другими специалистами). Мораль сей басни: люди систематически переоценивают свою способность объективно оценивать других людей (их характеристики, мотивацию, скиллы, ...).

да, цілком можливо. Я більше мав на увазі різницю між пошуком «конкретно того, хто вам потрібен на конкретну позицію в конкретній ситуації» і «робота різна, її вистачить всім, головне створити однорідний процес відбору»

сейчас вокруг призыва в айти подразделения кормится целая индустрия которая прокачивает любого идиота пройти тесты и попасть в нужное подразделение типа потом айтишечка и зепешечка.
по этому поводу уже шквал критики и статей на местных ресурсах.

Так это не потому что метод плохой, а потому что рынок адово перегрет.

сейчас вокруг призыва в айти подразделения кормится целая индустрия которая прокачивает любого идиота пройти тесты

Ніт ©

да брось , даж Хаарец и еще пару газет писало об этом.

В тебе діти відбір в IDF проходили? Бо в мене так.

думаю и не будут :)
но это не отменяет всего написанного в местной прессе.

Почему то большая часть комментаторов забывает что литкод задачи лишь одна из частей интервью, которая лишь определяет прошел ты дальше по флоу интервью или нет, уровень обычно определяет системный дизайн(уже более прикладное на мой взгляд придумать сложно) и поведенческое интервью(где внезапно желательно иметь лидершип опыт). Конечно это не гениальные Украинские интервью в стиле назовите все скоупы джава бина или опишите как работает класс лоудер, или лайфсайкл бина, но что поделать, все же и так знают что украинские сеньоры самые сеньористые сеньоры)

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

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

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

Литкод тупо развивает проект спамом. Притом с оголтелым популизмом и кликбейтом вроде «домохозяйка полгода литкодила и стала главной простибабой лосанжелеса».

Полезности для программирования — ноль. Если и есть какая-то польза, то вы больше времени угробите, чтобы её найти. То есть, всё что вам надо для работы, гораздо быстрее освоите без литкода. Литкод — это всё равно что учиться вождению автомобилем с клавиатуры, с предопределённым неудобным управлением, выполняя задачки «как завести москвич без ключа».

Про ФААНГи — а кто вам об этом сказал? Не из спама ли, поддержанного комментами их же СММщиков вы об этом узнали?

PS. IQ-тест бесполезен. Я имею IQ 200 — но те, кто имеет IQ 80 ничем не хуже меня. А вот те кто едва набрал 120, сейчас с пеной у рта полезут доказывать, что я типа столько набрать не могу. Чем лишь докажут свои низкие софт-скиллы. Примерно то ж самое с длиной члена — я нахожусь в верхних 20%, но я ж не лезу этим хвастаться. Или это тоже сейчас в ФААНГах оценивают?

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

Эмоциональный интеллект — он такой :)
PS. Максимум 150. 160 есть только в кликбейтных «тестах», нужных чтобы вы авторизовали хотелки их приложений (спамить, разумеется) в ваших экаунтах соцсетей.

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

Это не совсем так. Эффект «волосатой руки» — не слышал про такой? Художники им пользуются, особенно рекламисты. Есть клиенты, которые считают целью в жизни до чего-то добебаться, притом до вещей правильно сделанных. И вот для них персонажу делают волосатую руку. Тогда клиент добебается до неё — это легко исправить, и никаких проблем с основной работой. А ведь ещё в те времена, когда всё на бумаге делалось, правки стоили время-денег, вплоть до полной переделки.

Так и здесь: я дал к чему прикопаться, оставив за кадром конфликта основную мысль. У гуманитариев тоже есть свои темплейты проектирования, которые грех не позаимствовать :)

Кстати, насчёт тестов: То, что IQ устаревший, знают не только лишь все. Но почему тогда не сделали ему замену? Правильный ответ: чтобы не нарушать порядок вещей. IQ — это бренд. И если так случится, что его сдвинут с пъедестала идола, можно ждать и более серьёзных перемен. Например, ухода от JavaScript в вебе.

IQ тест это отдельная интересная тема но тут вроде про литкод

учиться вождению автомобилем с клавиатуры, с предопределённым неудобным управлением

А ещё нету автомобиля для Vim-еров?

Я думаю у фаанга на столько свой тулинг что им просто нечего спросить кроме вот таких вот литкод задачек.
Те просто проверить умение учиться и адаптироваться под требования и гибкость мышления.

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

Литкод — не про умение учиться. Строго наоборот. Он про зубрёжку. А память — враг креативности, то есть люди с хорошей памятью — очень медленно соображают над сколь-либо нестандартными задачами. С очень хорошей — имеют трудности в общении. С практически идеальной — аутисты. И шансы уделать их в литкод у вас минимальны.

А что там зубрить? Решение каждой задачи? Вроде и догадаться не сложно...

Ну-ну. Поверь, спрашивать будут не про красно-чёрное дерево.

Ты осилил зубрёжку мусора? Ну давай, расскажи универсальный способ поменять 2 переменных местами, не используя третью.

Во-первых: зачем?
Во-вторых: а как? (через суммирование что ли?)

Через XOR. Практической ценности не имеет. Разве что проверить что человек понимает что такое «исключающее ИЛИ»

А не сложно будет накидать? Хотя могу загуглить. У меня первая мысль:

var a = 1
var b = 2
a = a+b
b = a-b
a = a-b

rust.godbolt.org/z/1z5vbYcjG

Ассемблерный листинг намекает почему таким анонизмом заниматься нет смысла и нужно писать по человечески через временную переменную.

Во-первых: зачем?

йеп :) Компиляторы, сколько я их помню, все время умнее меня
спасибо за ксор вариант

godbolt.org/z/MTKx95zvx

Вопрос со звездочкой: почему такой же точно код на C добросовестно делает честный XOR?

Уточни компилятор на всякий? А то потрачу время, чтобы увидеть что шланг таки компилирует нормально.
gnu, ок. отличная задачка для меня — давно этими вещами не занимался

gcc. На том сайте можно выбрать clang или другой компилятор из списка.

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

как раз хотел ометить, шо си и фортран делают настоящий ксор, а соткудова єтот ваш руст вытягивает своё видение?

таким анонизмом заниматься нет смысла и нужно писать по человечески через временную переменную

Разумеется. И не потому что ассемблерный листинг, а потому что код должен в первую очередь читаться. И доплатить за это несколькими байтами — вообще не вопрос. И десятка мегабайт не жалко — сколько они сейчас стоят в деньгах-то?

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

Это как «почему люки круглые». Не круглые они. Абсолютное большинство люков — прямоугольные. Круглые — дороже.

Абсолютное большинство люков — прямоугольные.

Это какой-то прикол? Не понял в чем смысл.

В вопросе собеседований подразумеваются люки на тротуаре или дороге (manhole). А они почти всегда круглые. О существовании люков другой формы узнал только сейчас, погуглив :-)
P.S. Кстати, еще чего нагуглил по этой теме. Когда-то попадалось видео как машина «взлетает» напоровшись на вылетевшую из люка крышку. Оказалось, не такое уж редкое явление — www.youtube.com/watch?v=Q-9dKcgIank

Проблема ж не в люках. А в том, что на любой «на смекалку» вопрос есть ответ — простой, элегантный и неверный. Верные ответы по люкам — результат инженерии. И допущенных ошибок. Которые, кстати говоря, продолжают допускаться — если смотреть с позиции оптимизации.

PS. Спасибо за ещё одну фобию

Единственная проблема этого трюка не в том, что Пение не поймет код, а в том, что он не дает преимущества по перформансу. Если бы преимущество было, он должен быть в коде.

И доплатить за это несколькими байтами — вообще не вопрос. И десятка мегабайт не жалко — сколько они сейчас стоят в деньгах-то?

Десяток мегабайт в L1 кеше, например, ты не получишь за любые деньги мира.

Как раз ТАКОЕ тебя не спросят ни на Литкоде, ни тем более на собесе в украинских конторах. Здесь чтобы 2+2 сложить напишут телегу из 6 операция по StreamAPI, потому что это модно.

Если же мы говорим о высоконагруженном коде — то извини, он должен комментироваться. Но даже там НЕ ПРИМЕНЯЕТСЯ замены местами 2 переменных без использования третьей. Где будет это место хранения — это уже отдельная история, на собесе тебя про регистры не спросят, поверь.

Но нужно помнить одну мелочь, сущий пустячок: никакая цифра не застрахована от ошибок. Лишняя операция — лишняя генерация ошибок + лишний разогрев вычислительного узла. И если операцией ХРАНЕНИЯ можно заменить операцию ВЫЧИСЛЕНИЯ — это нужно сделать.

А +10Мб будет максимум на всю программу, притом львиная их доля — в малоиспользуемом коде. И чаще всего, речь не о десятках мегабайт, а о сотне-другой килобайт.

PS. Замена местами 2 переменных — операция редчайшая. Чаще идёт классическое присваивание, без изысков. А переменные под него создаются новые.

На SO писали, що ніби як swap можна в 1 машоперацію всунути, і на x86_64, і на arm. Але не перевіряв.

Може й так. Але спробуй ЗНАЙТИ, як часто це взагалі потрібно? Особисто мені ще жодного разу не знадобилося.

Воу... Так згенерований asm неправильний же.

Ну тобто код на расті неправильний swap, бо не повинен працювати коли ти передаєш одне і те ж значення: протрасіруй вручну swap(x, x) в тому варіанті як він написаний і побачиш, що замість того, щоб нічого не змінилось змінна x обнулиться. Власне це ж одна з проблема цього трюку — він не працює коли змінна одна і та ж. Тобто якщо &x == &y, то перший же xor обнулить саме значення. А згенерований asm код чесно міняє місцями і swap(x, x) дійсно нічого не міняє, замість того, щоб обнулити x.

pub fn swap(x: &mut u32, y: &mut u32) {
    *x = *x ^ *y;
    *y = *y ^ *x;
    *x = *x ^ *y;
}

&mut это эксклюзивная ссылка на значение, которая не может иметь алиасов (сделать swap(x,x) компилятор не позволит). Это знание позволяет компилятору делать такую оптимизацию. Welcome to Rust.

В случае с C в общем случае такая оптимизация была бы нелегальной по причине, которую ты описал, поэтому он должен делать честный XOR.

Я не знаю, можно ли в C пометить указатели как не имеющие алиасов. Но в тех случаях когда компилятор C может доказать, что ссылки не алиасятся, он сделает подобную оптимизацию, например godbolt.org/z/af91YsGzo

&mut это эксклюзивная ссылка на значение, которая не может иметь алиасов (сделать swap(x,x) компилятор не позволит). Это знание позволяет компилятору делать такую оптимизацию. Welcome to Rust.

Прикольно, але тоді це чітінг, бо означає, що ти не можеш зробити swap(a[i], a[j]) в, наприклад, сортіровках. Чи я щось упускаю? Якщо не упускаю, то толку-то з такого кастрованого swap’у?

Прикольно, але тоді це чітінг

Одни говорят «лайфтаймы раста позволяют делать оптимизации, которые обычно невозможны в С/С++», другие говорят, что «это читинг», ок.

бо означає, що ти не можеш зробити swap(a[i], a[j]) в, наприклад, сортіровках.

Да, для обмена элементов местами в массиве нужно юзать специальный swap: doc.rust-lang.org/...​ve.slice.html#method.swap

Якщо не упускаю, то толку-то з такого кастрованого swap’у?

Кастрированность состоит только в том, что мой swap работает только с u32 (или вообще с типами, по которым можно сделать xor если я заморочусь).

У библиотечного swap, который может работать с любым типом, аналогичная сигнатура и ограничения

Да, для обмена элементов местами в массиве нужно юзать специальный swap: doc.rust-lang.org/...​ve.slice.html#method.swap

Ну так а якщо мені треба поміняти місцями не два елементи в одному масиві, а два елементи в двох різних масивах, то треба ще якийсь третій swap шукати?

Ну або якщо є дерево з вузлами визначеними так:

struct Node {
  Node *left, *right, *parent;
  ...
}
то (абстрагуючись від того, що тут вказівники, а не u32) я не зможу зробити swap(left, right), так?
Ну так а якщо мені треба поміняти місцями не два елементи в одному масиві, а два елементи в двох різних масивах, то треба ще якийсь третій swap шукати?

Для использования обычного swap тебе нужно две эксклюзивных ссылки. Как ты их получишь — это никого не волнует.

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

В случае структуры, если у тебя есть эксклюзивная ссылка на структуру, ты можешь получить по одной эксклюзивной ссылке на каждое из полей этой структуры. Это называется split borrow — doc.rust-lang.org/...​con/borrow-splitting.html.

Получить эксклюзивные ссылки из одного массива невозможно.

Во-первых, нельзя на этапе компиляции доказать, что swap(a[i], a[j]) не попытается получить две эксклюзивные ссылки на одну и ту же область памяти (что большое но-но в расте, и ведет к неопределенному поведению, пожизненному изгнанию из раст комьюнити), потому что неизвестно что будет лежать в i и j.

Во-вторых, даже если делать swap(&a[1], &a[2]), нельзя доказать, что внутренности реализации разных смарт контейнеров типа вектора гарантируют, что элементы по индексу 1 и 2 — это разные элементы. Т.е. по логике это должны быть разные, и они и есть разные, но в это в стандарте не прописано, и кто-то может запилить свой контейнер, в котором будет по-другому.

В-третьих, даже в случае с обычным тупым статическим массивом и константным индексом, где это в теории было бы возможно, но эту фичу, увы не запилили.

В общем, суть в том, что эксклюзивные ссылки на разные элементы в одном контейнере — это особый случай и для этого нужен специальный метод. Для разных контейнеров все работает из коробки.

Split borrow есть и для массивов (слайсов) — doc.rust-lang.org/...​.html#method.split_at_mut. Позволяет разделить один слайс на два слайса по определенной границе, и тогда на в каждом из слайсов можно иметь эксклюзивную ссылку, но для обмена двух элементов это мягко говоря не то, что хотелось бы использовать.

Я не знаю, можно ли в C пометить указатели как не имеющие алиасов.

restrict

godbolt.org/z/hbaso8WxW

error[E0499]: cannot borrow `x` as mutable more than once at a time   --> swap.rs:12:16    | 12 |   swap(&mut x, &mut x);    |   ---- ------  ^^^^^^ second mutable borrow occurs here    |   |    |    |   |    first mutable borrow occurs here    |   first borrow later used by call error: aborting due to previous error; 2 warnings emitted For more information about this error, try `rustc --explain E0499`

РОБЕ!!!! Ну, тобто не робе — тобто робе.

Артем уже запостил решение. ))

Да, спасибо ему :) Еще и на завтра задачку подкинул

var a = 1
var b = 2
a = a+b 
b = a-b
a = a-b
Это прекрасно. А теперь, внимание вопрос: а какова читабельность такого когда? Вообще-то, языки программирования нужны для того, чтобы код легко читался, а не только писался. Потому что код без ошибок не пишет никто.

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

Нинзя-кодинг является преступлением. И по головке за такое не полгадят.

Такое дерьмо любят подсовывать на собесах, и когда говоришь, что эту лапшу надо рубить на код ревью и заставлять переписывать особо упоротыми интервьюверами не берется в ответы )

Дело не в лапше, а в том, что существенные для логики операции не имеют смысла для человека. И при прочтении ты должен понимать, ЧТО они творят и ЗАЧЕМ. То есть ты не просто должен знать способ поменять, ты должен знать ВСЕ способы, включая самые экзотические, и опознавать их при чтении, и даже уметь взглядом тестировать на ошибки — которые обязательно случатся.

А теперь давайте-ка дадим этот код другому программеру (как правило, джунов на это подпрягают) и дадим «простенькую» таску — покрыть код тестами. Как думаете, справится? (Ответ из 3 букв). А ведь некоторые это дерьмо и в тестах пишут.

Кратко: компьютер это может сделать, а вот мозг — нет. Продуктом всякий раз будет непостижимый код. И в лучшем случае — должным образом откомментированный.

a ^= b;
b ^= a;
a ^= b;
або в 1 рядок:
a ^= b ^= a ^= b;

вдогонку: a і b повинні бути різними змінними.

расскажи универсальный способ поменять 2 переменных местами, не используя третью.
Во-первых: зачем?

И это правильный ответ. Вопрос в том, ЗАЧЕМ это дерьмо считается что все должны знать. Которое раньше использовалось только для демонстрации понтов. Это всё равно, что требовать жонглировать 6-ю предметами от грузчика на склад с гранатами. И потом скулить «ай, почему грузчики так дорого хотят».

Во-вторых: а как? (через суммирование что ли?)

Никак. Никак этого не нужно делать. Наоборот, нужно гарантировать, что маразма будет как можно меньше, и что избыточность передачи и хранения сохранят данные. Вы просто не застали цифровой революции, в которой победила именно ИЗБЫТОЧНОСТЬ.

Сейчас цифра используется даже при передаче фактически аналоговых данных даже на метр. Казалось бы, зачем. А вот зачем: цифру легко контролировать и доказывать, чья вина в потере сигнала — при том что каждая собака на каждом коннекторе пытается максимально снизить качество. Говённейшие кабеля с проводниками 10 Ом/м — уже классика, хотя каких-нить 20 лет назад за это отправили бы на корм рыбам. Зато этот метровый шнурок стоит 5 долларов. Там где аналоговый бы стоил 20 центов.

Поймите, мы работаем в индустрии говна. Из говна при желании можно сложить даже икебану, но потребителям говна нужны не икебаны, а говно.

Я так понял ты с Калифорнии пишешь?
Он хоть свое время не тратил, а ты задрачивал, но в FAANG так и не поехал.

На интервью дают абстрактную проблему, чтобы оценить:
1. Адекватность.
2. Способность общаться.

Бывают люди на интервью, которые не понимают что такое массив вообще (или явно не понимают ООП). Бывают люди, которые начинают огрызаться, когда показываешь что в их коде есть баг (или когда указываешь на edge case).

Я не могу решить балансировку дерева и кучу других литкодовых задач. Жить не мешает. Просто надо понять что «собеседование» — это беседа а не экзамен по CS. Незнание решения (или неправильное решение) на исход собеседования (* в адекватной компании — про дикие стартапы не знаю) не влияют.

Незнание решения (или неправильное решение) на исход собеседования (* в адекватной компании — про дикие стартапы не знаю) не влияют.

Та камон, куча историй что если не решил за 30 мин, то навыход сразу.

Никакая компания не объясняет почему человека не взяли. Когда люди думают что их не взяли потому что они не решили за 30 минут — на самом деле обычно проблема в другом.

В амазон з їх потоком людей навіть не читатимуть пояснення якщо не вирішені задачі.

Про Амазон не знаю, но в тех компаниях что знаю нет в фидбек строки решил/не решил. Есть — соображает/не соображает, дружелюбный ли и т.д.

Хорошая попытка, «никакая» компания. Этим вы отличаетесь от нормальных компаний. У вас и ТЗ так написаны, что ничего не объясняют. Про контракты вообще молчу.

Залежить від позиції. Не всіх беруть як синьйорів. Якщо ця позиція джуніора і кандидат не вклався в 30 хвилин (але був на вірному шляху і все правильно пояснював), то чому його не взяти?

Или это как тест IQ в мире программирования?

По сути да. Логика использования таких задач для собеседования близка к идее IQ тестов.

Мені здається, що цінність таких завдань тим менша, чим вища позиція та рівень відповідальності кандидата.
Навряд чи такі завдання будуть задавати лідам, тому що для них головне вже не мислити за шаблоном, а навпаки, мислити нестандартно.

Я, и другой архитект(который продумавал архитектуру для 100 человек) не могли чекнуть строку на полиндром.
Видимо нам надо было на джунов ити.

python

>>> a = "ababab"
>>> b = "abababa"
>>> a == a[::-1]
False
>>> b == b[::-1]
True

або поржати

>>> all(e[0] == e[1] for e in zip(a, reversed(a)))
False
>>> all(e[0] == e[1] for e in zip(b, reversed(b)))
True

є підозра, що цей варіант може бути чуть скорше, але не перевіряв

Я, и другой архитект(который продумавал архитектуру для 100 человек) не могли чекнуть строку на полиндром.

Это значит что литкод работает, раз таких архитекторов отсеивают из серьезной индустрии.

На твоем любимом C#:

s == s.Reverse()

Надо было самому писать, тебе когда хеш сет просят написать, ты тоже:
var hesh = new HashSet(); пишешь?

Надо было самому писать

Даже оптимальная in-place реализация пишется за несколько минут. Ты не знаешь как пройтись по массиву символов и сравнить их?

Вот видишь, ты не можешь уловить смысл моего комета.
От меня ожидали какой-то код где я ревершу сам, а не вызов метода Reverse.

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

Понятно что не нужно, надо юзат самый популярный литкодовский патерн.
C индексом, и отрицательным индексом за один обход:
if (list[x] != list[list.Count — x]) { не полиндром }
И типа тогда сложность алгоритма X, а не 2X или X^2, так как цикл только 1, и не 2.

щось твій (псевдо-)код каже, що «𓂺» не поліндром :(

а от пітон нормально рішає:

>>> s = "𓂺"
>>> s == s[::-1]
True

В .NET такого нет.
И логично что от меня ожидали самописный код, а не решение вызовом одной команды.

так твій самописний же і не спрацює (по 2х причинах)

Я тебе основную мысль передал, оригинальный код больше, там еще цикл, и проверка на нечетное количество символов, что бы для «абаба» писало ture.

if (list[x] != list[list.Count — x]) { не полиндром }

И что сложного в этом коде? Любой школьник, который научился работать с массивами может это написать.

И типа тогда сложность алгоритма X, а не 2X

darkcoding.net/...​sional-software-engineer
Junior engineers only do the ‘n’ part, but as a senior I do the constant as well.

или X^2

Вообще даже тривиальное решение с String.Reverse — временная сложность O(N), я хз как ты умудрился решить эту задачу с квадратичной сложностью.

Вообще даже тривиальное решение с String.Reverse — временная сложность O(N),

Да, это само собой, но я не про это, а про то, что патерн с отрицательным индексом:

if (list[x] != list[list.Count — x])

Используется там, где надо массив 2 раза проходить, что ты его пройти раз, в двух направлениях, и иметь, O(N) вместо O(2N).

Да, это само собой, но я не про это, а про то, что патерн с отрицательным индексом:

if (list[x] != list[list.Count — x])

Это код некорректен, ты знаешь где в нем ошибка?

Не особо знаком с Julia, но этот код некорректен и при индексации с 0 и при индексации с 1.

Я тебе основную мысль передал, оригинальный код больше, там еще цикл, и проверка на нечетное количество символов, что бы для «абаба» писало ture.
Я тебе основную мысль передал

Есть компании, которым не нужны специалисты, которые могут «основную мысль передать», а которые могут написать четыре рабочих строчки кода, смекаешь?

оригинальный код больше

Там не просто не хватает кода, у тебя в единственной строчке кода как минимум одна ошибка, из-за которой все упадет.

Есть компании, которым не нужны специалисты, которые могут «основную мысль передать», а которые могут написать четыре рабочих строчки кода, смекаешь?

Если надо всего 4 строчки написать, что бы работу найти, то почему ты перед последним поиском работы 500 хардов решил?
И перед прошлым тоже 500, или сколько там?

Там не просто не хватает кода, у тебя в единственной строчке кода как минимум одна ошибка, из-за которой все упадет.

Да, вылазит за размер массива, я тебе хотел передать основную концепцию алгорима, а не решить задачу.
Ты что думаешь я в свое свободное время, за бесплатно тебе буду полностью решать задачи, что бы что-то доказать?
Такое только какие-то последние задроты будут делать.

Если надо всего 4 строчки написать, что бы работу найти, то почему ты перед последним поиском работы 500 хардов решил?
И перед прошлым тоже 500, или сколько там?

Потому что у меня не было цели «просто работу найти» или «попасть в FAANG хоть тушкой хоть чучелом». У меня была цель попасть на проекты, которые меня интересуют, на лучших условиях, которые существовали в тот момент времени, с примерно 100% гарантией успеха, смекаешь?

А я типа, или кто-то другой, кто готовиться на FAANG на худшие хотят попасть, на минимальну ЗП?
Все хотят на лучшие.
Кто хочет худшие сидит дома, или едет не в FAANG.

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

ты сам подтверждение этого.

Смешно, я как раз полная противоположность этого.
Ты же сам писал что чудом попал в FAANG.
И что ты практически не готовился, и не решал Литкод и его аналоги вообще.
Если бы я вкатился в IT одновременно с тобой, то уже бы давно был в Долине.

Куча людей будет рады если попадут хоть куда-то хоть на каких-то условиях,

Эти люди едут в США на честные 120к без Литкода.

Если бы я вкатился в IT одновременно с тобой, то уже бы давно был в Долине.

конеееечно

А я типа, или кто-то другой, кто готовиться на FAANG на худшие хотят попасть, на минимальну ЗП?

готовится

Эти люди едут в США на честные 120к без Литкода.

Хочешь попасть на хорошие условия — вкалывай как папа карло. Не хочешь вказывать, а хочешь зайчевать — попадешь хоть тушкой хоть чучулом, но это не точно.

конеееечно

Ты же сам писал что ты не одной задачи не решил на Литкоде перед оффером.
Я уверен я сейчас пройду интервью лучше чем ты перед первым оффером в FAANG.
Если бы ты 500 задач перед первым оффнром решил, как я сейчас планирую, я бы еще понял это:

Хочешь попасть на хорошие условия — вкалывай как папа карло.

А так тебе повезло релацироватся в том время, когда Литкодом не дрочили особо.

Я не могу понять о чем ты пытаешься спорить.

Хочешь попасть на хорошие условия без риска (как ты хочешь в ФБ зайти сразу на миллион долларов TC) — занимайся гриндом по полной программе.

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

Я уверен я сейчас пройду интервью лучше чем ты перед первым оффером в FAANG.

Я так понимаю, пока что у тебя только один заваленный phone screen в MSFT? Не особый прогресс по сравнению со мной в 2015 году, который литкода в то время тупо вообще не касался.

Если бы я вкатился в IT одновременно с тобой, то уже бы давно был в Долине.

Если у бабушки были тектаткли... :-))

я хз как ты умудрился решить эту задачу с квадратичной сложностью.

кстаті не дуже очевидно, але мені вдалось:

var res = "";
foreach (char ch in s)
    res = ch + res;

Еще менее очевидно

fn is_palindrome(s: &str) -> bool {
    for i in 0..(s.len() / 2) {
        if s.chars().nth(i) != s.chars().nth_back(i) {
            return false;
        }
    }
    
    return true;
}

Я навіть трохи здивований і трохи розчарований, що компілятор не оптимізував :(

Тут не оптимизировать по другой причине — в расте настоящие UTF8 строки (где каждый символ может иметь разную длину) и их перебирать в обратном порядке эфективно невозможно.

Обычные односимвольные строки оптимизировал бы без проблем.

Иногда достаточно сесть, раслабиться и написать. В стрессовой ситуации типа интервью многие тупят.

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

Перефразирую в более понятную логику:
Иногда ВСЕГДА достаточно НЕОБХОДИМО сесть, раслабиться СОЗДАТЬ УСЛОВИЯ ЧТОБЫ написать. В стрессовой ситуации типа интервью многие тупят. А ещё — делают ошибки, не понимают, чего от них хотят, а люди с синдромом вахтёра — усугубляют ситуацию в 50 раз и выше, ЗАВЕДОМО делая так, чтобы не поняли, что «имелось в виду», чтобы в дальнейшем надраконить своё ЧСВ.

Таких людей нужно вышвырнуть за борт галеры немедленно, не дожидаясь конца дня, без каких-либо оплат, и повторить собеседование всем, кому они проводили — удостоверившись, что ещё не поздно. Само чучело поставить перед фактом, что все собеседования проведены вопреки должностной инструкции, что целью чучела была подделка работы, а цель, ради которой они проводились — намеренно не достигалась.

Почему и говорю — в IT дороже всего обходятся токсичные люди. И вообще ничто не сравнится с этим фактором даже по уровню 4%. Для того, чтобы стать таковым, необходимо совпадение 3 составляющих:
1) Нет образования, но есть должность. Не важно, откуда полученного, если это именно образование, а не религия. Важно что даже минимальные «знания» (или имитация), помноженные на оплату их применения, гарантируют резонанс на первом пике Даннинга-Крюгера, и соответственно, развитие в сторону максимизации резонанса. Именно механизм ошибочного подкрепления отвечает за первый пик.
2) Нет образования у нанимателя. Это гарантирует отсутствие адекватной оценки. Ах, как легко её заменить на KPI, притом именно те показатели назвать ключевыми, которые лучше выглядят.
3) Нет обратной связи.

Токсичность и первый пик на синдроме — две стороны одного и того же. Разница лишь в том, боится ли человек шагнуть дальше, либо остаётся на комфортном пике, накручивает его, и толкает с него всех остальных. Решение у этого синдрома очень простое: РАЗРЕШИТЬ конфликты и прописать под них правила. Конфликт позволяет не падать в яму демотивации, а комфортно спуститься по ступенькам, и сама яма становится существенно меньше. Конфликт позволяет избежать резонанса, и трезво оценивать текущий уровень. В целом, конфликт по правилам — это обратная связь (как положительная, так и отрицательная), и её импульсы будут очень слабыми, по по сравнению с мотиваторами.

Обратная связь в буквальном смысле позволяет не идти дальше первого пика, но оставаться на нём всегда. Почему так: необходимость в знаниях постоянно растёт. Знания, даже те что не устарели, постоянно забываются. Потому уже нет комфортного пологого пути роста — а есть «путь самурая». И потому, спотыкаться приходится постоянно, и постоянно отодвигать следующие грабли, и идти дальше.

Потому, если вы ПОСЛАЛИ В ПИЗУ компанию с токсиками во главе, даже если 10 компаний, даже если 49 — это того стоило. Зайдите в ту 50-ю, где производственные отношения построены профессионально. Если вы из Украины, это не значит, что именно вам нужно быть «индусом». Вам не нужно воевать с системой в одиночку — идите сразу к тем, кто на вашей стороне. Новые буквы в FAANG — именно из этих компаний, и не из каких других. А старые — не вечны, наоборот, ещё ни одна из них не пережила все болезни молодости.

в смысле забыть? до следующего интервью?

2) Опытные, крутые специалисты могут вообще не решить Easy задач по массивам. Зато умеют написать систему и выпустить в прод.

Каждый раз, когда такое читаю, вспоминаю, как мне пришлось выяснять, почему аццки тормозит система, которую опытный специалист, не умеющий решать изи задачи по массивам, выпустил в прод — оказалось, он мерджил два датасета вложенными циклами.

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

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

Человек, который это знает, решит задачу уровня изи без особых проблем.

Ну как видишь не все изи задачи, про большую часть поверю.

Проблема в том, что большинство синьоров это не знают и гордятся этим.

А вот это уже зрада, согласен.

Ну и какая вероятность что ты так где-то в прошлом не тупанул? И сейчас какой-то новый разраб не сидит и не думает «Что за сударь такое написал?»))))

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

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

Один мене дивує, що його рішення пройшло code review і performance testing?
Якби в компанії були правильно побудовані процеси розробки ПЗ, то такі косяки швидко знаходилися б і виправлялися.

його рішення пройшло code review

Если ревьюер был тоже из серии «а зачем мне эти алгоритмы» (что, судя по форуму очень распространено в Украине), то ревью бы прошло на ура — функциональной ошибки там нет.

performance testing

Это очень ограниченный инструмент, позволяющий только показать, что есть то или иное торможение. В той софтине были и другие тормоза с которыми сделать было ничего нельзя — просто много вычислений.

Якби в компанії були правильно побудовані процеси розробки ПЗ, то такі косяки швидко знаходилися б і виправлялися.

Как видишь, квалификацию программиста нельзя полностью заменить процессами. Я уже не говорю о том, что в 99 и 9 в периоде процентов компаний процессы далеки от идеала.

Програмісти можуть бути екстрависокої кваліфікації, але баги бувають все одно.

Просто рідше, але набагато вишуканіші.

В нас нещодавно дрон розмазався по асфальту з височи 24 метри через ділення на нуль у випадку співпадіння таймстампів адаптивних фільтрів. Добре, що не перед світлими очима замовника.

Це мало статися на симуляторі, але брак процесів автоматизованого тестування...

Просто рідше, але набагато вишуканіші.

Если есть возможность уменьшить количество багов путем найма квалифицированных программистов — это стоит сделать.

В нас нещодавно дрон розмазався по асфальту з височи 24 метри через ділення на нуль

Классическая байка, не знаю насколько правдивая: сбой бортовой электроники истребителей F-16 ВВС Израиля был вызван делением на 0 при пересечении нулевой высоты над уровнем моря — в Израиле, в отличие от большинства других стран, можно летать ниже уровня моря.

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

В нас один синьйор написав три вкладені цикли. Із звертанням до бази всередині.

А потім приплила баржа з інвойсом на 1000 позицій.

Розмитювали вночі під дебагером три години, щоб TCP конекшин до бази не відсихав за таймаутом.

Так, це мали виловити автоматичні тести.

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

В реальных системах _не существует_ универсального решения, как наилучшим образом смержить два датасета. Если мы возьмем теже алгоритмы баз данных на джоинах, то это прежде всего анализ размеров левого и правого дата сета. Это учет сколько у нас есть дополнительной памяти. Учет на каком сторедже лежат наши данные. Учет пред отсортированы эти данные или их еще нужно сортировать и еще куча параметров. И только после этого уже решение, мерж слиянием, мерж вложенными цилками, мерж через хешсет и другие способы. И внезапно в некоторых случаях, мерж вложенными циклами может работать и экономней по памяти и быстрее чем другие «литкод» подходы.

В реальных системах _не существует_ универсального решения

Да ну!? А какую ты дичь дичную писал в тредах про обсуждение реста?
И то как ты рассказывал что надо чтобы база отвечала и за юуай, и логику, и данные. Забыл?

И внезапно в некоторых случаях, мерж вложенными циклами может работать и экономней по памяти и быстрее чем другие «литкод» подходы.

Ты все так же в упор не хочешь читать про сложность алгоритмов.
Ты вообще хоть прогер? Или в какой то гос конторе одминко венду ставишь а от безделия колупаешь какие-то пет проджекты чтобы потеснить монгодб? :-)

Ладно, проявим чудеса толерантности.
Вдруг человек действительно хочет разобраться. Иначе как говорят мудрецы, это все равно что воду в море доливать

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

ibb.co/CbLN8jk

Это позволяет сложное приложение написать в десятки раз быстрее чем пишут сейчас. Само приложение содержит минимум овер энжиниринга, намного лучше обновляется, содержит слабосвязанную архитектуру, не содержит однотипных реализаций велосипедов, быстрее работает, содержит меньше багов. Я уже приводил пример Доу сайта, пос которого было написано за полтора часа. Все скрины с регистрацией, модерацией, деревьями комментариев и другим функционалом там были.

Ты все так же в упор не хочешь читать про сложность алгоритмов.

Ты не ко мне это пиши. А возьми открой исходники любой СУБД которая умеет в джоины и посмотри почему одним из алгоритмов там всё-таки числится nested loop. Наверное им не сообщили про литкод и сложность алгоритмов.
www.mssqltips.com/...​ql-server-physical-joins

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

Дальше не читал, одминко-эникейщик, ты наш :-)

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

Где можно это приложение запустить?

Разработка любит тишину ©

Но ты можешь поучаствовать заочно в альфа тестировании. В данный момент я собираю 10 идей для POC приложений и ты можешь предложить свою идею для такого приложения. Пока шорт лист выглядит так
1. Доу (чекед)
2. Мессенджер (офлайновый)
3. Клон Фейсбук
4. Портал для обучения
5. Интернет магазин
5. ЦРМ для продажи товаров на кассе.
6. Портал для продажи ЖД авиа билетов
7. Портал для онлайн обучения

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

Клон фейсбука? Правда? Это что именно ты там собрался клонировать?

Вероятно, бизнес модель воровства персональных данных и их последующей продаже рекламодателям и КГБшникам.

Та что он там воровать будет? :-) Он же начнет оптимизировать базу на 10 миллиардов записей и загрязнет на 100500 лет в фантазиях про идельную базу а потом еще 100500 лет будет гонять бенчмарки генерации новостной ленты.

Ничего особенного. Регистрация через несколько скринов с визардом. У каждого юзера своя страница с личным инфо и с лентой новостей и списком друзей. Лента каждого юзера обновляется новостями друзей. Друзья товарищи, запросы баны. Встроенный чатик для того чтобы чатится с друзьями.
Вроде все. День для такого приложения даже много, если конечно все остальное работает как часы.

И шо эта твоя поделка/перделка выдержит лярд юзеров в день? :-))) Горизонт мышления как у эникейщика :-)

Ток давай не надо опять пейсать куйню шо ты щас бенчмарком померяешь у себя на компе как ты генеришь новостную ленту на основе предпотчтений ползьователя за 0.04 наносек :-)
ЗЫ ну или давай попеши, мы поржем как ты в коментах педалищь убийцу фб. :-)

Миллиард не выдержит. Может и миллион не выдержит. Но все фокусы с многоуровневым смарт кешированием, геолокацией, горизонтальным масштабированием и офлайн клиентом который синкается асинхронно дифами вместо рест который зае*т сервер там будут. Больше и не надо для POC который соберут за день

Ну тоесть ты сравниваешь гоночный болид и свой трехколесный велосипед из говна и палок? :-)

Да, именно так. Спи спокойно.

Бг создал мир за 7 дней. Делай 7 приложений, по одному на день. 10 не надо, сильно много.

Вернее даже 6, на седьмой день отдыхать будешь.

Мне важно найти именно разносторонние приложения. Чтобы провалидировать концепцию что это именно не конструктор для однотипных приложений.

Не стесняйся с идеями, если повезет есть шансы на следующий день увидеть видосик где твоя фантазия уже работает в коде

Не стесняйся с идеями, если повезет есть шансы на следующий день увидеть видосик где твоя фантазия уже работает в коде

Здраствуйте. Я, Кирилл. Хотел бы чтобы вы сделали игру, 3Д-экшон суть такова... Пользователь может играть лесными эльфами, охраной дворца и злодеем. И если пользователь играет эльфами то эльфы в лесу, домики деревяные набигают солдаты дворца и злодеи. Можно грабить корованы... И эльфу раз лесные то сделать так что там густой лес... А движок можно поставить так что вдали деревья картинкой, когда подходиш они преобразовываются в 3-хмерные деревья[1]. Можно покупать и т.п. возможности как в Daggerfall. И враги 3-хмерные тоже, и труп тоже 3д. Можно прыгать и т.п. Если играть за охрану дворца то надо слушаться командира, и защищать дворец от злого (имя я не придумал) и шпионов, партизанов эльфов, и ходит на набеги на когото из этих (эльфов, злого...). Ну а если за злого... то значит шпионы или партизаны эльфов иногда нападают, пользователь сам себе командир может делать что сам захочет прикажет своим войскам с ним самим напасть на дворец и пойдет в атаку. Всего в игре 4 зоны. Т.е. карта и на ней есть 4 зоны, 1 — зона людей (нейтрал), 2- зона императора (где дворец), 3-зона эльфов, 4 — зона злого... (в горах, там есть старый форт...)

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

P.S. Я джва года хочу такую игру.

На твоем движке можно это запилить?

Мне кажется это отличная задача для Раст. Здесь все звёзды сошлись.
У меня же круды. Всякие разные но все же круды

Если нельзя грабить корованы, то зачем такой фреймворк?

Он тебе по делу ответил, сам сейчас эту тему читаю в книгах по архитектуре, как лучше джойны организовать, а ты только нагрубил в ответ, я не знаю что он про REST раньше писал, но конкретно этот комент нормальный.

как лучше джойны организовать
по архитектуре

В книгах по архітектурі пояснюють базові принципи побудови БД і як читати explain?

Про 4 вида обработки джойнов в SQL я знал еще до первого оффера в IT, правда потом забыл, и выучил их заново как мидлом был.
В той книге что я читаю описывают новые 4 вида джойнов, для распределенных систем, типа Hadoop.

база отвечала и за юуай, и логику, и данные

А можно ссылку, чтобы не искать?

engineering.fb.com/...​infrastructure/messenger вот тут есть мой любимый пример почему SQLite вполне себе торт до сих пор (если брать ФААНГ как авторитеты). Это больше про специфику, орм и прочие особенности мобильной разработки в моем случае.

Но в целом, они сгрузили много heavy-lifting вещей на базу в этом рерайте

Compared with the previous iOS version, this new Messenger is twice as fast to start and is one-fourth the size. We reduced core Messenger code by 84 percent, from more than 1.7M lines to 360,000.

Лол. Просто сменив архитектуру выбросили больше 1.3 миллиона строк из проекта. Подозреваю можно ещё выбросить тысяч триста )

Compared with the previous iOS version, this new Messenger is twice as fast to start and is one-fourth the size. We reduced core Messenger code by 84 percent, from more than 1.7M lines to 360,000.

Они его на Rust переписали?

Чтобы делить объем кода на 10 а то и на 100 нужна другая архитектура, а лучше парадигма. Твойже Раст теже яйца только в профиль. 1000 строк говнокода на джава и столько же на Расте. Круговые движения

Они его переписали на SQLite хранимки, насколько я понял посыл статьи. Грубо говоря всю БЛ перенесли в SQL функции и триггеры

Грубо говоря всю БЛ перенесли в SQL функции и триггеры

Укросиниоров сейчас должно начать карежить как чертей от святой воды. Это же так неправильно бизнес логику в sql совать)

Я как-то работал на таком проекте где 70% бизнес логики была в хранимках на тысячи строк и это был адский ад.

Даже если вынести логику из хранимок, то она попадет в C#/джаву в виде конкатенаций sql на тысячи строк. А иначе оно работать быстро не будет — ORM убивает производительность своей тупостью моментально, а если еще адепты DDD в проект подтянуться, то можно даже не начинать.

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

Орм не убивает, убивают кривые руки. А бизнесс логику таки лучше держать на бэке а скл отдать работу с данными. Первое прекрасно подходит для описания бизнеслогики, второе прекрасно ищет/агрегирует/вставляет/читает данные.
Проблемы с этим обычно у фреемверк девелоперов и/или скл головного мозга.
Хранимки(для критичных вещей) и орм прекрасно уживаются в проекте и даже с хорошим перформансом.

Я тоже использую орм для простых инсертов, апдейтов и вытянуть какой-то справочник со списком городов по алфавиту первые 100 штук для автокомплит поля. Там где уже начинаются гриды с 10-50 колонками с возможностью выбора колонок, сортировками по каждой, фильтрацией по каждой и не дай бог еще с группировками, то там орм уже не вывозит никак даже в простых сценариях. Очень много и правильно нужно наджойнить всякой писечки и еще сбоку каунты всякие в каждой строке повыводить.

Орм не убивает, убивают кривые руки.

Чуваки обычно втупую фигачат Include штук 10 вперемешку с ThenInclude и оно отарабатывает блестяще ... На 100-1000 записях.

На телефоне, SQLite намекает. Вопрос который у меня от статьи остался — протоколы синхронизации. На очень специфичной задаче, я в свое время пришел к выводу, что оптимально будет оперировать диффами место обычных рест запросов (ну то есть ничего плохого насчет рест, просто это всегда будет PUT, и бекенд надо подгонять и двигать со стандартных библиотек). Реализовать даже в альфа тесте так и не вышло. НО там изначально условие стояло, что клиент всегда прав. И диф между его базой и его базой по таймингу (специфика проекта) всегда истина. И поэтому можно немного подсмотреть у чуть более умных товарищей. А вот как фейсбук в итоге реализовал — можно только догадываться.

Конкретно на твой вопрос:
База и на телефоне, и на беке. Протоколы синхронизации — тут не освещались, могу предположить, что синхронизация с беком идет через синхронизацию баз + unix нетворк инструменты. Источником правды же выступает локальная база на устройстве.

Если вдруг найдешь дополнительную информацию по этому кейсу в разрезе синхронизациии — дай знать

Это секта, думать не обязательно главное верить, FAANG же не могут ошибаться.
Как и Католическая, Протестантская, и Православная церковь, там тебе попы тоже скажут, что у много нет объяснения, надо просто верить.
Православные например ставят свечки не потому, что так в Библии написано, а потому что какой-то поп решил что надо их ставить.

В реальных системах _не существует_ универсального решения, как наилучшим образом смержить два датасета.

За то существуют весьма универсальные худшие способы.

И внезапно в некоторых случаях, мерж вложенными циклами может работать и экономней по памяти и быстрее чем другие «литкод» подходы.

Внезапно ты не угадал — там были два обычные рандомные датасеты в памяти примерно одинаковых размеров. Так что в данном случае это был обычный укросинтор никогда в жизни не видевший основ CS.

За то существуют весьма универсальные худшие способы.

Кто определяет эти худшие способы ?
Вот тебе простой пример. Слева у тебя датасет на миллиард элементов, справа на пять элементов. Слева дата сет не отсортирован. У тебя есть выбор. Или лепить хештаблицу из 5 элементов или сортировать миллиард элементов. Или не лепить хештаблиц и не сортировать миллиард а просто пробежаться фулскан нестед лупом, что внезапно быстрее.

Внезапно ты не угадал — там были два обычные рандомные датасеты в памяти примерно одинаковых размеров.

Ты до сих пор не понял какие же такие условия являются предикатом для выбора или не выбора нестед луп. И это не одинаковость размеров и не рандом.

Вообщем все что можно было предъявить укросиниору, это то что он не поставил развилку в коде, сделав шаг к оптимизатору запросов. Когда следует бежать и каким алгоритмом. И выпилив его код, верю что ты сделал лучше, но не решил задачу на том уровне, на котором ее решают действительно с пониманием CS

Кто определяет эти худшие способы ?

Определяет результат — одним алгоритмом работает, допустим 10 минут, другим — 5 секунд.

Вот тебе простой пример. Слева у тебя датасет на миллиард элементов, справа на пять элементов.

Тебе ж сказали, там датасеты примерно одинаковых размеров.

И это не одинаковость размеров и не рандом.

Я думал то, что датасеты большие должно быть понятно даже тупому. Оказалось нет.

Вообщем все что можно было предъявить укросиниору, это то что он не поставил развилку в коде

Чтобы поставить развилку в коде нужно знать о других существующих вариантах кода, так что все, что можно предъявить укросиньору — это незнание CS.

сделав шаг к оптимизатору запросов

Ты как всегда лепишь сферического коня в вакуме — там не было граничных случаев, когда нестет луп или мердж был бы лучше.

Мне главное что благодаря моему посту ты расширил свой литкодовский кругозор. Белые платья дартаньяна который выпилил нестед луп сменились вполне прагматичным многогранным миром решения задач. И хотя тебе не удалось реализовать весь потенциал тихо съехав что решал какую-то мегаспецифическую задачу (ктож тебя проверит что ты там решал) в следующий раз твой мозг будет работать несколько сложнее чем «ааааа нестед луп», когда придут условия новой похожей задачи

Мне главное что благодаря моему посту ты расширил свой литкодовский кругозор.

Не хочу тебя расстраивать, но то, что тебе кажется сакральными знаниями в стиле «я — гуру, я — учитєль! Несіть мені усі по три рубля. І мудрості вам дам я до***» для других является выступлением капитана очевидность, не имеющему отношения к обсуждаемой теме.

И хотя тебе не удалось реализовать весь потенциал тихо съехав что решал какую-то мегаспецифическую задачу

То, что ты под конкретную задачу написал бы нафиг там ненужную полноценную СУБД с оптимизатором запросов — я ни на минуту не сомневаюсь.

Белые платья дартаньяна который выпилил нестед луп сменились вполне прагматичным многогранным миром решения задач.

Базука-кодер? :-) Где про Алесью? :-)

оказалось, он мерджил два датасета вложенными циклами

Пожди, а как надо? Ты знаешь волшебный способ, чтобы 2 сета смерджились, разумеется, с какой-то логикой в этой операции? Кстати, а почему циклы вложенные? Или имеется в виду что сет не индексирован и даже не сортирован — да, и такое бывает сплошь и рядом, и чаще всего так задумано.

2) Опытные, крутые специалисты могут вообще не решить Easy задач по массивам. Зато умеют написать систему и выпустить в прод. Ценны для бизнеса.

Это уже старческое. Мне так деды 50+ лет тоже любят рассказывать как они ценны для бизнеса и большой опыт, а по факту ...

Ну и пусть рассказывают. Проблема-то не в том, что они деды. Наоборот, чем люди старше, тем их проще оценивать, потому что они разные. И не надо думать, кем они себя видят через 5 лет.

не надо думать, кем они себя видят через 5 лет

Как это — не надо !?! :)) Молодой Ты ешшо :8)))
Когда охота поговорить, я обязательно спрашиваю рекрутерок «які в мене перспективи у вашій конторі?» ... действует круче чем просто послать ... девачки в афуе что без двух минут пенсионеру перспективы нужны кроме участка два на три :8)))

Та я ж не тебе мав на увазі. В тебе 80lvl там де в більшості навіть 0lvl нема та тренувальний рівень не пройдено. Яка пенсія, працюй давай.

пасиба канешно, но и на пенсию успеть тоже хоцца :8))

"які в мене перспективи у вашій конторі?"

Треба ще питати, якої форми люки простіше виливати в формі і чому
xD

А чем для бизнеса ценно умение сортировать массивы, двигать ферзей по шахматной доске, и строить деревья?
Ты хоть раз такое делал на реальном проекте?

Мне деревья строить приходилось часто и густо. А вот оптимизировать их — то такое, мне дешевле было потратить лишних 600 байт оперативки и 0.01нс времени.

Я очень рекомендую перед каждым желанием что-то оптимизировать прикинуть выигрыш, умножить его на количество использований, скажем, за год, и удостовериться что эта цифра МЕНЬШЕ, чем время, потраченное на написание кода.

Оптимизировать лучше всего чтение кода человеком. Вот там реально жопа кроется, которая может и человеко-месяц сожрать, и человеко-годом не подавится, если это какой-то тяжело обнаруживаемый баг.

Ферзей по доске я 7 лет двигал, и деревья вариантов строил, и сортировал цепочки ходов, проект chessacademy.de . Если не сдох, ему должно быть уже лет 30. Для бизнеса: было полезно показать что наш проект ищет партию по позиции или по материалу раз в 10 быстрее конкурента.
Но вопрос же немного в другом: в подходах. И в бизнесе и в программировании далеко не обязательно каждый раз изобретать велосипеды... и особенно в бизнесе ИМХО.

Ну и сколько еще разработчиков шахматы пишут? 0.0001% наверно.

Алексей писал не шахматы; и двое из ваших оппонентов, которые вам ответили — это уже не 0.0001. Я же пытаюсь вам обЪяснить, что вопрос в общем подходе к задачам, Вам вероятно важнее доказать что Вы обошлись без «всякой этой лабуды». Ну прекрасно ... далеко не всем например нужен голос чтобы петь или пальчики чтобы сыграть на рояле.

Геймдев это 10% от числа всех разработчиков, и то там шахмат хорошо если 1% игр, остальное казино и браузерки, или примитивные шутера.
Я уже не помню когдаа последний раз видел что бы кто-то играл в шахматы, или где-то рекламировали хайповую игру про шахматы, это жесткий андеграунд.
Хоть я в уинвере и сам AI для шахмат писал.

Шахматы, на которые я кинул линк, — это не геймдев. Это аналитическая программа + обучалка с кучей библиотек по отдельным скилам + огромная база данных + дебютные и миттельшпильные e-книги, ну и + модуль который умеет ферзей двигать, он как раз последним появился... и это состоянием на 2000 год :8) но чессгря что там щаз — понятия не имею.

хайповую игру про шахматы

UkrChess недостаточно хайповый? ;)

Нацгвардейцы с колорадами забивают доску и мешают играть, а ещё можно грабить с доски корованыАТО и взрывать щоденные гранаты.

Тут вопрос больше в том, сколько человек пишут, чтобы было быстрее чем у конкурентов, которые сделали на фреймвёрках :)

Якщо їх зробити консультантами, то вони справді будуть цінними для бізнесу.
Вони вже добре розуміють бізнес та його потреби, а крім того, вміють знаходити спільну мову та з розробниками. А програмувати їм не обов’язково.

Якщо чесно, ніколи не думав що підтримаю твій коментар. Але з цим просто повністю погоджуюсь

Давайте я розповім вам, як таргани займаються сексом.

Перед тим як спаритися, самець та самка обмінюються феромонами та починають шлюбні ігри. Конкретно — танцюють один перед одним. У різних видів по-різному. Деякі можуть просто позадирати ніжки та крила один перед одним, а потім перейти до справи. А здорові південноамериканські таргани, наприклад, можуть хвилинами танцювати www.youtube.com/watch?v=PiHc8dMxmDg по конкретних траєкторіях, і лише після цього почнеться спарювання.

Суть цього дійства досить зрозуміла — перед тим, як спаритися, обом сторонам, а особливо самці, потрібно пересвідчитися, що партнер достатньо здоровий, не хворий, не контужений, не придавлений тапком, тому що невдахи нікому не потрібні. У невдах погані гени — всім потрібно відбирати добрі. Чи це означає, що цей тест на 100% дасть самиці гарантію, що саме цей самець ідеальний для спарювання? Звичайно, ні. Але цей тест достатньо точний, щоб таргани продовжували плодитися і залишатися однією з основних напастей будинку, з легкістю мутуючи резист до нових отрут за кілька поколінь.

Звичайно, наука не стоїть на місці, і якщо уханська лабораторія виведе тарганів, які будуть мати суперсенсори на головогрудях, які за секунду сканування дадуть таргану на 100% упевненість, що його партнер здоровий, як бик, тоді вони будуть розмножуватися з абсолютною точністю, і їхнє уберменшне потомство переможе звичайних тарганів. Але поки таких суперсенсорів немає, і супертарганів немає, звичайні таргани продовжуть танцювати ці тупі танці, щоб розмножитися і продовжити цикл далі, тому що у звичайних тарганів для проріджування популяції є лише їхні недосконалі сітчасті очі та нюх. Але все одно: це good enough.

Повертаючись до початкового питання: чому FAANG потрібен літкод? Хз, понтуються мабуть.

tl;dr; если не умеешь/не хочешь танцевать, останешься без секса

А когда случится секс — будут мысли «ну вот и стоило вот это так танцевать и крыльями трясти?»

из диалогов с бессмертным армянским радиво:
— Что такое апатия?
— Отношение к сношению после сношения...

Це вам такі питання ставили на техінтерв’ю?

Армянское радио спрашивают:
— Какая нация самая умная и красивая?
— Спасиба за камплимент!

tl;dr; Танцоры и сдохнут первыми. А бесплатный сыр достаётся второй мышке. Проблема лишь в том, что люди не тараканы, и если бы ниша была тараканья — то никаких шансов против афронегров бы не было.

неочікувано підійшов до питання)
Я зразу подумав «WTF на цьому форумі про тарганів пишуть ?!»

) Опытные, крутые специалисты могут вообще не решить Easy задач по массивам.

Тут не соглашусь. Опытный «крутой» спец, по крайне мере бек-эндщик, такую задачу кагбы точно решит (иначе он таки фиговый спец), другое дело что он может этого не сделать под прессингом в отведенный срок на доске, итд.

Почему же ФААНГ и приближенные его так возносят?

Скорее всего, бытует мнение что если чел достаточно умен, чтобы отбалансировать дерево, то он таки сможет написать более-мение вменяемый код. Если чел не может отбалансировать дерево, то хз может он написать норм код или нет, и поскольку на собес в фанги-шманги тысячи резюме присылают, то вільна касса! .

Перше і останнє знайомство з літкодом заверщєшилось компіляцію стандартного методу в ES3 за допомогоую babel

но к реальным навыкам имеет немного отношения

Имеет самое прямое отношение. Замечено: лучше умеешь алгоритмы и структуры данных — лучше решаешь бизнес задачи.
Да и вообще мозги прочищает.

лучше решаешь бизнес задачи

Вот этот момент честно не понимаю. деревья в последний раз видел на дискретке в универе.
Последняя рабочая задача связанная с алгоритмами (если не считать О нотации в комментариях к немного жадному методу, который работал на ограниченном кол-ве элементов, собственно для этого и прописал сложность и лимит n) — реализация циклического буффера года 3 назад. Причем мне не надо было его в голове держать — просто пойти, почитать алгоритм и превратить его в код.

Сейчас тебе расскажут что ты формошлеп.

Да я и не буду отрицать. Но действительно, по-моему, почти все что можно было, уже реализовали. И поиграться со знанием алгоритмов можно по сути только в опенсорсе нового фреймворка/языка

Кстати, часть задач на проверку CS/логики выглядят сильно убого.
Знакомый делился с вопросом с собеседования:

Есть золотая цепь из 7 звеньев. Нужно платить работнику по звену каждый день. Надо минимизировать кол-во порезок этой цепи, чтобы рассчитаться с работником за неделю. 
Правильный ответ 111b
По сути же минимальное кол-во порезок достигается продольным разрезом всей цепи. Тогда будет 14 половинок — и можно не заморачиваться с обменом вчерашней «зарплаты»

Сразу билн видно «реальную задачу», я прям каждый день такое пишу на проекте.
Это скорее головоломку про гномиков или шарики в самолете напоминает.

А что за задача про гомиков и шарики в самолёте?

Сколько теннисных шариков влезет в Боинг 747?
Если сходу не назовешь, то ты веб-макака. А не настоящий инженер FAANG-овец, котоырй разрабатывает фреймворки, а не пишет на них.

вот ты и попался!
там в хвостовой части — по объему да, как бы войдут, но перекрытия к обшивке ближе диаметра шарика ;)

То есть ты предлагаешь кокаин из обшивки достать и бесплатно слетать, да?? А по шарикам температурный коэффициент учтён, так что без паники, усё влезет. Кроме мисс Бурфул.

Но если ты хочешь проверить..... К коллайдеру!
cs6.pikabu.ru/...​1417014262_1548417058.jpg

Мряка друсит пусику. На друську одной пусики нужно пол долгика.Сколько нужно долгиков на друську восьми пусиков?

Там понятно хотя бы что хотели проверить, кстати, знакомый не связал с бинарным представлением, хоть и решил

(удалил ответ по-украински, чтобы не попытались «умники» связать с абсурдизмом фразы, на которую отвечаю. Капс дает английский — в остальных случаях лень переключать раскладку, но тут пришлось)

Даже как-то просто если раза 3 подряд прочитать.

А ведь класный задачник в свое время был, я там все задачи решил :-)

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

Мряка друсит пусику. На друську одной пусики нужно пол долгика.Сколько нужно долгиков на друську восьми пусиков?

А у вас вотерфолл или скрам? Потому что правильный ответ — полгодика полдоглика, только Сове не говорите. Потому что с эффективным менеджером пусику можно друсить бесконечно

Правильный ответ 111b

Так 3х же достаточно? Как так то.

Ну так собственно да. 3 разряда, видимо не сильно удачно выразился, думал простого представления числа звеньев/дней в бинарной системе будет достаточно, чтобы понять решение.

Замечено: лучше умеешь алгоритмы и структуры данных — лучше решаешь бизнес задачи.

Замечено: люди, которые ели огурцы — в будущем умрут.

Замечено: люди, которые НЕ ели огурцы, имеют вероятность умереть в следующем месяце на порядок выше, чем те, которые ели. Если мы заменим огурцы на бананы — вероятность будет ещё выше. Про молоко — даже не спрашивайте!

это отсыл к «the journal of irreproducible results», статья «о вреде огурцов». крайне рекомендую :)

Ось тут незгодний.
Для правильного вирішення бізнес задач потрібен:

1) Досвід у вирішенні бізнес задач та розуміння бізнесу замовника
2) Хороші аналітичні навички та вміння будувати моделі та абстракції.

Знання алгоритмів тут може і не знадобиться, воно взагалі не в кожному завданні потрібне. Крім того, багато алгоритмів вже реалізовані в багатьох бібліотеках, які просто потрібно знати і вміти використовувати.

Опытные, крутые специалисты могут вообще не решить Easy задач по массивам. Зато умеют написать систему и выпустить в прод. Ценны для бизнеса.

Я опытный, крутой спец. Литкoдовские задачки (группы «изи», чтобы не напрягаться) — решаю иногда в перерыве от работы, для переключения/расслабления.
Обычно, на решение уходит порядка 5-10 минут (без фэйлед тестов). Что там вообще решать?

Че в США на 500к тогда не поедешь, раз такой крутой?

Я в европпках занимаюсь «обширным зайчизмом» на удалёнке — мне и так хорошо.

Хотя, глядя на последние события с ковидо-безумиями — подумываю о свалинге в один из республиканских штатов. Или, накрайняк, в бриташку.

в бриташку

Дальнобойщиком? :-)

Дальнобойщиком? :-)

Хоть тушкой, хоть чучелом. :)

ковидо-безумиями

О, тебя опять разбанили

лол, этож Максимка, который после сотого бана опять прополз по-платунски на доу. Ни штаты, ни 500k ему не светят.

Ну ващет я видел как два таких доу юзера срались в каком-то треде, правда с разными индексами :-)))

А я в Джонах до сих пор путаюсь, забывая кто из них Жук.

А я в Джонах до сих пор путаюсь, забывая кто из них Жук.

Тот деанон Жука — был самый лучший деанон, который мне приходилось видеть в своей жизни :-)

Это который с тян отношения тут выясняли?

С тян отношения выясняли, емнип, Джон Келли и котэ

Ту ветку похоже что удалили. Я не могу найти комент где был деанон.

С одной и той же?

Вроде котэ завел тогда еще один, но в этот раз женский, акк, и подлил керосинчика в огонь :-) после этого всю ветку выпилили

Тут только один настоящий Жук, единственный и неповторимый, с оперативным псевдонимом «Шериф». Все остальные псевдожуки — жалкая подделка.

Ну тогда неочевидно в чем деанон заключался, ибо профиль открытый был, где жил, и какая площадь лоджии — извесно было, итд... ?

Нет
Он переименовался в John Relay, но продолжил писать про досягнення та покращення )) не меняя стиль, набор слов и почерк.

Ну тут куча народа постоянно переименовуеться (хз зачем?), дань традиции.

переименовуеться

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

а че его банят то постоянно? я чет в этой жизни упускаю...

а че его банят то постоянно?

хз, я точно не знаю, я всегда считал, что за бедумную ретрасляцию антивасерской рашко пропаганды, гладкий мозг и неприятную манеру общения.

Че в США на 500к тогда не поедешь, раз такой крутой?

За задачи уровня изи 500к не дадут

Он им еще расскажет на бихевеер интервью что влиял на решение CEO, и политику компании, и запускал новые продукты, но все под NDA, и дадут вообще 1кк

Бував у такого крутого спеца на співбесіді, чомусь він сам на свої питання відповісти не міг)

У клубі «фаанг» такі а***ні бонуси,
Алэ мiй мозок разриває на куски сегмент трi.
Пацани мені казали: «на полiткодь» (ну на полiткодь!)
Но я крутий ***рив круд і завалив кодiнг скрiн.

Тепер сiжу за лiткодi зариганий вигнаний, мовчки дивлюся на таски.
Хулі вони такi складнi і єбалами щолкають проста?
Шо цi дiефесы всi значать, хулі вани не приносять удачу?
Єслі фаанги це галаграма, то саме рєальне в них маї крудачки!

Литкод это показатель. Литкод нужен.
Лучше литкода может быть только еще больше литкода.
Упражнения сего рода развивают мозги.

Почему же ФААНГ и приближенные его так возносят?

Не все ли равно? Ф — фейсбук же? Тот самый, который раз в час-два падает в серую вкладку хрома и где клик на нотификейшн никогда не ведет на комментарий?

Ах да, этого было мало, поэтому они на четверть суток недавно свой DNS уронили.
Зато все задачки в литкоде решать умеют х_х

Мне FAANG-овцы, в том числе из Facebook, доказывали, что глвное знать Литкод, а фреймворки и облака можно вообще не знать, так как все баги найдут юнит-тесты.

Ну фреймворки знать нужно 100%, а вот с облаками очень спорно. У нас на проекте обычных рядовых кодеров к деплою не подпускают на пушечный выстрел.

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

Потом девелоперы с вашего проекта хрен нормальную работу найдут, с хорошей ЗП.

Они эти облака и будут писать, а ты их будешь юзать набивая конфиги для AWS, а они с стоков соберут все сливки и решат еще сотню задач с литкода после релиза :-)

Что бы написать облако, надо понимать как оно работает, например Azure работает через Service Fabric? Ты ее знаешь? А как как она работает внутри знаешь?
Вот я например учу как работает Kubernetes внутри, там внезано нет никакой сортировки массивов, графов, и деревьев, но есть все облачные патерны, типа шардинга и партишенинга, лоадбалансинга, REST API, и тп.
То есть крутой пользователь облака, сходу это все поймет, и сможет написать свое облако.
А дрочитель массивов будет все это учить с нуля.

шардинга и партишенинга, лоадбалансинга, REST API

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

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

Там может ассемблер теперь учить будем?

Глядя на недавние ревью что мне давали — таки да, плохо что люди не учат ассемблер и архитектуру ЭВМ :-)

Опять же, архитектура компа не имеет отношения к ассемблеру. Как и сложность алгоритмов к Литкоду.
Я знаю архитетуру компа, но с ассамблера только mov помню.

Опять же, архитектура компа не имеет отношения к ассемблеру.

Да они связаны и учить их вместе надо. Но опять у тебя крайности — весь листинг команд последнего i9 нужно знать только разработчику компиляторов. Обычному разрабу достаточно понимания основных принципов. Например почему если надо помножить 2 массива флоатов, то это лучше делать не через цикл, а через N циклов по 16 элементов с выравниванием, недостающее заполнить нулями. Цифры дал лишь для примера, реальные могут отличаться в зависимости от целевой платформы.

Та этот ассемблер уже никому не всрался, даже в универе его не учат уже.
То что 1 цикл лучше чем несколько, понятно и самому дауну без всякого ассемблера.
Сейчас мне не один техлид не смог ответить ширину шины процессора, какой нархерн ассемблер.

То что 1 цикл лучше чем несколько, понятно и самому дауну без всякого ассемблера.

Видимо, не всем это понятно :-)) потому что я писал

это лучше делать не через цикл, а через N циклов по 16 элементов с выравниванием

Знал бы ты основы ассемблера и архитектуры, не писал тут про «помножить числа одним циклом, а не несколькими».

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

Я немного не соглашусь, у архитекта большеого проджекта «дет там в облаках» немного фокус другой. Например, знать характеристики 100500 клауд сервисов и еще 100500 опен-сурс альтернатив.
Оценить требования условного заказчика, и предложить наилучшую комбинацию сервисов и сказать сколько это стоит — это куда более полезны и практичный навык чем умение балансировать дерево.

Тут немного про другое, то что архитектору нужно знать облако если проект в облаке это понятно, но прикол в том что эти плюшки в облаке никак не иозбретения облаачных компаний, а просто предготовленые ресурсы с билингом уже 300 раз обкатанных паттернов/решений типа очереди, лоадбэлэнсеры и прочее.

Тут к этому коменту претензия

Вот я например учу как работает Kubernetes внутри, там внезано нет никакой сортировки массивов, графов, и деревьев, но есть все облачные патерны, типа шардинга и партишенинга, лоадбалансинга, REST API, и тп.
То есть крутой пользователь облака, сходу это все поймет, и сможет написать свое облако.
А дрочитель массивов будет все это учить с нуля.

ЗЫ кстати на сисдизайн интервью все эти бэленсеры и масштабирование как раз обговаривается, причем как раз по принципам решений каких проблем их используют и зачем, а не в контексте облака.
Так что как раз те кто прошел интервью в этих вещах очень хорошо шарят.

Ок, мы про разное говорим. Я про то что для архитекта с практической точки зрения таки полезней знать про лоадбалансеры, шеринги, 100500 баз данных итд, нежели про алгоритмы\структуры; и в этом ключе литкоддрочество со стороны фангоподражателей весьма спорно.
А не про то что облака это чтото принципиально новое и чего раньше никогда небыло. Понятно что все паттерны изобретены хрен когда в 60-х итд.

Вот я например учу как работает Kubernetes внутри

Тут явно подразумевалось, не про изучение исходников (что на невисном Го), где аполне могут быть и деревья и масивы итд, А особенности режимов работы, конфигурации, деплоя итд.
Для Гопников, велосипедить дерево, скорей всего нормальная практика, ибо отсуствие генериков = свой код на каждое дерево :-)

Еще один адекват в треде.
А то тут остальные думают что архитекты сидят массивы сортируют.

Я этот клауд нейтив и серверлесс еще 5 лет назад видел, когда пытались на клаудинари собрать админку для сайта.

Граблей отхватили просто феерическое количество:
— есть 10 айтемов в списке, геттим, приходит 10, ок да
— пушим запрос на удаление 1, получаем 200 ОК
— геттим опять список — снова пришло 10 штук о_О
— подождали несколько минут
— геттим опять список — пришло уже 9 штук как и ожидалось

И этот геморный кеш мы как только побороть не пытались, дошло до того, что запилсывали в стор ИД удаленных записей и перед рендером выводили дифф -_-

Есть же разные консистенси левелы, в CosmosDB их 5 штук например, в твоем примере явно не стронг консистенси была. Вот поэтому облака и надо знать, что бы не материться на них потом.
А то это напомнило людей, котоыре не осилили JavaScript и всем рассказывают какой он хуевый.

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

Что б не терялись данные, надо знать не облако, а что такое консистенси и нормальные формы. Примерно как порешать задачки литкода на сортировку, иначе негоже носить погоны «эффективно умею сортировать массивы встроенным qsort»

Видимо ты сам не знаешь. Потмоу что урвони консистенси распределенных систем не имеет никакого отношения к нормальным формам SQL, и уровням изоляции SQL. Если что, то все уровни изоляции SQL можно реализовать в распределенной системе используя разные уровни консистенси распределенных систем.

Если говорить про .NET, то там комбинированная сортировка, при сортировке массива он разбивает на partitions и используется heap sort , для сортировки самого partition используется insertion sort.

Жаль что вы в техподдержке клаудинари тогда не работали, быстро бы тикет закрыли. А мы-то месяца 3 таскались, первый чисто на отписках дефолтных, потом допинали аж до девелоперов облака. Матерились тогда и мы, и саппорты, и они.

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

там без знания облаков делать нечего

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

Когда будешь искать на архитекта, техлида, или 8к синьора, будут спрашивать.
Я не представляю кого сейчас берут на техлидов и архитектов без знания облаков.

Розумієте, від Вас вимагають знання хмар, оскільки Ви з ними працюєте. Але є багато областей в розробці ПЗ, де знання хмар не потрібні, наприклад розробка системного ПЗ.

Системное ПЗ, это отдельная тема, как и всякие геймдевы.
Я пишу про обычный Enterprise, Web, и тп. Где 90% всех разработчиков работает.

Я пишу про обычный Enterprise, Web

Крудошлепство :-) Хоспади, а разговоров то было.

Это вершина эволюции, а ты можешь и дальше дрочить нолики и единицы в стиле 60-х годов в своем Embeded, или где ты там.

Это вершина эволюции, а ты можешь и дальше дрочить нолики и единицы в стиле 60-х годов в своем Embeded, или где ты там.

Помяни меня незлым тихим словом, когда будешь смотреть очередной шыдевр на нетфликсе или играться в плойку :-)

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

у меня топовая видяха, и ничего не тормозит.

А у меня не топовая
И литкод тоже не тормозит :-)

Сейчас оптимизация это давно не дрочка ноликов, а работа с архитектурой и инфраструктурой.

И дрочка ноликов в том числе

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

Понятно что надо понимать что такое сложность алгоритма, хешсеты, и не писать вложенные циклы.

Я уже понял что ты не понимаешь когда нужны вложенные циклы, а когда один цикл.

Что тут понимать? Везде где можно один цикл сделать, надо один цикл делать.

Что тут понимать? Везде где можно один цикл сделать, надо один цикл делать.

Понимать то, что в большинстве случаев, вложенные циклы компилятор разберет на куски: внешние пойдут в параллелизм, внутренние — на векторизацию, и для них он, видя константные границы в цикле и predictable stride & break — легко сделает наиоптимальнейший SIMD. Может сделать и для одного цикла, но это не точно.

Не знаю на чем ты пишешь, но в .NET, Java, JS и других попсовых языках само ничего в паралельность не пойдет, если ты явно не будешь потоки создавать.

Ага в былые времена тестировщики с девелоперами ацки перекидывались какашками один в одного. Теперь девопсины с девелоперами.

доказывали, что глвное знать Литкод

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

Ага все 200 сервисов, вот я например сдал последний левел архитекта во всех облаках, и потом понял что я на самом деле нефига не знаю.
Это синдром кое-кого у тебя, раз ты пишешь про месяц, значит ты сам не представляешь что значит знать облака.
Напомнило HR-ку которая советовала подтянуть английский за выходные.

Ты сидишь задрачиваешь сервисы, которые через 5 лет уже не будут существовать скорее всего. Это еще более убого чем задрачивать литкод, так как его знания навеки уж точно.

Я не сколько сервисы задрачиваю, сколько патерны реализации распределенных систем на примере конкретных сервисов.
Вот я выучил автоскейлинг в Kubernetes, и потом сходу понял как он работает во всех облаках, и в PaaS сервисах, и в IaaS.
Потом задрочил как Kafka работает, и сходу понял как Master-Slave базы данных работают.

А в мс все равно не взяли :-)))

Так я не готовился вообще. Странно было-бы если бы взяли.
В FAANG еще не один смертный не попал без подготовки, обычно перед первым оффером этот Литкод дрочат годами.
Но я еще хорошо прошел кстати.
Онлайн задачи вообще на 95+% решил, на онсайте отвечал на 3 и на 4(по пятибальной) потому как там даже не Литкод был, а новая ***ня, и я аж растерялся когда Литкод не спросили.
А Систем дизайн само собой прошел идеально(рекрутер так сказал в фидбеке).

В FAANG еще не один смертный не попал без подготовки

Я ж тебе уже писал, я попал.

Мой первый офер от Амазона — мне было по приколу полететь посмотреть Сиэтл бесплатно (я был бедным гребцом, лишних денег на билет и гостинницу не было), и случайно получил офер.

В какого году?
У тебя есть инфа, про то, что хоть один человек попал в FAANG без подготовки после 2015-го? И без выступлений на олимпиадах по программированию.

хоть один человек попал в FAANG без подготовки после 2015-го? И без выступлений на олимпиадах по программированию.

Нет ничего проще. Поднимаешь свой стартап, продаёшься стартапом в FAANG, становишься в FAANG главой разработки своего отдела/продукта.

Не только просто, но и прибыльно. И литкод задрачивать не нужно...

Зачем тебе знать какой год? Чтоб сказать «конееечно, в том году был солнечный всплеск и задачи задавали сложные, а теперь задают трудные»?

Ты исходил из предположения, что никто не может попасть в ФААНГ, не зубря задачки. Я тебе говорю, что это возможно, это делает куча людей на разные позиции.

Я задрачиваю задачки не потому, что мне хочется попасть в ФААНГ, мне для этого достаточно показать свое резюме. Я делаю это чтоб попасть в команды, которые я хочу на условиях, которые я хочу, а не пастись там, где сидит нород типа тебя.

Приведи конкретный пример как кто-то последние 2 года попал в FAANG из СНГ вообще без подготовки?
Вот был синьор, лид или архитект в лидере рынка в Украине, он специально ничего не учил, просто пошел на интервью, и его взяли в Google.
Я уверен на 100% таких случаев нет.

А что там в FAANG мёдом намазано? Лично ко мне рекрутеры из Google в личку не пишут. Меня и тут неплохо кормят, зачем?

Только в FAANG, а конкретно например в FB, средняя ЗП принципала(архитект по нашему) 1,000,000$ в год, и это средняя ЗП, то есть можно получать и больше.
Кроме них обычному наемному работнику нигде столько не дадут.

И ты хочешь, чтобы местные сениоры с условными $10k рассказали тебе, что требуется от принципала в FB с $1M?

Не говоря о том, что в Leetcode я не вижу ничего сверхъестественного.

Тут парочка на Доу по 500+k$ получает(тот у кого я спрашивал походу тоже), не лям конечно, но и в Украине они не архитекторами были, а мидлами и синьорами.

Зачем тебе это? Я знаю как факт, что люди попадают в FAANG без литкода, потому что я как минимум принимал участие в телефонных интервью и видел уровень людей, которые идут.

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

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

С 2010-го где-то как раз и начали Литкодом трахать. Раньше спрашивали про гномиков и сколько шариков в самолет влезет, что было легче заучить чем 1.5к задачек с Литкода.

что было легче заучить чем 1.5к задачек с Литкода

Вот потому тебя и не взяли в мс — ты заучиваешь литкод

А все остальные типа с рождения деревья строят?
Все кто в FAANG хотят попасть, как раз и занимаются тем, что дрочат эти задачки 24/7.
Чувак спросил у FAANG-овцов: -какую книгу по Компьютерным Наукам почитать?
Ему ответили: -Теория это фигня, иди сразу заучивай задачки, и самые лучше их решения.

С 2010-го где-то как раз и начали Литкодом трахать

это не правда, кодинг в мс был всегда, но к кодингу еще приглались брейнтизеры про круглые люки и горы фудзи. В районе 2010го года брейнтизеры убрали, т.к. оригинльных брейнтизеров не так много и к ним легко подготовиться.

Я так понимаю, в 2010-м началась гонка вооружений по кодингу, если раньше спрашивали наверно только изи задачки, то потом соискатели начали задрачитвать Лтикод, и сложность начали повышать.
И уже те, кто специально не учил Литкод, не могли получить оффер.
А только те, кто долго готовился.

задачки в мс были и сейчас есть литкод изи-мидиум, сложность особо не менялась. Может быть стараются не задають известные задачи типа «2 сам».

Кто-то писал что в Amazon дают 4 харда, и по 20 минут на каждый, и попробуй хоть один не реши.

я этим летом прошел интервью на SDE3 в амазон. Там не было 4ох хардов. Половина кодинг задач была вообще не литкод стиля. Классический литкод хард был только один, и решал я его все интервью, а не на 20 минут как ты тут пишешь.

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

У меня тоже ООП было, видимо FAANG наконец доперли что одних сортировок массивов мало, и надо в ширь знания проверять а не в глубь.

в стиле литкод мидиум, но на литкоде я таких не видел.

А в чем отличие от обычных Литкод задач?
Или принцип задач такой-же, но просто их на Литкоде еще нет?

Или принцип задач такой-же, но просто их на Литкоде еще нет?

да, где-то так.

лол, знания с литкода остаются до ближайшего оффера

Easy задач по массивам

Это те которые чисто на интуиции можно решить?

Литкод и алгоритмы нужно пройти один раз в универе. Для этого и есть универ. Если потом спустя 10 лет понадобиться своя сортировка — загуглишь вспомнишь. Ну и будешь понимать хоть приблизительно как работает индексы в субд.

спустя 10 лет

Ага, а почему тогда IELTS, TOEFL, и все сертификаты Azure и AWS, и тп, действительны только 1-2 года?

все сертификаты Azure и AWS

их наверное только индусы проходят и вешают в рамочки

IELTS и TOEFL без которых не получить гражданство в Канаде, и других развитых странах, и не поступить в топовые универы мира тоже индусы придумали?

Отчасти. Есть расхожее мнение, что часть нативных граждан не сможет сдать эти прекрасные экзамены. При этом продолжая оставаться гражданами, носителями языка и прочее по определению. Если и не индусы, то все равно чертовски гениальные люди придумали.

Это придумали украинцы, которые не осилили эти экзамены.
Между C2 не нейтивом который сдал IELTS на 8.5 и нейтивом гигантский разрыв.
Нейтив знает английский во много раз лучше чем C2 не нейтив.
Если сравнивать с любым офисным работником хотя-бы, а не с зеками и лутерами.

все сертификаты Azure, и тп, действительны только 1-2 года?

1) Потому что каждые 2 года выпускается целый ворох новых сервисов, которые этим «сертифицированным архитекторам» надо знать.
2) Потому что иначе курсам и сертификационным центрам будет не с кого стричь бабло.

А IELTS и TOEFL что скажешь?
Английский тоже каждые 2 годя меняется?

2) Потому что иначе курсам и сертификационным центрам будет не с кого стричь бабло.

Я реально за 2 года как-раз забыл те разделы английского которые не повторял.
Сейчас опять начал C2 грамматику повторять потихоньку, как раз через 2 года как прошлый С2 курс прошел.
Так что эта цифра очень даже обоснованная.

Опытные, крутые специалисты могут вообще не решить Easy задач по массивам

То не настоящие инженеры, а форпмошлепы!
Любой настоящий инженер с рождения умеет строить потокбезопасные красно-черные деревья за 20 минут.
FAANG же не могут ошибатся!

Зато умеют написать систему и выпустить в прод. Ценны для бизнеса.

Это все фигня, любая макака может, для того кто это умеет, позиция мидла — потолок, главное это уметь решать задачки на Литкоде.
Тогда ты сможешь написать СВОЙ фреймворк, а не писать на ЧУЖОМ фреймворке!
И еще надо рассказать как ты влиял на решения CEO силой мысли на интервью.
И разворачивал бизнес компании, на 180 градусов, и запускал новые продукты.
Это уже для Стафа и Принципала.
Богатая фантазия и опыт написания фанфиков большой плюс для этих позиций.

Любой настоящий инженер с рождения умеет строить потокбезопасные красно-черные деревья за 20 минут.

Справедливости ради, это таки не изи задача.

Звичайно не ізі. Це взагалі не зовсім прикладна задача. Кожного, хто намагатиметься засунути в проект такий самонаписаний велосипед, треба бити по пальцях або зразу по голові. Є готові рішення які вже якось відтестовані і з набагато меншою імовірністю підсунуть тобі сюрприз на проді. Якщо готових рішеннь немає, треба добре подумати — а що ми намагаємося зробити і чому за увесь час до нас це нікому не було потрібно? І тільки переконавшись що таки да, ми такі всі унікальні, будувати власний велосипед.
Особливо прикольно, коли приходить хтось зі сторони, йому з гордістю цю штуку показують, він на неї довго дивиться, питає «а чому не зробити так ... ?» і пропонує елегантне нестандартне рішення. І ти такий: мля-я-а... красиво... мамо я дибіл... І починаються пошуки недоліків цього рішення і переваг «велосипеда». )))

Кожного, хто намагатиметься засунути в проект такий самонаписаний велосипед, треба бити по пальцях або зразу по голові.

Так само треба бити по пальцях або зразу по голові і тих хто намагається усе заімплементити за допомогою ліб. А потім, сидиш такий — і як усе це зібрати на новій платформі...

Глянув твій профіль — жава, я с++, тут усе набагато складніше збирається, взагалі збирати щось на плюсах це довічний геморой навіть з велосипедами (але трішечки менший). На джаві якщо немає проблем з перформансом та озу — я б теж не робив велосипеди.

так це чудово: не так давно портували проект з С++ (правда написаний скоріше в С-style чим в С++) — практично не було проблем в тому що він юзав сторонні ліби :))
P.S.
Я памятаю як воно збирається (швидкість) — колись замість спостереження за тим як Borland C++ 2.0 збирає не надто великий проект ми пішли пити каву.
Зараз з невеликими проектами все краще, але замість спостереження за тим, як Visual C++ компайлер збирає трішки кастомізований клон Firefox все ще краще піти пити каву. :)
Хоча, думаю, проблема була більше в роботі з диском — якщо засунути все на SSD можливо було б краще.

Это же тролинг Литкодовцев был🙈
Не думал что кто-то эту дичь что я написал воспримет в серьез, и не поймет что это шутка.

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

Заметил у литкод задротов с логикой часто все печально.
Они не могут понять о чем разговор на Доу часто.
Понимают все как роботы, тупо как написали, а не подтекст написанного, и интонации.
Тут один из FB был, так он вообще все коменты понимал тупо дословно.

Упоротые тоже за клоунов пытаются прокатить, но, как видишь, получается не всегда.

Задачи в бизнесе бывают разные, и реальное программирование разное. Например, у тебя есть один заказчик, который платит бабло, и ему в общем-то всё равно какие фреймвёрки, либы ты используешь. Тут leetcode не нужен, надо знать фреймвёрки. А теперь тебе надо разработать свой фреймвёрк. Тут уже есть ограничения по поводу либ, которые можно использовать. И задачи возникают поближе к тому, что на литкоде и т. п.

Поэтому так всеобъемлюще обобщать не надо. И каждый сам решает, какого рода спецы́ ему больше нужны́.

А теперь тебе надо разработать свой фреймвёрк. Тут уже есть ограничения по поводу либ, которые можно использовать. И задачи возникают поближе к тому, что на литкоде и т. п.

Прям 100% инженеров в FAANG пишут свои фреймворки?
В том числе джуны у кторых тоже спрашивают Литкод?
Ты смотрел исходный код какого-то фреймворка?
Видел там где-то сортировку массивов в ручную? и обход дерева?
В .NET например сортировка массивов только в методе Sort, и OrderBy.
А дерево только в ConcurrentDictionary.

Видел там где-то сортировку массивов в ручную? и обход дерева?

А що, питають саме написати власний алгоритм сортування? Ніколи не чув. На leetcode я бачив розташувати N ферзів на шахівниці розміру NxN тощо, та інші спинномозкові задачі, на які марно витрачати час.

Ты смотрел исходный код какого-то фреймворка?

Я не люблю працювати саме з фреймворками, мені більше заходять ліби, застосунки. Там, там досить часто усе реалізовано на більш низькому алгоритмічному рівні. Щоб розібратися в nginx треба розуміти списки, ...

На leetcode я бачив розташувати N ферзів на шахівниці розміру NxN тощо,

Ох какая актуальная таска, я прям каждый день ферзей гоняю на реальном проекте.

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

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

Сложность разработки давно не в сортировке массивов уже. Это все библиотеке делают.

А все задачи на leetcode только на сортировку массивов? Библиотеки есть, замечательно. Но мне больше по дуще писать библиотеки самому :)

Здесь одно другому не мешает. Есть куча как оплачиваемых позиций, так и опенсорс.
Там достаточно долго висели позиции в clang, яблочные компиляторские. инфобез и несколько других интересных вещей на ремоут. По деньгам вроде не обижают на платных. Я не буду вступаться за Джона, но по-моему тут скорее поинт в том, что это очень нишевая, хоть и денежная штука. В обычной разработке задачки даже на банальную алгоритмическую сложность попадаются примерно чуть чаще чем задачки на реверс чужих приложений и динамические инъекции в системные библиотеки. Интересно, платят — но редко. Как минимум через местные прослойки.

Например, у тебя есть один заказчик, который платит бабло, и ему в общем-то всё равно какие фреймвёрки, либы ты используешь.

Припускаю що вони є, але я таких замовників не бачив. Якщо це не коробочне рішення, переважно у замовника є вимоги до стеку/фреймврків/ліб/ліцензій і т.д.
Замовник який дозволить розробнику засунути в проект свій самописний фреймворк...ммм... я б припустив що він несповна розуму — хто це потім буде супроводжувати?

Замовник який дозволить розробнику засунути в проект свій самописний фреймворк...

Я на таких проектах був, тільки замовлення було інакше: розробити фреймворк, який потім буде окремо продаватися, ...

У меня есть теория что, возможно, это способ проверить насколько человек действительно хочет в конкретную компанию и уменьшить попрыгучесть, ибо подготовка к собеседованиям занимает достаточно много времени и сил и уже не получается просто в обед сходить в соседнее здание и получить там «+500». Если это так то уровень упоротости компании в сложности задач еще и позволяет им получать именно тех, кто им близок по складу ума и взглядам на жизнь. Компания, дающая сложнейшую (или несколько) задачу на собеседовании? Они прекрасно понимают что ты должен проработать сотни задач чтоб успеть решить такое за 45 минут. Кто может проработать сотни или тысячи задач? — наверное в большей степени те, кому в жизни больше нечем заниматься. Значит будет посвящать себя работе на 100%. А если у тебя жизнь, семья, еще какие-то интересы в жизни — то найти время на подготовку очень непросто. Значит и на работу больше 40 часов в неделю не найдется времени. Такие не надо

Так наши ФАНГовцы с ДОУ в рабочее время все решают. По 3-4 задачи в день некоторые.
То есть они нефига не работают. И FAANG-ам от такого только хуже.
Так бы равали жопу на работе, а там можно *** ложить на свой проект, так как для повышение ЗП главное задачку решить, и сказку сочинить.

Значит будет посвящать себя работе на 100%

да нет же, будут литкодить вместо работы. В итоге — компания нанимает некачественных специалистов (потому что их ничего кроме литкода не интересует), так те мало того что некачественные — они ещё и работают плохо потому что продолжают литкодить в рабочее время.

ну, компании платят — они же и заказывают музыку. Значит устраивает

Компания, дающая сложнейшую (или несколько) задачу на собеседовании?

Ну... я бы не сказал, что сложнейшие задачи это про литкод. Какая задача сложная в твоём понимании? Просто интересно...

Я думаю, что собеседуют как раз те, кто искренне не понимает, как такая задачка может вызвать затруднения. Потому что это их стиль жизни и кодинга. И да, таких образом набирают тех, с кем комфортнее работать.

вопрос не в сложности конкретной задачи, вопрос в ограничении по времени. В тот же Фейсбук, считается, что ты должен делать на доске 2 задачи хард за 45 минут чтоб точно быть уверенным что пройдешь. Чтоб добиться такой скорости недостаточно просто знаний. Надо назадротить эти задачи до автоматизма. Фейсбук один из двух FAANG-ов, в которые у меня так и не было оффера (второй — эпл, не сильно и хотелось туда, думаю мог бы и их оффер получить), ибо я просто не готов посвятить много месяцев своей жизни надрачиванию литкода (хотя, в принципе, умею решать такие задачи на каком-то уровне)

я получил эфферы от fb и эппл в этом году, я бы не сказал, что интервью в эппл было легче, имо, кодинг раунды в FB более предсказуемы. В эппл все зависит от команды, как я понял стандартного набора задач нет.

Я тоже такое слышал. Надо просто попасться на команду что менее упорота по " 2 литкод хард за 45 минут идеально и не ипет"

Я не думаю, что всё так запущено. Понимаешь, для любой задачи можно делать много разных оптимизаций, что будет выливаться в дополнителное время. Опять же, что такое доска? Вот я н а литкоде видел задачу размещения ферзей на доске NxN. Вроде как наибольший рейт из возможного, но там больше технической реализации. Её писать на доске??? У меня вышло 139 строк и два часа. post.

Это всё мне больше видится как манипуляции...

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

Хмм... Но если у тебя развитое мышление «не имеет отношения в реальным навыкам», то чем же ты занимаешься на работе? Сортируешь апельсины по размеру?

Литкод — это то что раньше было олимпиадами по программированию.

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

Что такое реальное программирование? Кнопочки по пикселями сдвигать?

2) Опытные, крутые специалисты могут вообще не решить Easy задач по массивам. Зато умеют написать систему и выпустить в прод. Ценны для бизнеса.

На самом деле нет, как правило такие рахитекторы резко исчезают с горизонта когда система начинает масштабироваться и выясняется что оно работает быстро только когда количество элементов равно 3, а при 10 элементах сдувается напрочь и чтобы оно работало надо переписать с нуля.

На самом деле нет, как правило такие рахитекторы резко исчезают с горизонта когда система начинает масштабироваться и выясняется что оно работает быстро только когда количество элементов равно 3, а при 10 элементах сдувается напрочь и чтобы оно работало надо переписать с нуля.

А что, сортировка массивов вручную, или обход деревьев и графов в ручную, помогут системе масштабироваться?

Умный в древо не пойдет, умный древо обойдет ;-)

Когда ты реализовываешь их вручную и проходишь литкод ты имеешь представление что под капотом, а не бездумно вызываешь qsort() из кода.

Как именно мне знание кода в методе qsort поможет масштабировать систему?
А то наверно я зря облака, автоскейлинги и шардинги учил, надо было массивы сортировать.

Как именно мне знание кода в методе qsort поможет масштабировать систему?

А тем что между сделать массив отсортированным и отсортированным за детерминированное количество операций находится целая пропасть. qsort() может быть quicksort а может быть и introsort, heapsort, гибридом и т.д. стандарт не накладывает такие ограничения. Если ты не уверен в количестве элементов — нужно думать, а не использовать стандартные вещи из коробки.

А то наверно я зря облака, автоскейлинги и шардинги учил, надо было массивы сортировать.

По-ходу облака тебе тоже не помогли.

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

А то наверно я зря облака, автоскейлинги и шардинги учил

Ну если учил, то таки зря..

А ты наверное с рождения это знал?
Или ты сначала кодишь, а как что-то сломалось открываешь мануал?
Вот у нас например архитект со стороны кастомера решил что облака это фигня, и там их нечего учить, и задеплоил бекенд в одном регионе, а базу данных в другом, и потом весь проект из 50-ти человек не мог понять, почему из Украины с локальных компов запросы выполняются быстрее, чем из того-же облака.

Сначала получаешь / ставишь задачу, затем производишь исследования на тему «какие из современных инструментов решают мою задачу наиболее эффективно». А не учишь технологию «потому что потом другой работы не найдёшь, ведь все уже перешли на облака».
Не все перешли на облака.

На всех крутых проектах облака, есть куча легаси без облаков, но смысл на них ити.

Облака это не обязательно конченые ненужные микросервисы.

О, сразу видно эксперта:
Алгоритмы сортировки — сила.
Микросервисы — могила.

это то что раньше было олимпиадами по программированию

Почему «раньше»-то?

То, что было на олимпиадах по программированию в 90-2000, сейчас на литкоде, уровень современных олимпиад все таки выше. Ну по крайней мере мое восприятие задач именно такое.

Опытные, крутые специалисты могут вообще не решить Easy задач по массивам

це взаємовиключення.

Зато умеют написать систему и выпустить в прод. Ценны для бизнеса.

А про що ФААНГ ще можна питати кандидатів?
Там ж нема привʼязок до конкретної мови або технології. Там ти — інженер, який свічнеться на будь-що, на чому треба буде писати, як тільки буде така потреба.
Та й тули/фреймворки/ліби/компілятори/etc — в них свої, самописні для internal use.
Хз як за весь ФААНГ, але про Гугл багато разів чув таке.
Вот і лишається літкод

Это снова наш архитектор дотнетчик, который не прошел в мс, но его дальше бомбит по этому вопросу? :-)

нэт. он толко спросит.

Полистал этот ТолькоСпросить акк — по коментам не похоже что это матаноненавистник-дотнет_орхитектор за 7к, хотя я уже затрудняюсь ответить сколько тут кодерков (максик), котэ и версий бубна :-)

Весь этот форум и мы, это все сон Пение :-)

Весь этот форум и мы, это все сон Пение :-)

Читая что он тут строчит — меня напрягают его способности к фантазированию :-) Как бы ему не приснилось что-то эдакое, нам же все это в его снах и разгребать :-)

Как бы ему не приснилось что-то эдакое

типа Дия Сити? ))))

типа Дия Сити? ))))

А он хочет в Дия Сити вступить?

Та мало ли что ему снится ))))

Если мы его сон, предлагаю начать решать литкод
Он его ненавидит :-)

Это не я, и как выяснилось, не только у меня есть способность думать своей головой.

.NET Solution Architect by himself в треде, автор не я, а другой адекват, которому хватило ума что-то анализировать, а не повторять за FAANG как мартышка.

которому хватило ума что-то анализировать

Или, более точно, не хватило ума решить Easy задачу

Я же тебе писал, я сходу решил все изи и медиум задачи, 2 на 100% одну на 95% так как if забыл там один.
А ты мне писал что за 20 лет на реальных проектах ты ни разу не строил дерево.
О чем дальше спорить?

за такой перфоманс на интервью как ты здесь рассказываешь, мсфт не только отрывает кандидата с руками и ногами, но и аплевелит его на уровень выше. Я еще ни разу не видел что-бы кого-то не взяли за одну задачу решенную на 95%.

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

А ты мне писал что за 20 лет на реальных проектах ты ни разу не строил дерево.

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

Ты же вроде писал, что серелизовал дерево на интервью.

Судя по тому что он тут появился ровно сегодня (а ТС замолчал и вопросы не задает), то да, автор темы это наш дотнетчик :-)

Підписатись на коментарі