Стоит ли увольняться чтобы проходить LeetCode?

Я условный 23-х летний украинский техлид, которому по американским меркам не хватит календарного опыта даже для синьора, но который веслает на своей позиции, субъективно нормально, наравне с американцами. И у меня появилась гениальная (убедите меня что нет) идея, взять отпуск или уволится на пол года, и эти полгода чисто проходить литкод. Что бы потом попасть в Microsoft или другой нормальный FAANG.

Почему я это хочу?

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

2) Через 10 лет работы техилдом или архитектом я буду все так-же далек от Microsoft как и сейчас, а с возрастом способности и желания что-то учить стремительно падают, и 14-ти летний школьник пройдет все 1200 задач на литкоде быстрее чем 35-ти летний архитект, и даже быстрее чем 23-х летний синьор.

3) Хоть я и мечтал работать именно в Microsoft с детства, но гораздо больший мотиватор сейчас легендарные 500k$ в год которые чуть ли не средняя синьорская компенсация в некоторых компаниях. И ради этого стоит рискнуть, а вернутся на условные 5к в родной лидер рынка можно всегда.

4) Среди недели я работаю по 12 часов, и учить что-то нет времени, и сил, но их и не было когда я работал меньше. Я заметил что мне даже после относительно легкого рабочего дня что-то новое учить очень тяжело, и это лучше всего делать с утра. А на входных надо учить то, что более актуально для текущего проекта, делать что-то по дому, и хоть как то отдыхать. Может кто-то и может проходить литкод по 8 часов в день в субботу и воскресенье, но я не представляю вообще как такое возможно после 5-ти дней такой же умственной нагрузки. Поэтому на мой взгляд остается только вариант с отпуском.

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

1) Без литкода в Microsoft так же нереально попасть как и в другой FAANG? или все таки возможно?

2) Сколько все-таки надо решить задач чтобы попасть в Microsoft/FAANG с высокой вероятностью?

3) Реально ли проходить литкод пол года 24/7 или это древняя магия после 2-х часов которой твой мозг сгорает?

4) Не сыграет ли со мной злую шутку на интервью в FAANG тот факт, что я не работал перед этим пол года?

5) Какую зарплату реально получить в США (допустим даже с гринкой) вообше не умея решать задачки с литкода на интревью, но при это умея рассказать что такое деревья, графы, хеш таблицы, стеки, очереди, сложности алгоритма, тп? Я читал много версий, от той, что тебя не возьмут мидлом в рога и копыта, до той, что можно простить чуть ли не 250к не в фаангах.

6) На сколько важны годы опыта в США? Есть ли какой-то однозначный минимум для синьора, лида, архитекта? Тут я тоже слышал разное, что тебя не возьмут на синьора без 6-ти лет опыта, будь ты хоть трижды гений, и что вайтишники с нулевым опытом попадали в Google чисто пройдя 1к задач на литкоде.

7) Чего еще украинскому синьору/лиду не хватает для того чтобы считаться американским синьором/лидом и попасть в FAANG помимо литкогда? Может есть еще какие-то темы без которые тебя в Украине легко берут куда угодно но в США ты никто?

Если что, то сейчас я живу в Украине и гринки или визы у меня нет.

👍НравитсяПонравилось1
В избранноеВ избранном15
LinkedIn

Лучшие комментарии пропустить

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

Мне тоже 23 и я сделал что-то похожее, но вместо увольнения брал много отпусков ближе к календарным праздникам. Получил несколько офферов и через несколько недель стартую в одном с FAANGов.

Касаемо времени:

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

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

Касаемо ЗП:

$500k — достаточно сложная цель для людей с паспортами стран третьего мира, видимо по этому так много и платят. Большая часть людей идет по пути работы в одном из Европейских офисов (обычно компенсация в два раза ниже чем в штатах) и после года переводятся по L1. Но есть очень важный момент — зарплата в FAANG состоит из base salary + stocks. И при переводе между странами коррелируется только base salary, в то время как количество акций у тебя не меняется. И выходит, что люди, которые перевелись по L1 в итоге получают меньше, чем те, которых наняли на месте. Со временем, конечно, всё уравнивается — либо через refresher stocks, либо через гринку и прыжок в другой FAANG. Но легких денег быстро ждать не стоит.

Как готовиться:
Алгоритмы — это главная часть, хоть и не единственная. В первую очередь нужно привести в порядок базовые знания. В этом плане мне очень помог interviewcamp.io. У них есть много подробных видео по каждой из тем, которые покрывают всё, что нужно знать для leetcode интервью. Также много информации по system design (но только для бекэнда) и еженедельные семинары, куда либо приглашают разных гостей из FAANG, либо просто разбирают разные вопросы.

Параллельно с теорией и после нее нужно фокусироваться на практике. Самый лучший вариант — купить Premium аккаунт на leetcode и решать задачки которые спрашивает компания в которой у тебя интервью, сортированные по популярности (как часто спрашивают). Ориентируйся на 150-300 решенных задач.

Так же есть очень популярный список из 74 задач. Список покрывает все темы с собесов и состоит из самых популярных задач на эти темы: leetcode.com/list/xoqag3yj.

Я не советую сидеть по долгу над каждой — лучше брать количеством. Поэтому после 15 минут можно искать решение. Мне очень заходили видео с объяснениями на YouTube. Если вбить в поиск название задачи, обычно найдется несколько видео с её объяснениями.

Мои любимые каналы:
www.youtube.com/c/BackToBackSWE — самые лучшие объяснения на доске.
www.youtube.com/c/NickWhite — очень советую найти его видео про то, как он провалил собес в Гугл.
www.youtube.com/c/KevinNaughtonJr
www.youtube.com/c/happygirlzt — не идеальный английский, но она разобрала нереальное количество задач и объясняет очень понятно.


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

Что касается нетехнического интервью, я бы советовал отложить подготовку на последние дни, так как всё очень быстро забывается. Желательно спросить рекрутера про подробности, иногда они сами говорят конкретные вопросы. Дальше просто пытаться про себя ответить на все вопросы, по типу «What’s your biggest learning/failure» и записывать тезисы в блокнот.



Вот как-то и всё, надеюсь мой опыт будет полезен :)

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

Я однажды с Leetcode до таких «чертиков» до решался, что мне приснилось, что я item внутри массива, слева от меня была запятая, а справа скобка (]). И мне нужно было решить, на какое место меня нужно поставить...

Около года назад я примерно так и сделал, уволился в никуда и сфокусировался на подготовке к интервью. 5 месяцев был без работы и уделял время в основном подготовке, после чего еще 4 месяца в параллель с «обычной» работой по утрам повторял то что выучил. Примерно 500 задач(20%easy-70%medium-10%hard).

Подобный спринт по литкоду является лишь финишной прямой, перед этим желательно параллельно с работой получить:
1. Свободный разговорный английский, желательно с минимизированным акцентом.
2. Развитые софт скилы.
3. Знание и понимание алгоритмов\структур данных.
4. Понимание как работает клауд, System Design.
5. Умение учиться. (лол, что тут сложного, да?). На курсере есть лекции по умению учиться и это золото.

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

Когда предварительные требования есть, и остается только литкод, то нужно здраво оценить свои ресурсы на спринт:
1. Финансы (Пол года без работы с последующим вероятным уроном карьере).
2. Самодисциплина (КАЖДЫЙ день 4+ часов задач это очень сложно, особенно на протяжении полугода). Мотивация играет очень большую роль, нужно для себя понять что именно толкает на подобное, если это погоня за престижем, то наверное всё же не стоит.
3. Приглашение на интервью, желательно не от одной компании. (Это кстати достаточно сложная часть и лучше иметь план как это получить).

Окей, а теперь сам спринт. На самом деле в день нормально сконцентироваться на задачах выходит 2-3 часа максимум, остальное время гораздо менее эффективное и гораздо более демотивирующее. Желательно практиковаться каждый день. Ориентироваться стоит на 2 месяца, 3 это максимум. Во-первых, 200 задач это sweet spot (по часу на каждую, 4 часа в день это примерно 2 месяца), Во-вторых, после после 3 месяцев буфер памяти не справляется и теряешь выученое (после 6ти месяцев нету даже чувства что уже решал эту задачу). Стоит также практиковать мок интервью, ресурсов хватает.

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

Восемь лет назад, будучи 22х летним украинским синьйором, я задавался тем же вопросом. Переехать у меня получилось семь лет назад весь процесс я изложил вот тут: larrr.com/...​azon-google-snova-amazon

Сейчас я синьйор в FAANG, работаю над project kuiper и провел больше сотни собеседований. Я постараюсь ответить на ваши вопросы, но не воспринимайте это как истину в последней инстанции, это просто мое субъективное мнение.

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

Это не правда. Во-первых FAANG нельзя обобщать, даже внутри того же амазона, собеседование может ооочень сильно отличаться в зависимости от команды. Акцент будет на совсем разных вещах и совсем разный bar. Кроме того, по моим наблюдениям, 95% русскоговорящих кандидатов фейлят собеседования в амазон совсем не по литкод задачам и дизайну, а из-за софт скиллов. При оценивании кандидатов они имеют такой же вес как и литкод.

2) Через 10 лет работы техилдом или архитектом я буду все так-же далек от Microsoft как и сейчас

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

14-ти летний школьник пройдет все 1200 задач на литкоде быстрее чем 35-ти летний архитект, и даже быстрее чем 23-х летний синьор.

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

3) Хоть я и мечтал работать именно в Microsoft с детства, но гораздо больший мотиватор сейчас легендарные 500k$ в год которые чуть ли не средняя синьорская компенсация в некоторых компаниях. И ради этого стоит рискнуть, а вернутся на условные 5к в родной лидер рынка можно всегда.

То что вы синьйор на Украине, абсолютно ничего не значит для США. Скорее всего вы переедите на junior/middle developer и там будет вот совсем не 500к. По крайней мере в амазоне, умение хорошо программировать не выведет вас дальше чем в мидлы.

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

lol, хочу быть синьйор девелопером в FAANG в 23, но не хочу/не могу работать по выходным :)

1) Без литкода в Microsoft так же нереально попасть как и в другой FAANG? или все таки возможно?

Как повезет, литкод увеличивает шансы, но это не гарантия

2) Сколько все-таки надо решить задач чтобы попасть в Microsoft/FAANG с высокой вероятностью?

Даже если решишь все то это ничего не гарантирует. Ваша вероятность попадания в FAANG с одного собеседования выражается формулой: C1 * как_прошел_кодинг + С2 * как_прошел_дизайн + C3 * как_хорошо_вы_забулшитили_софт_скилы + шанс_попадания_на_собеседование + шанс_что_с_визой_все_прошло_гладко. С1, C2 и С3 — это мультипликаторы которые зависят от интервьюверов, их настроения/веса и положения звезд на небе.

3) Реально ли проходить литкод пол года 24/7 или это древняя магия после 2-х часов которой твой мозг сгорает?

Вполне реально, но это требует тренировки.

4) Не сыграет ли со мной злую шутку на интервью в FAANG тот факт, что я не работал перед этим пол года?

Не думаю, но я бы об этом умолчал.

5) Какую зарплату реально получить в США (допустим даже с гринкой) вообше не умея решать задачки с литкода на интревью, но при это умея рассказать что такое деревья, графы, хеш таблицы, стеки, очереди, сложности алгоритма, тп? Я читал много версий, от той, что тебя не возьмут мидлом в рога и копыта, до той, что можно простить чуть ли не 250к не в фаангах.

Я не знаю ответа на этот вопрос и мне он кажется не корректным.

6) На сколько важны годы опыта в США? Есть ли какой-то однозначный минимум для синьора, лида, архитекта? Тут я тоже слышал разное, что тебя не возьмут на синьора без 6-ти лет опыта, будь ты хоть трижды гений, и что вайтишники с нулевым опытом попадали в Google чисто пройдя 1к задач на литкоде.

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

7) Чего еще украинскому синьору/лиду не хватает для того чтобы считаться американским синьором/лидом и попасть в FAANG помимо литкогда? Может есть еще какие-то темы без которые тебя в Украине легко берут куда угодно но в США ты никто?

— хорошего разговорного английского
— софт скиллов
— понимания бизнеса
— умения/опыта руководить и мотивировать сотрудников

Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Вот еще задачку обнаружил:
При реализации абстрактного программирования на ест. языке — необходимы такие пути к файлам:

Первый путь --- Программирование — пхп — цикл — «пример ... »
Тут все ок.

Теперь второй:

Программирование — жава — цикл — «пример цикла на жава ... »

И вот тут заковыка. Я поставил ограничение на ввод одинаковых элементов.
Такой элемент это цикл.

Возникла ошибка неуникальности. Решается она просто:
Программирование — цикл — пхп- «пример ... »
Программирование — цикл — жава — «пример ... »

Я тут переставил, поменял местами. Поднял вверх по дереву.

Это вообще-то надо рисовать. Откройте ваши пейнты и нарисуйте дерево.
Вы увидите, что в разных ветках одинаковые значения недопустимы. Уникальность необходима. Достижение уникальности происходит за счет утолщения ствола (мета-ветки)
Таг пути Цикл меняется местами.

Чем дольше не ветвится граф, тем быстрее будет поиск.
А при уникальности вообще летать все будет.

Еще это похоже на сложение вместе одинаковых элементов. Утолщение.
Как если бы вы взяли 10 картинок какой-нить птицы с прозрачностью 10% и одна на другую наложили. В итоге 100% непрозрачности. То есть, максимально возможная вероятность 100%.

Сейчас я делаю пример в своей модели (вассаби сайт енжайн)

P.S.
В моем твиттере есть обе схемы — правильного right
и неправильного
wrong

Тоже придумал задачку (еще одну, первая про кубики, здесь, в этой теме, другой ветке)
Передо мной лежит колода карт.
Нужно определить тип значения карты, которую я вытащу из колоды.
Карта может быть любая. С замком, с чашей, с бегемотом, с черешней. Рисунок рубашки любой.
Количество карт любым. Такая вот колода. Будьте как можно более точны, предлагая тип данных, где мы будем хранить это значение.
Если вы скажете, что когда информации недостаточно, то невозможно определить тип данных это и будет решение задачки.
В таком случае задача сводится к определению критериев достаточности собранной информации для выбора подходящего типа данных.
Но информацию из будущего трудно типизировать из-за недостаточности.
Абстрактно — ок, но неопределена. Не было касания наблюдателя — момента времени t
И мне кажется в силу всех этих колбаков и промисов некоторые увлеченно пытаются изобрести универсальный тип данных включающий будущее.
Ну тогда включите вероятности и частоты событий в ваши типы.
Именно так это моделируется, на мой взгляд.
Будущее абстрактно, неопределено, некий набор
Настоящее определено
Прошлое — тонны и тьмы результатов, следствий и последствий.

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

string

На кой инкапсуляция машине Тьюринга?

инкапсуляция

Це про більш високий рівень абстракції щоб не відволікатися на деталі реалізації.

машине Тьюринга

Це про абстракцію на якій можна демонструвати обчислення алгоритмів.

Ці два поняття не пов’язані.

Я не соображаю про паттерны или там схемы общеизвестные. Я их не могу вовремя (быстро) вспомнить поэтому решил не заморачиваться с изучением всех этих терминов.
Поэтому не знаю, изобретаю я велосипеды или нет.
Машина Тьюринга для меня это очередь событий и обработка этих событий последовательно.
Алгоритм примерно такой:
1. Помещаем в очередь событие инициализация
2. Запускаем внутренний таймер
3. Прерывание от таймера проверяет очередь. Обнаруживает событие вызывает соответствующую функцию с соответствующими данными
4. Исполнение порождает события, они записываются в очередь
и т.д. см п.3. пока не достигнуто событие конец вычислений
Факт тот, что любая программа вот так может быть сделана, как я описал.
Таблица примерно такая
ид_события, ид_функции, входные данные, выходные данные
И зачем инкапсуляция в подобной схеме?
Я не шарю, но интересно. Потому что если инкапсуляция излишня, то и ООП лажа.
Структуры данных еще ничего, но ограничение на то, чтобы были только внутренние (или принадлежащие) методы для работы с ними — тут что-то не то.
Последовательное применение правил (функций) к данным управляемое событиями и есть программа.
Но я не понимаю, зачем инкапсуляция. Требование скрывать реализацию удобно для продаж и хреново для разработки.

Инкапсуляция это мера предосторожности, профилактика изменения сигнатуры.
Вася слямзил вызов внутренней функции А (недокументированной)
Коля изменил сигнатуру этой функции (для своих целей)
У Васи все посыпалось,
Но при связи через события (там семафоры, проверка условий возможности вызова, куча всего...) инкапсуляция излишня. Не нужна.
Структуры в природе нет, есть просто наблюдательские иллюзии.
И наследования поэтому тоже нет. А если его введешь насильно, то рано или поздно получишь проблемы несовместимости с моделированием реальности.
Если бы все было прекрасно и ООП ок, то не было бы необходимости в функциональщине.
Но все гораздо хуже.
Мир устроен функционально-событийно. Так шта, будущее ООП уныло и мрачно.

И тут до меня дошло! В java между Object и String есть наследование, но в функциональщине наследование это применение одинаковых правил изменения данных.
Бай-бай, наследование. Бай-бай, ООП!
Я таки прав. Поймите алгоритм гуглить «life электронная жизнь алгоритм игра» ищи " Игра «Жизнь» — википедия " и будет вам счастье.

Все случайно.

Насмотрелся я дурак Дудя, про дома за 10kk$ в долине, а потом коллег послушал, про то, что дешевле чем за 3kk$ там домов нет. И решил все таки сам на zillow зайти, и офигел, в самом Mountain View дофигища домов по 150k$, типа такого:
www.zillow.com/...​CA-94040/2076491270_zpid
Коллеги из США, можете пояснить что почему он такой дешёвый? Есть какие-то подводные камни? В нем жить с женой без детей можно будет вообще?

Скоріш за все тупо один нолик забули. Зроби zoom out і побачиш що поруч там майже всі ціни >= 1.5M. Є парочка ~700k але то, мабуть, сараї.

Та не, много домов по 150-250к. В самом городе.

А те что по 1+кк по другому выглядят.

Какие в нем могут быть главные минусы из-за того что это mobile home?

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

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

ЗЫЫ: не пишут сколько HOA, в МВ наверное немало

А сколько она может быть? Я гуглил там 200$ максимум вроде, там же на него ипотека всего 700$

ЗЫЫЫ: 1100 футов это 100 кв метров, самому можно жить, но это очень мало.

Зажрались вы там) В Украине 100 кв/м для пары без детей это мечта для 99% людей.

Спасибо за развёрнутый ответ. А как понять дом продаться с землёй или без? На zillow это пишут где-то? Или там все mobile homes без земли продаться обычно?

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

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

В якийсь час в East Palo Alto (яке насправді ніхуя не на схід від Palo Alto, а насправді на північ) було найбільше вбивств на душу на селення по всіх США. Там просто були банди, які торгували наркотою і час від часу робили перестрілки. Довго взагалі англійською ніхто не говорив.

Та ну, там же 30 минут пешком до офиса Google.

Не знаю за ціни в тій місцині, але це дуже маленький дім, без гаража, без двору і скоріш за все в не дуже хорошому районі. Краще не треба.

Нефига себе маленкий, 65 кв/м это трешка в девятиэтажке же.
P.S. он даже 100 кв/м был, это даже больше чем мне нужно, как трешка в Тетрисхоле.

Нефига себе маленкий, 65 кв/м это трешка в девятиэтажке же.

Це говорить лише про убогість совєцьких бетонометрів. Так — це маленький дім. Мій на 145 квадратних метрів вважається маленьким і таким, що підходить лише родині з двох людей без дітей. Плюс задній двір з деревами, кущами, білками-єнотами і навіть яструбом який час від часу відвідує нас.

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

Це найменший будинок на нашій Place — більшість покупців хочуть простору.

До того ж дуже круто мати окремі туалети/ванни, місце де готуєш, де можна прийняти кількох гостей, де можна подивитися великий телевізор, плюс спальня та робочі кабінети. Воно то звісно можна і по совєцькі все це робити вчотирьох в одній кімнаті, але результат і відчуття будуть «срала-мазала-співала».

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

я сейчас сам живу недо двушке в 45 кв/м

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

трьошки в тетріс холі від 130м2

Ты прав, именно в нем 130 но в других сверх элитных типа Липок или Троян Таура часто бывает по 100 кв/м трешки.
P.S. в тех что я назвал 108-110. Ну +/- 10м2 то один хрен

Нефига себе маленкий, 65 кв/м это трешка в девятиэтажке же.

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

Я знаю что в США средний метраж на человека 90 кв/м Но объективно, зачем столько? Я из своих 45 кв/м не всем пользуюсь.

Я знаю что в США средний метраж на человека 90 кв/м

как-то я очень сильно сомневаюсь

Но объективно, зачем столько? Я из своих 45 кв/м не всем пользуюсь.

сперва писал много но решил урезать до краткого про себя могу сказать что оно стоит того и 60 метров «1 спальня 1.5 ванных» это «необходимый минимум существования» и то лучше если это будет «студио» пусть даже придётся пожертвовать «половинкой» ванны а так реально 90 метров это уже более или менее можно жить именно уже не задумываясь «зачем столько»

но это только если квартира потому что «дом на 90 метров» годен разве что в качестве пристройки к «гаражу workshop» метров на 100+ где фактически проводить все активности а «в доме» разве что кухня и спальня и ванная но это своего рода читерство потому что потом всё равно +1 ванную пристроишь и «в гараже»

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

Зачем? Я или сплю на кровате, или работаю за компом, или ем за компом, ну и готовлю на куне иногда что-то просте, для чего бы хватило и хрушевской кухни 6 кв/м. Мне бы и 30 метров хватило бы.

Я из своих 45 кв/м не всем пользуюсь.

ты сам или с семьей?
я скажу так если 45 метров на члена семьи то норм, если 20 то тесно

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

Ну порахуй, потрібна норм кухня і вітальня.
Спальня на двох і по спальні кожній дитині. 2, 2.5 ванни на сімю. Плюс кілька кладовок.

Найменше що я бачив в такі конфігурації під двох дітей — квартира 1400sqft квартира. Будинок має бути навіть більший, як вище написали.

это mobile home как уже написали а чтобы понимать поинт надо гуглить и разбираться кто такой mobile home

ЗЫ: скажем в флориде можно купить за $5-7 тыс в рабочем состоянии «можно заехать помыть пол побросать вещи и жить» при этом в доступности до всякой инфраструктуры с магазинами и до работы в смысле не в глуши на болотах

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

А какие там главные минусы?

где? в флориде?

В Флориде то все идеально)
Какие главные минусы mobile home я имел в виду. Если он в южном штате типа Калифорнии.

лично для меня размерность + совсем ограниченность «придомовой территории» т.е. пойти уток смотреть с собакой и енотов и лосей чисто без вариантов но жарить мясо в принципе можно но компанию на 20 человек тоже не завезёшь но 2-3 человека гостей можно и бассейн нормальный на 20 метров тоже без вариантов )) в т.ч. в комюнити маловероятно (скрее не вероятно) чтобы он есть

плюс я бы б сказал нет гаража что довольно удобно когда у тебя 2 машины причём обе «не среднего класса»

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

ЗЫ: а ну да пожалуй ещё нельзя установить стационарный кондиционер но теоретически если заморочиться с внешним блоком то можно

Если он в южном штате типа Калифорнии.

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

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

Не понял, нафига тебе вторая машина? что бы в нейборхуд где средняя ЗП 30k$ на своем Ферари не приезжать?

Дайте угадаю, Семухин воскресил потухший топик? :-))))

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

Задача: просуммировать значения поля «count» для совпадающих измерений «имя ключа: значение ключа». Только поле «count» присутствует обязательно. К нему в дополнение может быть одно или несколько полей, их имена и значения — неизвестны заранее.

Ограничения: Можно использовать только библиотеки JDK, пускай будет 11-я версия, только Stream API, без циклов.

[
{
«namespace»: «first»,
«count»: 3
},
{
«namespace»: «second»,
«count»: 2
},
{
«namespace»: «third»,
«count»: 10
},
{
«namespace»: «second»,
«count»: 4
},
{
«namespace»: «fifth»,
«count»: 1
},
{
«namespace»: «first»,
«count»: 8
}
]

ИМХО, для Java-разработчика я бы назвал данную задачу сложной, с учётом ограничений.

Може не зрозумів задачу, але наче думати не треба. Мапа, де ключом є «ім’я ключа: значення ключа», а значенням те, що рахується. Чи ще треба жисон парсити? Ну теж не складно, тільки муторно дещо.

JSON — это конкретный пример, test case.
На входе — структура
java.util.List<java.util.Map<String, Object>> 

На выходе должен быть точно такой же тип, только поля count — просуммированы, с помощью Stream API.

с помощью Stream API.

Це тоді задача на Stream API, що б воно таке не було, а не на створення алгоритму.

Так в реальном тикете задача не создать алгоритм, а выполнить тикет. Для читаемости кода нужно использовать Stream API: допустим тимлид завернёт на peer review нечитаемое решение с кучей скобочек и вложенных циклов.

Суть літкода у знайденні та реалізації алгоритму безвідносно до мови програмування чи API.

Мы все это понимаем, про литкод: изобретение и заучивание десятков тошнотворных велосипедов для Фаангов и им подобных упырей.
И я привёл пример реальной задачи. Списывать/подглядывать — неоткуда, надо самому сидеть на работе, ломать голову и пробовать. Но литкод-культ считает нас недостойными, ненастоящими программистами, раз мы его отрицаем. )

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

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

И я привёл пример реальной задачи
Но литкод-культ считает нас недостойными, ненастоящими программистами

Це ти сам собі таке вигадав. У літкода своє призначення. В такому вигляді як ти її описав твоя задача не може бути на літкоді — вона обемежена однією мовою і одним певним API. А там задачі на створення алгоритму, а не на знання мови чи API — нормальний програміст і мову і API може почати використовувати дуже швидко навіть якщо не знав їх до того. А от той хто вміє лише в одну конкретну мови чи ще гірше — в конкретне API підійде для дуже обмеженого класу задач.

Іншими словами якщо я можу якусь задачу розв’язати на C++ то я можу це зроби і на Python/C#/Java/Go/Brainfuck/... навіть якщо бачу їх вперше.

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

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

Не пройде — у них таймаут і навіть правильні, але повільні рішення не приймаються.

А без таймаута есть? С таймаутом нужно оборудование.

Там наче по дизайну задачі є. Але я лише на кодінг розв’язував.

Перевір сам, реєстрація безкоштовна.

І якщо у нього алгоритм нікуди не поспішає — це ще гірша помилка.

Если не отвалится по таймауту — это вполне себе решение. Проблема только в том, что цель литкода — это не пройти валидатор литкода — за это денег никто не заплатит. Цель литкода — подготовиться к собеседованию. И если ты на собеседовании попытаешься методом случайных чисел найти решение reverse linked list, то подход могут не оценить по достоинству.

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

А запости на

LeetCode

и увидишь сразу code

Там вже напощено сотні різних задач — роби рішення своїми кубіками для будь-якої та показуй код.

Системи треба писати

Там не про системи, а про алгоритми.

Бажано паттернами

Такі патерни як ітератори ніхто не забороняє використовувати.

Це вміння треба тренувати а не розв’язувати космічні здачі з планети нердів

Це не вміння, а знання. І ніяких космічних задач там нема.

Гугл набирає людей, відштовхуючись від їхніх вмінь розв’язувати ребуси

Ніяких ребусів. Цілком конкретні задачі — знати алгоритм для розв’язання конкретної проблеми. Приклади вхідних даних та очікуваного результату. Все дуже прямолінійно.

Чого б не брати людей які просто вміють і люблять писати продакшн код?

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

Тому що знайти людей які можуть нормально писати код можна поки що лише так.

Віктор каже, що код у лібах фаангу написаний неправильно. Працює, але з точки зору якості самого коду там жах. То може літкод не про нормально писати код?

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

Тогда у независимого стороннего наблюдателя сразу вопрос: а зачем тогда, допустим, для бэкенда столько языков, экосистем с библиотеками? Зачем, если, образно говоря, вырезать гланды можно как через рот, так и через ж*опу? ))

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

Хуяк ***к і в продакшн. Юзери потестують © слова про Фаанг.

При цьому ФААНГи дають продукти і сервіси найбільш цікаві користувачам і найбільш прибуткові фінансово. Але звісно код у них неякісний, ***к-хуяк і ось це все.

дають продукти і сервіси найбільш цікаві користувачам і найбільш прибуткові фінансово.

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

Лично не сталкивался, но старожилы индустрии с ужасом вспоминают такую технологию как GWT.

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

А ще точніше — не монополісти (це протизаконно), а лідери ринку які такими стали через конкурентні переваги своїх продуктів.

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

Багато.

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

Делай как Артёмка, ходи между рядами торгуй лицом.

Хто це, про які ряди йде мова і для чого мені це робити?

Проси принципла с покерфейсом пикапера возле женского общежития.

Який гуртожиток, хто цей прінципал і що у нього треба просити?

Артёмка понял как работает система.

Не знаю хто це.

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

Співчуваю. Варто спробувати змінити місце роботи.

Поэтому Артёмка будет принципалом, а ты будешь идиалистом.

Не знаю хто це. Що станеться якщо я не буду ідеалістом чи вже є ідеалістом?

Ти точно мені хотів відповісти?

Хто це, про які ряди йде мова і для чого мені це робити?

dou.ua/...​rums/topic/31632/#2042934

Не побачив нічого ні про ряди, ні про жіночий гуртожиток, ні про прінципала у якого треба щось просити.

Спробуй якось по іншому донести свою думку, поки що для мене весь твій комент вище це якась шизофазія.

А ще точніше — не монополісти (це протизаконно), а лідери ринку які такими стали через конкурентні переваги своїх продуктів.

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

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

Як же я забув, що на ДОУ ще й знавці політики США та геополітики в цілому, ті хто мають контакти і заходять у кабінети високопосадовців США, ті хто знають усі секрети американських корпорацій та партій.

А по суті — є якісь, хоч якісь підтвердження цим фантазіям?

Я точно знаю, что в США есть государственные сайты, на которых вывешиваются отчёты о спонсировании партий, политиков, предвыборных компаний. Специалисты типа ФБК в России — они умеют копаться месяцами в тех реестрах и строить цепочки связанных людей и физлиц, выстроивших преступное сообщество. Ну и потом оформляют результаты в виде фильмов о коррупции на канале Алексея Навального.
Я, разумеется, таким специалистом не являюсь. Наверняка есть американские аналоги ФБК, но это не моя страна, я глубоко не копаю.

Если взять уровень проще, уровень срачей на Доу. ) Я лично видел фрагменты видео о слушаниях директоров техгигантов. Почему правительственные органы в США не завели по его результатам десятки официальных расследований о нарушениях антимонопольного законодательства? Почему многократные призывы принудительно разделить условный Гугл на отдельный части так ничем не заканчиваются?

По факту получается, что в США де-факто наступил режим классического фашизма. С одной стороны, Фаанги пока не контролируют банковскую систему, доступ к картам и счетам. Не контролируют коммунальные услуги, транспорт, доступ к еде. Но пока в США цветёт фашизм, Фаанги за счёт монополии распространяют по всему миру, по аналогии с Китаем, т.н. «мягкое влияние», по сути, частные цифровые концлагеря. Т.е. если отдельного человека забанят как пользователя-потребителя в некоторых сервисах Фаангов, то человек, по сути, окажется на уровне где-то начала 20 века. Ну а если забанят бизнес-учётку, то для некоторых форм малого бизнеса — это по сути конец игры.

Окрім цього банять по змові. Пам’ятаємо, як Парлер забанили одразу в багатьох компаніях, в один день.

Окрім цього банять по змові.

Банять по факту порушення і не бажанню надавати свою площадку мудакам.

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

Це погано?

это не моя страна, я глубоко не копаю

Але за держборг і ось це все знаєш і переймаєшся.

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

Мабуть через те, що не побачили підстав для цього, ало не мають достатньо доказової бази.

Почему многократные призывы принудительно разделить условный Гугл на отдельный части так ничем не заканчиваются?

Тому що не кожен заклик має хоч чимось закінчуватися.

По факту получается, что в США де-факто наступил режим классического фашизма.

По-факту ні.

Фаанги пока не контролируют банковскую систему, доступ к картам и счетам. Не контролируют коммунальные услуги, транспорт, доступ к еде

Це погано?

Но пока в США цветёт фашизм

І масони з ящериками. І госдолг.

Фаанги за счёт монополии распространяют по всему миру

Розповсюджуються за рахунок кращої якості продуктів.

по аналогии с Китаем, т.н. «мягкое влияние», по сути, частные цифровые концлагеря

Поясни — що воно таке, як туди заганяють, як утримують і ось це все?

если отдельного человека забанят как пользователя-потребителя в некоторых сервисах Фаангов, то человек, по сути, окажется на уровне где-то начала 20 века

Ні, не опиниться. Він буде там же де і є. Знаю купу людей які не користуються сервісами ФААНГів і все у них в порядку.

Ну а если забанят бизнес-учётку, то для некоторых форм малого бизнеса — это по сути конец игры

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

Принципипильно ФААНГ ничем не отличается от галеры. Более того, если небольшая галера ещё может проявлять какой-то креатив и гибкость, то в большой корпорации все больше проявляются свойства большой экосистемы. Появляются свои корпоративные правила, свои менеджеры, любимчики, свои трутни, свои протиратели штанов, свои торговцы лицом и тд. В большой экосистеме побеждает не тот кто технически наиболее умён и грамотен, но кто наиболее приспособлен пройти все уровни, используя все слабые стороны системы. Часто этот путь прямо противоположен любому техническому прогрессу и созиданию.
Лет 10 назад, была такая народная забава, перепиши проекты Майкрософт. И чуть ли не студенты писали свои программы, которые в разы лучше были чем нотпад, пеинт, калькулятор, а сама MS называлась корпорацией зла.
К сожалению, многие продукты на которых жирует фаанг, берут не качеством а критической массой. Ты не отломишь кусок Амазон если у тебя нет 100500 складов. Не отломишь рынок операционных систем, ведь под твою ось ноль легаси программ. Не напишешь свою соцсеть, потому что там не будет миллиарда юзеров и тд.
Монопольное положение и лёгкие деньги ещё больше делают код внутри больших компаний дерьмом. Но это так работает.

Принципипильно ФААНГ ничем не отличается от галеры.

Принципово відрізняється усім.

Более того, если небольшая галера ещё может проявлять какой-то креатив и гибкость, то в большой корпорации все больше проявляются свойства большой экосистемы.

Галера робить що їй сказали і як їй сказали. Гнучкість ох*євающая.

В той час як ФААНГам треба постійно робити іновації — щоб просто лишатися на місті треба бігти щосили.

Твої розмірковування про як воно у ФААНГах пропускаю — ти очевидно не маєш уявлення про роботу в них і просто висмоктуєш ці вигадки.

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

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

Ты не отломишь кусок Амазон если у тебя нет 100500 складов.

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

Не отломишь рынок операционных систем, ведь под твою ось ноль легаси программ.

Бо ці легасі програми теж самі по собі виникли, а не тому що компанія боролася за зворотню сумісніть, щоб розробка була простою і дешевою, щоб була документація та підтримка, щоб були інструменти, бібліотеки та платформи.

Не отломишь рынок операционных систем, ведь под твою ось ноль легаси программ.

Як от ФБ дали міліард юзерів і лише після цього вони написали свою соцмережу.

Монопольное положение

Це ідіотське твердження типу «а ти госдолг США видів?». Є докази монопольного положення і нечесної конкуренції — йди з ними в суд.

делают код внутри больших компаний дерьмом

Де ще як не на ДОУ, де сеньйори не можуть перевернути список в один прохід без додаткової пам’яті тобі розкажуть про низьку якість коду ФААНГів.

В той час як ФААНГам треба постійно робити іновації — щоб просто лишатися на місті треба бігти щосили.

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

Ты все попутал.

Враховуючи твою обізнаність і досвід з цього питання поплутав не я.

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

Інновації треба робити усім хто хоче лишитися на ринку і не бути обійденим конкурентами.

Фаанг может оставаться дерьмом

А кількість користувачів у нього і прибутки збільшуються через те що...?

как тот Фейсбук интерфейс которого можно сразу застрелится

Як би це складно не було зрозуміти, але інтерфейс це не те через що користуються ФБ, і не те через що йдуть з нього.

А кількість користувачів у нього і прибутки збільшуються через те що...?

Все побежали и я побежал (комьюнити).

Інновації треба робити усім хто хоче лишитися на ринку і не бути обійденим конкурентами.

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

Все побежали и я побежал (комьюнити).

Дивно тільки, що це працює у ФААНГів які неправильно наймають, пишуть поганий код і взагалі нічим від галер не відрізняються. А у тих хто пише якісний код, наймає за вміння триндіти про архітектури та не галера — у них якось так не виходить. Аж дивно.

давай на аналогиях. В биологическом мире

Давай на аналогіях. У світі спорту ті хто постійно тренується і застосовує передові методи має переваги перед тими хто лише розказує про свою крутість та якість своїх тренувань.

Давай на аналогіях. У світі спорту ті хто постійно тренується і застосовує передові методи має переваги перед тими хто лише розказує про свою крутість та якість своїх тренувань.

Продолжаем твою аналогию. Все твои «спортсмены» уже по 20+ лет в спорте. Тренуйся не тренуйся, возраст.
Все отростили пузико, окорпоративились и обленились на подушке с деньгами.

Продолжаем твою аналогию. Все твои «спортсмены» уже по 20+ лет в спорте.

Продовжимо твою аналогію. Всі твої простіші організми можуть бути легко і непоміно знищені вищими тваринами мимохідь. Інновації там чи ні.

отростили

отрАстили

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

Але все одно дають кращі продукти ніж конкуренти.

Продовжимо твою аналогію. Всі твої простіші організми можуть бути легко і непоміно знищені вищими тваринами мимохідь. Інновації там чи ні.

Все верно. Так работает естественный отбор. Лучше всего он работает на маленьких компаниях — стартапах. 99% компаний загинаются, сильно сменив свою «ДНК» не в том направлении. Но 1% принципиально другой вид, который и есть инновации.

Але все одно дають кращі продукти ніж конкуренти.

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

Продукт не краще, а часто значительно хуже

А користувачів силою примушують саме гіршим продуктом користуватися.

росто монопольное положение

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

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

А в реальності незлічена кількість випадків коли кращі продукти пробивалися вперед і посували «монополіста», тобто лідера ринку на той час.

Ниши крепко заняты.

Тай міцно, що постійно з’являються нові продукти які успішно відвойовують собі долю ринку.

А користувачів силою примушують саме гіршим продуктом користуватися.

Почти так. Если 90 из 100 твоих друзей сидят в фейсбук, то и тебе придется терпеть фейсбук. А не перейти в какуюто супер классную соцсеть, но в которой мало пользователей.

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

Монопольное положение говорит, что чтобы вынести монополиста нужно быть не просто лучше. А нужно лучше быть в раз 10. И по рекламе и по деньгам и по пиару и тд.
При этом монополист может безопасно оставаться УГ всего в 2 раза хуже от молодых конкурентов, без каких либо серьезных для себя последствий и выгребать просто на запасенном жирке.

Если 90 из 100 твоих друзей сидят в фейсбук, то и тебе придется терпеть фейсбук

Нарешті зміг донести, що ФБ це не про інтерфейс взагалі.

не перейти в какуюто супер классную соцсеть, но в которой мало пользователей

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

Монопольное положение

Якого нема.

чтобы вынести монополиста нужно быть не просто лучше

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

А нужно лучше быть в раз 10

Треба бути просто в достатній мірі краще за важливими характеристиками. Кращим рівно настільки щоб це привернуло користувачів і спонукало їх змінити продукт чи сервіс.

При этом монополист может безопасно оставаться УГ

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

Як би це складно не було зрозуміти, але інтерфейс це не те через що користуються ФБ, і не те через що йдуть з нього.

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

Каким бы говном не был интерфейс фейсбука, у этого говна миллиард пользователей

Тому що суть і цінність ФБ для користувачів не в його інтерфейсі.

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

Тому що інтерфейс не є фічею ФБ через яку ним користуються. Більше того — поганий інтерфейс не є достатньою причиною припинити ним користуватися.

Хотите чтото лучше, покупайте Инстаграмм.

Ти ж мабуть знаєш, що це теж ФБ і що воно все крутиться на одній і тій же інфраструктурі?

Протухнит

ПротухнЕт.

в кузницах стартапов появится еще инновация.
Но не в фаанге.

Або в ФААНГє як і велика кількість інших інновацій які з’явилися у ФААНГах.

Ти ж мабуть знаєш, що це теж ФБ і що воно все крутиться на одній і тій же інфраструктурі?

Тебе осталось ответить на вопрос. Почему Инстаграмм, Снапчат и другие были рождены в других МАЛЕНЬКИХ стартапах. Часто сделанных стундентами, а не фаангами, которые типа все такие за инновации.

Тому що суть і цінність ФБ для користувачів не в його інтерфейсі.

Так вот мы пришли к тому с чего начали.
Фейсбук — говно. Интерфейс — говно. Код в нем — говно 17ти летней выдержки. При этом этот продукт может оставаться и даже становится хуже без каких либо больших для себя последствий в ближайшие годы.

Почему Инстаграмм, Снапчат и другие были рождены в других МАЛЕНЬКИХ стартапах

Тому що це можливо.

Але це ніяк не означає, що у ФААНГах нема інновацій і що їм просто хтось видає гроші і користувачів ні за що.

Фейсбук — говно

Але при цьому краще за усе інше подібне.

Интерфейс — говно

Це не фіча ФБ. Але бачу цю складну думку я так і не зможу донести.

Код в нем — говно 17ти летней выдержки.

Наче ти маєш якесь уявлення про код ФБ. І про який конкретно коди ти говориш, який компонент платформи?

Код в нем — говно 17ти летней выдержки.

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

Тому що це можливо.

Это не можливо. Это правило.

Але це ніяк не означає, що у ФААНГах нема інновацій і що їм просто хтось видає гроші і користувачів ні за що.

Назови инновации которые родились в стенах фаанга с нуля недавно ?

Але при цьому краще за усе інше подібне.

Что краще ? Возьми любой продукт.
Допустим операционные системы для мобильных устройств.
На сегодня основные две Андроид и Эпл.
Допустим завтра появляется новая ось для мобильных. Допустим она лучше и инновационней на условные 30% чем другие Андроид и Эпл системы. На 30% быстрее работает. На 30% менььше жрет батарею. На 30% лучше интерфейс.
Какие у нее шансы вытеснить продукт который хуже, но имеем монопольное положение на рынке ? Никаких.

Это правило.

Це не правило тому що:
— не всі стартапи роблять успішні продукти, не кажучи вже про такі продуки, що стають лідуючими на ринку
— не всі інновації роблять у стартапах

Назови инновации которые родились в стенах фаанга с нуля недавно ?

Тобі схоже від ФБ найбільше пече, ось тут десь читай — about.fb.com/...​echnology-and-innovation. А взагалі у них Reality Lab дуже крутими речами займається, варто ознайомитися.

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

По-перше, нема продукта з монопольним положенням про що ти сам і написав. По-друге, мобільні ОС це в першу чергу про софт та вартість для виробника. Якщо хтось зробить ОС яка може запускати андроід-софт, достатньо швидко працювати, мати зручний і не дорогий інструментарій для розробки і обходитися дешевше виробникам смартфонів — у неї є всі шанси. І такі спроби тривають. В тому числі в ФААНГах.

Це не правило тому що:
— не всі стартапи роблять успішні продукти, не кажучи вже про такі продуки, що стають лідуючими на ринку
— не всі інновації роблять у стартапах

Ну если тебя устроит что 95% инноваций делают в стартапах.
И 5% в фаангах, то ок. Можешь считать не правилом.
Кстате про сами фаанги.
Эпл появился в гараже, а не в фаанге Айбиэм
Гугл появился в кампусе,а не в фаанге Яху
Фейсбук появился в универе, а не в фаанге майкрасофт, гугл или эпл.

По-перше, нема продукта з монопольним положенням про що ти сам і написав. По-друге, мобільні ОС це в першу чергу про софт та вартість для виробника. Якщо хтось зробить ОС яка може запускати андроід-софт, достатньо швидко працювати, мати зручний і не дорогий інструментарій для розробки і обходитися дешевше виробникам смартфонів — у неї є всі шанси. І такі спроби тривають. В тому числі в ФААНГах.

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

Ладно, я уже подустал.
Возвращаясь к нашим баранам.
Код в фаангах УГ — потому что могут себе это позволить, ввиду монопольного положения и им за это ничего не будет.

95% инноваций делают в стартапах

З якого джерела ці дані?

Эпл появился в гараже, а не в фаанге Айбиэм
Гугл появился в кампусе,а не в фаанге Яху
Фейсбук появился в универе, а не в фаанге майкрасофт, гугл или эпл.

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

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

Ні, не через це. Програла через неправильну роботу з розробниками додатків, в результаті відсутність тих самих додатків, в результаті відсутність інтересу користувачів.

Если МС с нокией не удалось закрепится на этом рынке, просто потому что они пришли на этот рынок вторым

Їм не вдалося втриматися, а не закріпитися, тому що їх продукти програвали продуктам конкурентів.

Код в фаангах УГ — потому что могут себе это позволить

Код в ФААНГах хороши — тому що вони не можуть собі дозволити стояти на місці. І по результатам їх продуктів (кількість користувачів та прибутки) чітко видно, що код у них краще ніж у конкурентів.

ввиду монопольного положения

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

и им за это ничего не будет

Як тільки якість стане незадовільною вони почнуть втрачати користувачів і прибутки. Що і відбувається постійно з тим чи іншим продуктом.

Ну ты и дубовый. Ужас как в фаангах любят лить воду на коромысло игнорируя суть вопроса. Еще раз, по сути.
1. Большой обхват аудитории позволяет оставаться на рынке,
с ХУЖИМ кодом и с ХУЖИМИ иновациями.
2. Молодые стартапы делают в разы ЛУЧШЕ и ИННОВАЦИОННЕЙ код и только за счет этого имеют шанс потеснить монополиста с рынка. Несмотря на малую аудиторию и отсудствие больших денег на рекламу.

С чем не согласен ? О чем твой спичь ?

1. Большой обхват аудитории позволяет оставаться на рынке,
с ХУЖИМ кодом и с ХУЖИМИ иновациями.

КРАЩИЙ код і КРАЩІ інновації приваблюють більше користувачів.

2. Молодые стартапы делают ЛУЧШЕ и ИННОВАЦИОННЕЙ код в разы

БІЛЬШЕ користувачів та ВИЩІ прибутки чітко показують чий код та інновації краще.

имеют шанс потеснить монополиста с рынка

Так монополіст чи ринок? Бо поки що ми бачимо як кращі продукти відвойовують долю ринку і навіть стають лідерами — тобто ніяких монополістів.

С чем не согласен ?

З тим що у ФААНГів нема інновацій і у них поганий код.

КРАЩИЙ код і КРАЩІ інновації приваблюють більше користувачів.

В стартапах взрывной рост. Делают из 0 пользователей миллионы пользователей.

БІЛЬШЕ користувачів та ВИЩІ прибутки чітко показують чий код та інновації краще.

Сейчас самые выщие прибутки у Квартал 95 и Х-ла из РФ. Означает ли это что Зеленский и Х-ло супер мега реформаторы которые делают крутые реформы с кучей прибыли ? НЕТ.

Так монополіст чи ринок? Бо поки що ми бачимо як кращі продукти відвойовують долю ринку і навіть стають лідерами — тобто ніяких монополістів.

Да, потому что

у ФААНГів нема інновацій і у них поганий код.

Пофиксил это для тебя. Не благодари.

В стартапах взрывной рост. Делают из 0 пользователей миллионы пользователей.

В ФААНГах з мільйонів користувачів роблять мільярди користувачів.

Сейчас самые выщие прибутки у Квартал 95 и Х-ла из РФ.

Хоч якісь підтвердження цьому будуть? Чи мели аби що?

Пофиксил это для тебя.

Ти уявлення не маєш, що відбувається в ФААНГах, як вони працюють і про ситуацію на ринках де вони працюють.

В ФААНГах з мільйонів користувачів роблять мільярди користувачів.

За счет маркетологов.

Хоч якісь підтвердження цьому будуть? Чи мели аби що?

*фейспалм*

Ти уявлення не маєш, що відбувається в ФААНГах, як вони працюють і про ситуацію на ринках де вони працюють.

Прекрасно имею представление.
Поэтому и спрашиваю.
Назови какието недавние инновации которые вышли из стен фаангов, уровня Дипмаинд или Биткоин.

За счет маркетологов.

За рахунок кращого продукту. Якщо маркетинг є частиною продукту — чому ні?

*фейспалм*

Що, не буде підтверджень? І чому я тоді маю вірити твоїм вигадкам про якісь відсотки інновацій?

Прекрасно имею представление.

Звідки?

Назови какието недавние инновации которые вышли из стен фаангов

Я тобі вже одну лінку привів вище. Шукай подібне на сайтах кожного з ФААНГів.

уровня Дипмаинд или Биткоин.

Перше — що це за рівень, як його поміряти і порівняти?
Друге — тобто тепер не просто інновації, а якогось «рівня» інновації?

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

За рахунок кращого продукту. Якщо маркетинг є частиною продукту — чому ні?

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

Що, не буде підтверджень? І чому я тоді маю вірити твоїм вигадкам про якісь відсотки інновацій?

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

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

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

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

Тобто я знаю, що якщо маркетинг ж важливою частиною продукту то в маркетинг треба вкладатися щоб бути конкурентним. І це цілком собі інновації.

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

Я написал что у Путина большие доходы и при этом страна в болоте.

Ні, ти написав

Сейчас самые выщие прибутки у Квартал 95 и Х-ла из РФ.
Ты просишь какието доказательства.

Так, прошу докази цих сумнівних тверджень.

Этой демагогии тебя в фаанге научили на бесконечных митингах ?

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

Ну так я тебе и привожу пример инновации.

Так а я тебе про це ніколи не просив.

Говорю — покажи какието существенные инновации в ФААНГах

Втретє — навів лінку з якої ти можеш почати.

Ты сьезжаешь.

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

Ты сьезжаешь.

Запиши свої вказівки на наждачному папері, згорни його в трубочку і запхай собі в один з природніх отворів.

Это походу самая большая инновация там за последнее время.

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

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

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

А насправді я дав тобі відковідь на кожен твоє питання. Від тебе ж не було жодного підтвердження твоїм вигадкам про:
— відсотки інновацій
— твої начебто знання про код та процеси ФААНГів
— твердження про Квартал-95 як найбагатшу контору
— і так далі.

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

Але є менш ключова риса — не приймати на віру казки без будь-яких підтверджень.

Не удивлен что таких альтернативно одаренных держат в фаангах. Отдыхай.

Не заздри. Прокачай логіку, почни в критичне мислення, наберись досвіду і теж може спробувати в ФААНГи.

2. Молодые стартапы делают в разы ЛУЧШЕ и ИННОВАЦИОННЕЙ код и только за счет этого имеют шанс потеснить монополиста с рынка. Несмотря на малую аудиторию и отсудствие больших денег на рекламу.

ЛУЧШЕ и ИННОВАЦИОННЕЙ код в стартапах уровня fake it till you make it? Обычно в стартапах пишут абы что, чтоб можно было сделать демку инвесторам и получить очередной раунд вливаний бабла. Можешь привести пример стартапа, который, ты считаешь, сделал что-то прорывное, чего не сделали в лидерах рынка?

Bitcoin/Etherium/Blockchain
DeepMind
Достаточно инновационно ?

Какую проблему решил bitcoin и какими метриками оценивали качевство кода? Какой «стартап» его придумал?
DeepMind — купил гугл и большая часть запущенных проектов о которых вы слышали сделали благодаря скейлу гугла. Так же они получили большой буст от коллабораций с Google Brain. Судя по вашим коментам, очень сомневаюсь, что вы видели их код.

Так что пока не достаточно. Интересно увидеть 4-5 примеров стартапов которые решают проблемы более еффективно и у которых лучше код. Так же интересно узнать как вы смогли это оценить.

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

В Китае — вполне реально. Если будут в КПК регулярно заносить чемоданчики или будут госкорпорацией. Допустим, WeChat объявит, что будет будет работать эксклюзивно на ней с 1 января 2023 г.

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

Поэтому лично я создал именно для таких целей фейковый анонимный профиль в Фейсбуке, на реальную имя/фамилию у меня профиля нет )).
По мере скупки юрлицом Фейсбука других популярных сервисов я, если честно, был неприятно удивлён, что имя и фамилия Фролова-анонимуса расползаются автоматически, по номеру телефона, по Инстаграмму, Viber. Где-то я, возможно, ошибаюсь, память человека не идеальна. Но 1 или 2 случая точно помню. Как результат прокачивания годами на разных сервисах фейковой пары имя+фамилия, по номеру телефона — выстраиваются в единый профиль.

OAuth2 авторизации

Це проблема, вендор лок. Краще користуватися пасворд менеджерами. Ані ж потім тебе банять в одному сервісі, і ти втрачаєш доступ до всіх.

В них купа грошей, і можливість зливати стартапи один за другим. Той же Гугл. Ну і нижче написали про скупку конкурентів. Не дуже гуд.

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

В них купа грошей

Які певно їм падають просто з неба.

Ну і нижче написали про скупку конкурентів. Не дуже гуд.

Так, хай хтось інший купить, правда?

Я особисто не бачу нічого хорошого в наявності гігантів

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

які монополізують ринок

Не монополізують — нові гравці та кращі рішення з’являються постійно.

і знищують конкурентів своїм розміром і можливостями.

Перемагають конкурентів своїми технологіями та якістю продуктів.

Які певно їм падають просто з неба.

Ем, вони захопили ринок, коли той був пустим. Набрали жирку. Тепер витворяють що хочуть.

Так, хай хтось інший купить, правда?

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

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

Це так. Але догадуюсь. Добре що вони займаються трохи дослідженнями, і випуском технологій. Але це частина їх діяльності. Інша — то влаштовувати монопольні правила і давити конкурентів.

нові гравці та кращі рішення з’являються постійно.

Яка в них популярність? Коли фаанги роблять все, аби прив’язати хом’ячків до своєї платформи, роздаючи їм умовно безкоштовні сервіси.

Перемагають конкурентів своїми технологіями та якістю продуктів.

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

Ем, вони захопили ринок, коли той був пустим.

Ем, ти просто уявлення не маєш про що говориш. Не вигадуй — про стан ринку і «монополістів» на ньому того часу інформацію дуже легко знайти. Вони вийшли у лідери через те що зробили більш привабливий продукт. А потім ще один, потім ще один і так далі.

Набрали жирку. Тепер витворяють що хочуть.

Їх право. Те що вони досі лідери говорить нам що «витворяють» переважно те що треба. Ті хто витворяє щось не в тему — ті програють свої позиції.

У іншого нема халявних мільйонів

Як не було їх і у ФААНГів свого часу.

А в фаангу цих грошей дуже багато.

Які вони заробили роблячі більш якісні і привабливі продукти.

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

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

влаштовувати монопольні правила і давити конкурентів.

Ну для чого ти ці безграмотні нісенітниці пишеш? Ти хоч зможеш пояснити що то за «монопольні правила»?

Яка в них популярність?

Відповідна їх якості та привабливості для користувача.

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

А чому не мають? Свого часу подібні дії конкурентів яких вони посунули не дуже тим допомогли — якість продукта більше важить.

Коли ринок піджатий, якість вже не сильно росте.

Що таке «піджатий ринок»?

Про уповільнення технологічного розвитку теж може бути.

Може, але ми поки що бачимо лише прискорення.

треба питати у тих, хто професійно займається анплізом цих корпорацій, і не на гроші корпорацій

Це кожен перший на ДОУ.

Ось напишу лише один приклад відсталості сервісу через монополізацію — Фейсбук. Що дизайн, що зручність просто дно. Але люди користуються, бо альтернативи де б були всі рідні і знайомі — нема. Колись кажуть Інстаграм міг стати альтернативою. Але його купив... Фейсбук. Сила великих грошей.

Що дизайн, що зручність просто дно

Бо це, зненацька, не ті характеристики через які коритсуються ФБ.

де б були всі рідні і знайомі

А ось це і є головною характеристикою ФБ за якою він краще конкурентів.

Колись кажуть Інстаграм міг стати альтернативою

Хто тобі таке каже?

Інастаграм націлений на іншу аудиторію яку дуже мало охоплює ФБ. І там посунув усіх конкурентів.

Але його купив... Фейсбук

І правильно зробили.

Сила великих грошей.

Сила правильних рішень і якісних затребуваних продуктів які приносять великі гроші як результат.

дуров верни стену!

Большинство проектов в фанг запускаются проходя A/B тесты которые анализируют люди с образованием, которое дает им больше квалификации чем у анонимных комментаторов на доу.

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

Досить вже цьої промивки про святого біг бро.

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

Тут стороннєму спостерігачеві можна спробувати вкотре пояснити, що літкод це про вміння розв’язувати задачі. І обмеження як «лише зеленою пастою на папері формату А5» дещо недоречні у цьому випадку.

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

Думаю не складно погодитися, що для того щоб оцінити вміння розв’язувати задачі і створювати алгоритми не має бути прив’язки до мови, бібліотеки, розміру кімнати, висоти столу чи кольору футболки.

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

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

Чижденка каже, що код у лібах фаангу написаний неправильно.

А я кажу, що правильно.

Працює, але з точки зору якості самого коду там жах.

Якість коду чим міряєш?

То може літкод не про нормально писати код?

Літкод про вміння розв’язувати задачі.

А я кажу, що правильно.

Чижденка спеціалізується на мові сі. А ти як я розумію більш генераліст. І для мене слово спеціаліста по якості конкретної роботи, в якому той спеціалізується, важить більше. Ну це я не про особистості хочу, а загалом.

Якість коду чим міряєш?

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

Під якістю я в першу чергу маю на увазі легкість підтримки і розширювання. Вже потім оптимізованість, коли вона дійсно потрібна. А коли код написаний з ігноруванням код стайл, солід, можливостей і недоліків КОНКРЕТНОЇ мови і фреймворку, з лібами, — то це і є неякісний код.

Літкод про вміння розв’язувати задачі.

Ось про це я і хотів натякнути. А вже як добре розв’язати завдання, не з точки зору оптимізованості алгоритму — тут потрібні знання платформи на якій девиш, і багато практики, вирвшення подібних завдань. І як би інжегер добре не вмів проектувати систему, робочий поставить труби краще за інженера-проектанта. Нема ніякого чуда, вся людська діяльність полірується з ітераціями.

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

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

Знаєш поінти, якими міряють якість коду кажи.

Кількість користувачів у яких запущений цей код на пристроях.
Кількість грошей які цей код приносить.

А коли код написаний з ігноруванням код стайл, солід, можливостей і недоліків КОНКРЕТНОЇ мови і фреймворку, з лібами, — то це і є неякісний код.

Код стайл від тих же ФААНГів? Про який коди ти говориш взагалі? Давай приклади бо я не дуже розумію про що ти. Та і до того ж навряд чи ти бачав хоч скільки небудь значну частину їх коду крім того, що викладали на гітхаби як опенсорц.

Під якістю я в першу чергу маю на увазі легкість підтримки і розширювання.

Легкість для кого чи для чого? Якість — набір характеристик важливий для конкретного сценарію чи користувача. Тому якість коду різного призначення визначається по різному. Одне діло код якогось Блокнота, інше — драйвера відеокарти. Як приклад.

А вже як добре розв’язати завдання, не з точки зору оптимізованості алгоритму

Чому не з точки зору оптимізованості? Є випадки коли саме «оптмізованість» є головним показником якості.

Спеціалізація на С, якщо це не написання С-компілятора це щось типу «спеціалізуюся на літерах»

Ось від такого підходу, спеціалісти потім і дивуються тим, як бібліотеки фаангів написані.

Кількість користувачів у яких запущений цей код на пристроях.
Кількість грошей які цей код приносить.

Дуже умовна класифікація якості. Бо ж вирішують маркетологи, і знову ж — гроші на розкрутку. А ще бренд.

Код стайл від тих же ФААНГів?

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

Давай приклади бо я не дуже розумію про що ти

Ми ж тепер не про приклади, а про узагальнене(абстракції).

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

Я дуже мало бачив насправді чужого коду. Поки здоров’я вистачає лише парт-таймити на фрілансі. Але стараюся зловити все корисне, коли натрапляю. І оцінити, базуючись на обмежених даних. Ну а далі люди мене поправлять в срачах))

Легкість для кого чи для чого?

Для розробників.

Якість — набір характеристик важливий для конкретного сценарію чи користувача. Тому якість коду різного призначення визначається по різному. Одне діло код якогось Блокнота, інше — драйвера відеокарти. Як приклад.

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

Чому не з точки зору оптимізованості? Є випадки коли саме «оптмізованість» є головним показником якості.

Знову погоджуюсь. Все залежить. Мені поки це не дуже потрібно. Оптимізованість роблю на рівні бази даних, апі запитів, і звісно різні діспосабл об’єкти не забути вичистити.

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

Дуже умовна класифікація якості.

Але дуже конкретна і її дуже легко виміряти.

Бо ж вирішують маркетологи, і знову ж — гроші на розкрутку. А ще бренд.

Якщо це потрібно користувачеві — значить все правильно роблять.

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

Ти висмоктуєш з пальця якусь дичину. Давай приклади конкретні.

Ми ж тепер не про приклади, а про узагальнене(абстракції).

Всі твої узагальненя взяті зі стелі, бо ти просто в очі не бачив коду ФААНГів і уявлення не маєш чим вони займаються та як працюють.

Я дуже мало бачив насправді чужого коду

Але експертна думка з приводу коду який ти не бачив в тебе вже сформована.

Для розробників.

Код існує для того щоб бізнес міг продавати клієнтам рішення. Вся ця «легкість» чи інші показники — це усього лише про мінімізацію витрат в процесі виробництва.

не можу дозволити собі писати код не обдумовуючи його якість

Як ти можеш обдумувати те, що навіть визначити не можеш?

Щоб дозволяти собі нехтувати якістю коду

Що для тебе «якість коду»?

Оптимізованість роблю на рівні бази даних, апі запитів, і звісно різні діспосабл об’єкти не забути вичистити.

Це ніякого відношення до оптимізації не має. Оптимізація це коли твій код виконується за X-N тактів процесора, а не за X. Або коли він використовує менше пам’яті. Або коли робить менше кеш-промахів. Або коли не так грузить network. і так далі.

Про всі сотні тисяч взагалі, чи про кілька якихось конкретних?

Про найбільш часто використовувані. Загалом, з кожним новим застосуванням конкретної бібліотеки, твої знання про неї підвищуються, а з ними і якість її використання. Це базовий феномен для будь-якої діяльності. Не можна з наскоку зробити добре.

Але дуже конкретна і її дуже легко виміряти.

Цим займаються спеціалісти по бізнесу. Не можна міряти якість коду бізнесом. Бо зв’язок з кодом там не обов’язково сильний.

Давай приклади конкретні.

GraphQL у Фейсбуці. Технологія їхня, нова, цікава, але на сторінках фейсбуку її нема. Знову ж, ти хочеш заперечити наявність легасі коду в техно гігантах? Біаз.

ти просто в очі не бачив коду ФААНГів і уявлення не маєш чим вони займаються та як працюють.

Бачив, коли користував апі ютубу. Враження не дуже позитивні. Код виглядав як типовий гівнокод як і у не фаанг. Також ловив деякі баги. І це я не сильно глибоко користував. Ну а загалом, я знову приведу до авторитету — Чижденки. Який бачив результати фаангу сильно більше за мене. Ну але ти продовжуй розказувати, як ніхто нічого не бачив, а всередині тих корпорацій бджоли збирають мед.

Але експертна думка з приводу коду який ти не бачив в тебе вже сформована.

Процеси всюди схожі. Наприклад зкочування код бейз в спагеті. Це ентропія.

Код існує для того щоб бізнес міг продавати клієнтам рішення.

Я з цим не сперечаюся.

Вся ця «легкість» чи інші показники — це усього лише про мінімізацію витрат в процесі виробництва.

І така мінімізація, тобто оптимізація витрат — те, що дозволяє робити прогрес. А ще є один фактор — задоволення розробників від роботи в проекті. Там де поганий код, люди не дуже хочуть працювати. І йдуть звідти. І ось ми приходимо до того, що думка розробників теж важлива. А в ФААНГах просто відсипають більше бабла, компенсуючи незручності для розробника. Компанії по-менше не можуть так нехтувати якістю коду.

Як ти можеш обдумувати те, що навіть визначити не можеш?

Це ти вже придумав, що не можу визначити.

Що для тебе «якість коду»?

Я вже тобі писав.

Це ніякого відношення до оптимізації не має.

Лол, що за маячня?

Оптимізація це коли твій код виконується за X-N тактів процесора, а не за X. Або коли він використовує менше пам’яті. Або коли робить менше кеш-промахів. Або коли не так грузить network. і так далі.

Це вже коли спускаються на рівні нижче, для глибокої оптимізації. Таке потрібне лише на високонавантажених системах. Але все починається з оптимізації sql і api запитів.

Про найбільш часто використовувані.

Спробую ще раз — покажи мені цей код який у ФААНГів тобі не належної якості.

Не можна міряти якість коду бізнесом.

Не можна стверджувати, що щось не належної якості не маючи можливість цю якість поміряти.

Бо зв’язок з кодом там не обов’язково сильний.

У компаній діяльність яких спрямована на отримання прибутку? Там зв’язок прямий.

GraphQL у Фейсбуці.

Де цей код? Ти можеш лінку дати на поганий код ФААНГів?

ти хочеш заперечити наявність легасі коду в техно гігантах?

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

Бачив, коли користував апі ютубу. Враження не дуже позитивні. Код виглядав як типовий гівнокод як і у не фаанг.

Покажи мені де цей код який тобі не тої якості.

Також ловив деякі баги

У ФААНГів баг репорти відкриті, може дати лінки на баги які ти знайшов.

Ну а загалом, я знову приведу до авторитету — Чижденки. Який бачив результати фаангу сильно більше за мене.

А, так я можу привести авторитетів які бачили ще більше такого коду — так це працює?

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

Ніколи такого не казав.

Процеси всюди схожі.

Ні, у тих хто тримається в лідерах вони кращі.

Наприклад зкочування код бейз в спагеті.

Наприклад це відбувається там де за цим не слідкують.

І така мінімізація, тобто оптимізація витрат — те, що дозволяє робити прогрес.

Це те що дозволяє підвищити прибутковість.

Там де поганий код, люди не дуже хочуть працювати.

Доки не даси визначеня оце твоє «поганий код» звучить як «біоінформаційна матриця».

Там де поганий код, люди не дуже хочуть працювати.

Це з власного досвіду?

Компанії по-менше не можуть так нехтувати якістю коду.

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

Це ти вже придумав, що не можу визначити.

І придумав я це на підставі того, що ти не зміг дати визначення.

Я вже тобі писав.

Ти написав, що не знаєш що воно і як його міряти, але в ФААНГах його нема.

Лол, що за маячня?

ЛОЛ, не використовуй слова значення яких не розумієш.

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

Яка ще «глибока» оптимізація? Тобто є ще якась «не глибока»? Оптимізація вона і є оптимізація.

Таке потрібне лише на високонавантажених системах

Таке потрібне там де оптимізованість є важливою складовою якості.

Але все починається з оптимізації sql і api запитів

Особливо в іграх чи драйверах, ага. Ну не мели ти того про що не знаєш.

покажи мені цей код який у ФААНГів тобі не належної якості.

developers.google.com/...​be/v3/code_samples/dotnet

1. Засилля «new». Таке неможливо нормально затестувати юніт тестами.
2. «.Run().Wait();» замість async Main, який доступний з C#7.1 (тут легасі)
3. private async Task Run() - під цей код в принципі неможливо написати юніт тест, бо ж зроблений приватним. Хіба що через рефлекцію. Хоча в ньому є бізнес логіка, яку треба б тестувати.
4. GoogleWebAuthorizationBroker.AuthorizeAsync — статичний метод. В сучасному софті таке вирішується через Singleton.
5. [STAThread] — легасі атрибут під віндовс формs. Для чого цю специфічну реалізацію в прикладі показувати — незрозуміло.
6. using (var stream = new FileStream... — можна в один рядок зробити, забравши вкладення і попередню декларацію UserCredential credential;
7. new YouTubeService — базові параметри(налаштування бібліотеки) чомусь зроблені через проперті, а не аргументи конструктору. Роблячи через аргументи компілятор допомагає розробнику побачити що потребується для роботи з лібою без додаткового читання доків. «()» тут зайве, до речі.
8. «// Create a new, private playlist in the authorized user’s channel.» після цього йде багато boilerplate. Розписую:

8.1 newPlaylist.Snippet = new PlaylistSnippet() - це можна було зробити і одразу при створенні класу Playlist, в фігурних дужках.
8.2 newPlaylist.Status.PrivacyStatus = «public»; — пішли magic strings. Для цього є enum.
8.3. «snippet,status» знову якісь магічні рядки, та ще й через кому.
8.4 .ExecuteAsync(); — зайвий виклик, коли можна зробити це вже в Insert методі. Якщо потрібно 2 варіанти, сінк і асінк, то Insert і InsertAsync.

9. // Add a video to the newly created playlist.

9.1. Знову ж таким можна було все через вкладені проперті реадізувати, об легше чталося. Приклад:

var newPlaylistItem = new PlaylistItem {
    Snippet = new PlaylistItemSnippet {
        PlaylistId = newPlaylist.Id,
        ResourceId = new ResourceId()
        ...
    }
};

9.2 ResourceId.Kind = «youtube#video»; — знову магічний рядок, та ще й незрозуміло для чого ця частина «youtube» в об’єктах, які ми посилаємо YouTubeService.
9.3 ResourceId.VideoId = «GNRMeaz6QRI» тут ми знову вказуємо, що завантажуємо відео. Тобто йде дублікація флажків, спочатку через магічний рядок, а потім через сам сервіс-клас ютубу і проперті ResourceId.VideoId. Виглядає як наявність певного гівнокоду в апішці ютубу, для якої потрібно додатково вказувати що приходить їй, використовуючи дублюючі параметри. Проблема дизайну.

developers.google.com/...​be/v3/code_samples/dotnet

Тут варто звернути увагу на те, що це приклад використання API. Вимоги до прикладів зовсім інші — щоб вони були короткі і робили бажано одну, або хоча б мінімум речей, щоб їх легко було розуміти не значи якихось нововведень чи маловідомих моментів у мові, щоб їх можна було просто скопіювати і використати. Тому твої завуваження як на мене недоречні у більшості:
— юніт-тести тут взагалі ні до чого. Що ти збираєшся тестувати ними — їхнє API?
— якщо у мене C# старішою версії то для чого цей приклад має бути не доступним мені?
— для чого вводити якісь сінглтони якщо приклад не про це?
— те саме стосовно поперднії декларацій та іншого — якщо це не зробить код простішим і не додасть нічого до прикладу як використовувати конкретне API — для чого ускладнювати?
— стосовно як можна було б зробити в один ряд, магічних рядків та іншого — це приклад. Я його копіюю і не переписуючи просто заміняю магічні рядки та створення параметрів. Тому що хороші приклади можна скопіювати і з мінімальними змінами внести в свій код.

Пропоную тобі написати краще просто для порівняння. Якщо твій приклад буде дійсно більш наочним то його цілком можуть там опублікувати.

Що ти збираєшся тестувати ними — їхнє API?

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

Проблема з магічними рядками, що вони там не просто для прикладу, а тому що СДК не дає енумів для вставки замість рядків. В результаті треба більше бігати по доці, щоб бачити можливі варіанти. А так би одразу в айді видно було. Ну і цей ResourceId.Kind то внутрішня ідентифікація сервісу для всіх апішок ютуба а може і гугла. Теж би можна в енюм завернути. Або скоріше в константи, бо рядок енюмом не передаси.

Загалом я погоджуюсь що це лише приклад, і що нічого страшного там нема. Так, вирішив вказати на те, що в продакшин коді можна б покращити було. Буду працювати з фаангівською апішкою і побачу якийсь бед дизайн, обов’язково напишу сюди!))

Все ж там трохи логіки є

Логіка то там є. Але, повторюся, приклади — це особливий тип документації. Так само як юніт-тести — це особливий вид коду. І підходити до коду прикладів з вимогами як до коду продукту дещо недоречно ІМО.

До того ж усі твої зауваження ніяк на скомпільований результат не вплинуть скоріш за все.

Проблема з магічними рядками, що вони там не просто для прикладу

Вони там просто для прикладу. Ти можеш на їх місце підставти виклик функції яка повертає рядок.

Ну і цей ResourceId.Kind то внутрішня ідентифікація сервісу для всіх апішок ютуба а може і гугла

Значить використання такого рядка правильний вибір — це найпростіший код для цього приклада.

Яка ще «глибока» оптимізація? Тобто є ще якась «не глибока»? Оптимізація вона і є оптимізація.

Давай звернемося до Вікіпедії: en.wikipedia.org/...​wiki/Program_optimization

«Optimization can occur at a number of levels. Typically the higher levels have greater impact, and are harder to change later on in a project, requiring significant changes or a complete rewrite if they need to be changed. Thus optimization can typically proceed via refinement from higher to lower, with initial gains being larger and achieved with less work, and later gains being smaller and requiring more work.

Levels of optimization

— Design level
— Algorithms and data structures
— Source code level
— Build level
— Compile level
— Assembly level
— Run time
— Platform dependent and independent optimizations»

Де цей код?

Я мав на увазі, що фейсбук створив графкюль, але сам не використовує на сайті фейсбуку, як мінімум на основних сторінках. Все по старому, через рест.

Ні, у тих хто тримається в лідерах вони кращі.

А як же історії про те, що в Фаангах не тримають тестувальників, спеціалістів, перекидають інженерів з одного стьоку на інший, і ті одразу практично пишуть код, не маючи досвіду в тому стьоці?

Доки не даси визначеня оце твоє «поганий код» звучить як «біоінформаційна матриця».

Даю: код, який складно підтримувати і розширювати.

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

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

Ти написав, що не знаєш що воно і як його міряти

Я не писав що не знаю що воно. А от як міряти ні я ні інші не знають, бо це дуже філософське питання. З реальними наслідками. Запитаю ще раз — даси одиницю, якою вимірюють якість коду(а не прибутку з нього), то поговоримо детальніше.

але в ФААНГах його нема

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

ЛОЛ, не використовуй слова значення яких не розумієш.

Не вигадуй, що інші розуміють.

Таке потрібне там де оптимізованість є важливою складовою якості.

Звісно. Тобто на проектах, де та оптимізація є необхідною, чи приносить суттєву економію в ресурсах.

Особливо в іграх чи драйверах, ага. Ну не мели ти того про що не знаєш.

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

Давай звернемося до Вікіпедії: en.wikipedia.org/...​wiki/Program_optimization

Ти про низькорівневу оптимізацію говорив коли сказав «глибока»? Ок. Те що спочатку треба оптимізувати алгоритми, а потім вже такти економити — це перше, що треба розуміти коли займаєшся оптимізацією.

Але оптимізація має оптимізувати щось. Щось що можна поміряти до і після оптимізації.

А як же історії про те, що в Фаангах не тримають тестувальників, спеціалістів, перекидають інженерів з одного стьоку на інший, і ті одразу практично пишуть код, не маючи досвіду в тому стьоці?

А що не так? Якщо кеби вистачило пролізти в ФААНГ то якісь там мови/фреймворки та інше почати використовувати не буде проблемою.

Звісно є команди зі спеціалізацією у яких набір технологій вузький. Для команд же які замаються більшими, user facing, або просто вертикальними фічами — там люди використовують все що завгодно і не залочені на технології.

Даю: код, який складно підтримувати і розширювати.

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

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

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

як міряти ні я ні інші не знають, бо це дуже філософське питання

Чудово давно знають як міряти. Спочатку визначаєш які показники і в якій мірі визначають якість, потім їх міряєш.

даси одиницю, якою вимірюють якість коду(а не прибутку з нього)

Дам — якість коду вимірюють у одниницях показників з яких ця якість складається. Кількість та вага показників залежить від призначення коду.

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

Оптимізувати треба щось осмислено. Бази даних в іграх мало коли є хоч скільки небудь вузьким місцем. Хіча що це якась SQL-based гра.

Але оптимізація має оптимізувати щось. Щось що можна поміряти до і після оптимізації.

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

почати використовувати не буде проблемою.

Це зрозуміло. Особливо з теперішніми туторіалами по всьому інтернету. Але якісне виконання, це коли вже мав досвід з: А — доменом, Б — інструментарієм. Домен звісна річ важить більше. Але практикуючи з інструментом ми також практикуємо з доменом, вирішуючи завдання.

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

100%. І я це розумію. Але мене цікавив саме «естетичний» аспект коду, що пишеться в фаангах.

через їх вищу ніж у конкурентів якість.

Або ж через близьке до монопольного становище. Як у Фейсбука, де головне це база користувачів. І спробуй тепер створити нову соціалочку, не дуже вистрелить. Взагалі Маск казав так — коли ринок пустий, ти можеш робити щось не дуже заморочуючись якістю продукту. Але коли ринок зайнятий, то тобі треба видавати щось на голову вищі ніж у конкурента.

Спочатку визначаєш які показники і в якій мірі визначають якість, потім їх міряєш.

Розкажи детальніше про показники того що звуть Clean Code, чи ще як.

Зайвий виклик апі чи звернення до бази дуже явно пвпливає на час виконання.

Є правило «не обчислюй те що вже було обчислено».

Але мене цікавив саме «естетичний» аспект коду, що пишеться в фаангах

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

у Фейсбука, де головне це база користувачів. І спробуй тепер створити нову соціалочку, не дуже вистрелить

У ФБ вистрілило, хоча був «монополіст» MySpace. І у MySpace свого часу вистрілило хоча були Orkut, Classmates, Frindster та інші.

Але коли ринок зайнятий, то тобі треба видавати щось на голову вищі ніж у конкурента.

Що ФБ і зробив.

Розкажи детальніше про показники того що звуть Clean Code, чи ще як.

gist.github.com/...​cc446146b8b533c0988cf8d29

допустим тимлид завернёт на peer review нечитаемое решение с кучей скобочек и вложенных циклов.

Что более читаемо — вопрос очень спорный.

Алсо, если решать циклами, то вложенных циклов здесь не будет.

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

Задача сумування значень по ключу може бути вирішена лише з використанням певного API певної мови? Ні, це можна зробити будь-якою мовою програмування.

Я вносил избыточность, усиливая различия сравниваемых ключей.

Якщо з нуля писати то мабуть за кілька годин. Але я зроблю простіше — напишу на С та конвертну в асм. Там лише свою мапу доведеться написати, але теж не страшно.

На входе — структура
java.util.List>

www.technicalkeeda.com/...​ls/java-8-stream-grouping
и потом
www.baeldung.com/java-stream-reduce

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

На LC задачі-алгоритми, тобто там парсери писати не треба і всі дані на вхід подаються в готову для алгоритма виді. І друге — там можна писати однією з великої кількості мов зі стандатними бібліотеками.

З того як я її зрозумів це easy або легше.

Задачка на годинку-півтори разом з МРом і юнітами

Не знаю що таке МР, а юніт-тести це сам літкод, їх писати не треба. Це задачка на кілька хвилин будь-якою мовою.

Да, где-то так. Наскоком я в пятницу после обеда не осилил. Я привёл свой пример к тому, что получив такое на собеседовании с лайв-кодингом в каком-нибудь coderpad.io на время, где нужно не просто языком чесать, а написать компилируемый, рабочий код на конкретном языке с прогоном тестов на конкретных данных — на таком можно легко завалиться. Если, конечно, не делал что-то очень похожее недавно.

Для C# разработчика это задача на минуту, там linq, сначала groupby по ключу, потом Sum по группе. В общем как и в sql.

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

разве в стримах нету групбац и коллект ?

Есть. Но их далеко не каждый день применяют.

У тебе об’єкти можуть бути вкладені?

{
  "namespace": "fifth",
  "someOtherData": {
     "x": 10,
     "y": 10,
  },
  "count": 10
}
або
{
  "a": [1,2,3,4],
  "count": 1234
?

Чому таке не спрацює?

Map<string, int> sum = new Map<...>();
foreach (Map<string, Object> obj in input) {
  count = obj["count"];
  obj["count"] = 0;
  objJson = to_json(obj); // тільки якийсь детермінований сереалізатор, наприклад всі поля в алфавітному порядку
  obj"count"] = count;
  if (objJson not in sum)
    sum[objJson] = 0;
  sum[objJson] += count;
}

List<Map<string, Integer>> result = new List<...>(capacity=sum.Size());
foreach (jsonStr key, int value in sum) {
  obj = deserialize(key)
  obj["count"] = sum;
  result.append(obj);
}
return result;
У тебе об’єкти можуть бути вкладені?

Нет, не могут. JSON, что я привёл в качестве примера — это сериализованные результаты выборки из БД. Просто в ходе доработок получилось, что нужно промежуточные результаты однотипных запросов «склеить» в памяти. Но для Stream API, если оперировать не строкой JSON, думаю, не будет проблемой переварить на входе в т.ч. и сложные объекты, если они укладываются на входе в

java.util.List<java.util.Map<String, Object>> 

Чому таке не спрацює?

ХЗ, может и сработает.

Глянув що таке streaming api. Там же банально повинно можна було б зробити через map-reduce, тільки в java якісь йобнуті примітиви.

А так?

Map<Map<string, Object>, int> tmp = yourStream.collect(
  Collectors.groupingBy(
    (map) -> {
      clonedMap = map.clone();
      clonedMap.remove("count");
      return clonedMap;
    },
    Collectors.summingInt(map -> map.get("count"))
  ));
List<Map<string, Object>> res = new List<...>(capacity=tmp.size());
foreach (key, val in tmp) {
  key.put("count", val);
  res.add(key);
}
(сорі якщо з багами, писав в блокноті)

Просто в «нормальних» мовах робиться якось так:

stream
  .map(row -> Pair(row without "count", count))
  .groupByKey()  // group by first element of pair
  .reduceValue(+) // add up all second values
  .map(Pair(row without "count", count) -> row as map)
на вході і на виході у тебе потоки

row without «count» можна просто масивом tuple’ів зберігати: [(key1, value1), (key2, value2), ...] і відсортованими ключами.

Где-то так должно быть. Это у вас получилось без практического опыта в Java Stream API, за утро субботы? Если да, то апплодирую!

Java Stream API реально перший раз в житті бачу — нагуглив деякі приклади просто.

Але весь streaming api це зовсім не нова для мене штука — я map/reduce юзав десь з 2011 року ну і чуток spark’у і так далі. А у всіх них одна і та сама ідея — виразити перетворення через map/reduce/shuffle/...

Ну і при чому літкод?

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

Ну от проводились такі експерименти — занадто багато народу вміє правильно говорити, а коли доходить до коду пишуть лютєйший п****ц.

Говорити це видавати загальні твердження. Для цього необов’язково бути експертом і знати багато.

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

Абсолютно. Як заклинання про солід. Одна справа повторювати, а інша реалізувати, та ще й так, щоб за наступні 50 комітів все не злилося в спагеті гівнокод.

В зависимости от размера датасета базы делают это двумя способами.
1. Если размер датасета ключей небольшой.
Строится паралельно хештаблица + фулскан джисона с заполнением и агрегацией данных в хештаблице
2. Если размер датасета ключей большой
Данные выгружаются в сортированный список через Merge Tree на диске + фулскан с группировкой по ключу

Тред не читай @ сразу отвечай

gist.github.com/...​f423e6c182f61079697858837

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

В каком месяце посоветуете начинать спамить своим резюме компании на H1B? за пол года до апреля тут советовали, с 1-го сентября можно начинять? или рановато?
Понятно что в этом году уже не успею, я за следующий если что интересуюсь.

Так сейчас если оффер дадут вдруг, то в апреле 2021 меня на H1B лотерею подадут, а мне надо что-бы в апреле 2022 меня подали.

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

Решай проблемы по мере их поступления. Если оффер дадут вдруг, будешь решать проблему. Например, просто принимай. Какой смысл ждать еще один год, что ты высиживаешь?

Или скажи, ребята, офигенный офер, делайте H1B. Потом с H1B в кармане у тебя будет куча вариантов, в т.ч. пройти собеседование еще в кучу контор, или попросить чтоб дату первого дня поставили в 2022 (они охуеют от наглости, но с большой вероятностью поставят).

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

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

Оффер на 120к возможно и дадут сейчас, но что бы прыгнуть на 300к мне придеться в течении 3-х лет все выходные дрочить литкод этот в США, что бы харды шелкать как орешки. А это тяжело для психики, работать 5 дней в неделю, а все свободное время проходить литкод. То есть я или буду на 120к сидеть до конца жизни там, или выгорю и выпилюсь или вернусь в Украину. Поетому я хочу сначала взять сабатикал на пол года, выучить этот литкод и систем дизайн по максимум, а потом ехать хоть на 60к, зная что даже до 300к мне готовиться пару месяцев, а не много-много лет.

Я не подойду поздороваться с незнакомой девушкой на улице, потому что [ ... куча тупых причин, которыми оправдывается собственный страх перед исполнением и прокрастринация ... ]

а ты разве допрыгнул до 300 тотала ?

Нет, теперь думаю надо брать сабатикл как другой оратор советует.

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

А ти хіба не в ФБ? Ти ж не fresh out of school, правда ж? Ти в якому місці, якщо 300к не дали? О_о...

что бы прыгнуть на 300к мне придеться в течении 3-х лет все выходные дрочить литкод этот

Або запиляти щось круте в своєму проекті і отримати підвищення.

В Украине в любой компании, и в США левых компаниях, где всего 10 разработчиков такого не бывает, как жопу не рви, а у них весь ИТ отдел это 10 позиций, и все они заняты, это надо сразу в Фаанг попасть, а что бы туда попасть, надо пол года дрочить Литкод, так что все дороги ведут на Литкод

это надо сразу в Фаанг попасть, а что бы туда попасть, надо пол года дрочить Литкод

Я попал в Амазон на SDE2 позицию без литкода.

В долину? И из Украины по H1B? И без аналогов литкода и теории по деревьям и спискам?

В долину?

Нет

И из Украины по H1B?

Нет

И без аналогов литкода и теории по деревьям и спискам?

Решил пару задач на топкодере, но решил, что скучно и забил.

В долину? И из Украины по H1B?

Я в Редмоно в МС так потрапив.

И без аналогов литкода и теории по деревьям и спискам?

Без — я просто це знав і для мене подібні задачі не були складними ніколи.

В каком году это было? Мне кажеться сейчас такая халява не прокатит уже, а вот лет 5-10 назад много похожих историй было, типа как получали H1B сразу ехали туда на 2х ЗП без всякой подготовки.

В каком году это было?

2008.

Мне кажеться сейчас такая халява не прокатит уже

По-перше, чому халява? Цілком нормальні співбесіди, не простіше ніж у інших ФААНГах. По-друге, наймають і до недавнього часу. Навіть навпаки легше стало — співбесіди проходять у Києві, а не у Москві. До того ж більше компаній наймає в Україні.

получали H1B сразу ехали туда на 2х ЗП без всякой подготовки

Я був готовий, це перше. По-друге зарплатня була значно більша ніж 2х бо в ті часи в Україні зарплати були значно менші.

співбесіди проходять у Києві

Где можно почитать про эти хайринг ивенты фаангов и МС?
А то я как гуглил, то в Киеве давно ничего не было.

Я не знаю чесно кажучи. Там є різні програми — найм випускників, тих хто вже працює і супер-зірок. І займаються цим різні команди рекрутерів.

На різних закритих групах в ФБ та внутрішній розсилці компаній бачив інформацію про ці евенти.

Амазон часто проводил в Киеве, на ДОУ постоянно топики есть об этом. В 2020, раузмеется, был облом из-за COVID. В этом году, скорее всего, тоже ничего не будет.

Подавайся в Амазон, там можно сейчас получить SDE1 офер после online assessment.

Я так понял, сейчас Амазон набирает в Канаду, не? По крайней мере тех, кого они спамят в Украине.

что бы туда попасть, надо пол года дрочить Литкод

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

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

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

То же самое и с английским было, я был мидлом(но веслал как синьор по словам коллег). Но не знал английский вообще, и получал меньше джуна в аутсорсе. Я взял отпуск на пол года(все коллеги смотрели на меня как на больного, не могли понять прикола вообще).
Пол года учил английский по 4-8 часов в день, и через пол года имел почти C1, и увеличил свою ЗП в 5 раз.
Если бы учил его по выходным, то сейчас бы до сих пор был бы мидлом в продукте со смешной ЗП. И получал бы в 10 раз меньше чем сейчас.
Как видешь все мне говорили что я дебил, и так дела не делаються, а я знал что я буду получать в 5 раз больше через пол года, и я столько получил.

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

Так и я о том же, что мне еще учиться и учиться до 300к. И лучше это сделать дома, чем в США по выходным.

300 за чисто литкод не дают, уровень сеньйорства определяется архитектурными вопросами.

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

Тоді йди на прінципала — там можуть взагалі задачки на кодування не давати, а грузити архітекторою та дизайном.

Лучше сразу на CTO. 300К гарантированно схода, никаких технических вопросов нет.

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

а от задачки на алгоритми ніяк — це якось сумніви викликає

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

Сейчас все эти сортировки массивов делаются библиотеками типа LINQ

Сортування ніхто і не питає.

деревьев нет на 99.9% проектов

Як на мене то нема таких проектів де б не було дерев. Просто воно все як правило заховане в бібліотеках.

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

Можеш щось показати?

а остальной фигни нет в реальной жизни

В житті програміста є.

Можеш щось показати?

Не помню точно, но задача была в жанре: Запусти 3 треда которые вызывают функцию, но функция в первом должна выполница всегда первая, во втором всегда вторая, в 3-м всегда третия. И я юзал 2 ManualResetEvent который создавал закрытым, и 1-й поток его включал для 2-го, а 2-й для 3-го. И поскольку это самые легковесные конструкции на .NET У меня было лучше чем у 100% то есть выехал как раз таки на глубоком знании .NET а на олимпиадном программировании.

В житті програміста є.

Можешь привести пример что из литкода ты писал в реальном проекте в том же виде?

Просто воно все як правило заховане в бібліотеках.

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

Запусти 3 треда которые вызывают функцию, но функция в первом должна выполница всегда первая, во втором всегда вторая, в 3-м всегда третия. И я юзал 2 ManualResetEvent

Це можна так само зробити не лише в .Net. Більше того — на реальній співбесіді цілком можна сказати «я не пам’ятаю синтаксису та методів конкретних типів зі стандартної бібліотеки і буду використовувати приблизні, можу пояснити як воно все працє всередині».

Можешь привести пример что из литкода ты писал в реальном проекте в том же виде?

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

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

У більшості випадків не треба, але якщо твоя робота ближче до ОС, драйверів та заліза то треба.

Ты можешь ассемблер вообще не знать.

Ну це був би великий пробіл у знаннях ІМО. Ти можеш на ньому не писати, але мати уявлення що воно та і як — це обов’якзоково.

Можешь привести пример что из литкода ты писал в реальном проекте в том же виде?

Ну з динамічного програмування я писав видозміненого левенштейна тиждень назад (10 рядків) і видозміненого вітербі (~20 рядків).

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

Два зовсім різних проекти.

Перший — НЛП, де додали препроцесінг, який фіксить орфографічні помилки (стало сильно краще).

Другий — мій хоббі-проект на тему обробки звуків.

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

НЛП

Само по себе это уже максимум 1% проектов. Я про то, что есть хотя бы в 50% проектов.

Не помню точно, но задача была в жанре: Запусти 3 треда которые вызывают функцию, но функция в первом должна выполница всегда первая, во втором всегда вторая, в 3-м всегда третия. И я юзал 2 ManualResetEvent который создавал закрытым, и 1-й поток его включал для 2-го, а 2-й для 3-го. И поскольку это самые легковесные конструкции на .NET У меня было лучше чем у 100% то есть выехал как раз таки на глубоком знании .NET а на олимпиадном программировании.

Чувак, ну ManualResetEvent это ж .NET multithreading 101.

Если можешь на доске запилить user mode lock, RCU или что-то в таком духе и при этом не забудешь про такую вещь как memory reordering, но не будешь расставлять кучу барьеров, чтоб с ними бороться, ты можешь говорить о том, что знаешь multithreading на уровне на котором знает принципал по мультитредингу.

Можешь привести пример что из литкода ты писал в реальном проекте в том же виде?

Например,

leetcode.com/problems/design-hashmap — на нескольких проектах или пилил хеш-таблицу с нуля или сильно допиливал существующие хеш-таблицы

leetcode.com/...​ms/design-circular-queue — сильно допиливал существующую реализаци

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

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

Я на реальных проектах любые локи уже давно не использую, все переписываю через Task Data Flow и Agent(или ее чаеще называют Actor) Model, без всяких блокировкок и ожиданий потоков, и всю эту неделю я как раз таки переписовал последний бател нек с многопоточность и ускорил его в 30 раз, аж сам не поверил, думал то баг, там создавалось 100 потоков если что, потом их результаты агрегировались в 101-ом.

Если можешь на доске запилить user mode lock, RCU или что-то в таком духе и при этом не забудешь про такую вещь как memory reordering

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

leetcode.com/problems/design-hashmap — на нескольких проектах или пилил хеш-таблицу с нуля или сильно допиливал существующие хеш-таблицы
leetcode.com/...​ms/design-circular-queue — сильно допиливал существующую реализаци

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

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

На уровне «все знаю в общих чертах, но код написать не могу» знают все.

leetcode.com/problems/design-hashmap — на нескольких проектах или пилил хеш-таблицу с нуля или сильно допиливал существующие хеш-таблицы

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

PS: Как ты говоришь. Talk cheap, show me a code
Показываю, вчера улучшил и прогнал через нагрузочное тестирование этот код, по удалению ключей из Trie (эта такая штука которая работает на уровне или быстрее хештаблицы, при этом потребляет меньше памяти, хранит сортированные ключи и предоставляет интерфейсы типа искать ключи по шаблону, по диапазону и тд).
Все по взрослому. Keywords: reuse died fibres, shrinks, holes on memory pages
Осторожно, литкодовцам сюда лучше не заходить, может начатся легкая паника.
github.com/...​/HArray_delValueByKey.cpp
github.com/...​/HArray/HArray_shrink.cpp

Код якийсь повний п****ц. Можеш детально розказати що саме твій HArray робить? Просто trie зазвичай пишеться тривіально:

struct hash_pair {
    size_t operator()(const pair<int, char>& p) const {
      return p.first ^ (size_t(p.second) * 999961);
    }
};

template<typename T>
struct Trie {
  unordered_map<pair<int, char>, int, hash_pair> edges;
  vector<T> data;

  Trie() : data(1) {}

  void put(const string& s, const T& value) {
    int node = 0;
    for (char ch : s) {
      auto it = edges.find({node, ch});
      if (it == edges.end()) {
        edges[{node, ch}] = data.size();
        node = data.size();
        data.emplace_back(T());
      } else
        node = it->second;
    }
    data[node] = value;
  }

  T get(const string& s) {
    int node = 0;
    for (char ch : s) {
      auto it = edges.find({node, ch});
      if (it == edges.end())
        return T();
      node = it->second;
    }
    return data[node];
  }
};

візьми якісь само-shrink структури замість вбудованого unodered_map/vector’а і буде ок.

Код взрослый, оставь надежду всяк сюда идущий. Но он о*уенен и изящен, для меня прост в понимании.
На главной странице все есть.
Овервью ф-сти. Бенчмарки.
github.com/Bazist/HArray

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

Сорі, але там якась дич. Як мінімум не ясно чи це thread-safe ліба чи ні.

Далі, про що взагалі мова? Про мап з uint32 в ... що? Чи про мап з багатьох uint32 в ... знову ж таки, що? в uint32? в void*?

В чому проблема «Stop World»? Ти хочеш добитись predictable latency на кожну вставку/видалення? Якщо так, то вже так і напиши, що worst case insert latency — стільки то. Далі ще було б непогано описати overhead — скільки байт на один елемент, хоча б статистично — виділили вставити 1кк значень і сказати скільки пам’яті сумарно все зайняло.

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

thread-safe

Нет.

Далі, про що взагалі мова? Про мап з uint32 в ... що? Чи про мап з багатьох uint32 в ... знову ж таки, що? в uint32? в void*?

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

В чому проблема «Stop World»? Ти хочеш добитись predictable latency на кожну вставку/видалення? Якщо так, то вже так і напиши, що worst case insert latency — стільки то.

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

Далі ще було б непогано описати overhead — скільки байт на один елемент, хоча б статистично — виділили вставити 1кк значень і сказати скільки пам’яті сумарно все зайняло.

Для чистого рандома оверхед где-то x2-x2.6, что чуть меньше или сравнимо сколько потребляют хештаблицы.
Для ключей которые не чистый рандом, особенно которые хорошо префиксно жмутся (урлы, пути, слова и тд) может быть потребление памяти вплоть до компрессии.

а «ordered keys» означає, що я можу накидати туди ключів-значень в якому попало порядку, а потім проітерувати по них в порядку зростання (спадання)?

Да. Более того, можешь свой порядок задать. Если числа флоат\дабл напр. Там есть примеры на главной странице.

чи правильно я розумію, що я можу взяти невпорядкований масив розміром N (нехай там будуть різні натуральні числа), по одному елементу накидати всередину HArray (нехай і як ключ і як значення), a потім прочитати звідти впорядкований? При чому кожна добавка елементу і читання звідти О(1), тобто на ввесь масив я потрачу О(N)?

В терминах большой нотации да, это будет на добавление всех элементов O(N) + O(N) на чтение всех элементов.
С практической точки зрения, да я пробывал сортировать элементы через HArray. Но сортировка у меня не получалась быстрее чем в quicksort или timsort. Плюс минус сопоставимое время. Можно конечно найти контрпримеры где квиксорт существенно проиграет (напр если сортировать теже длинные урлы), но это не спортивно.
Все потому что теория и практика немного различаются. И когда мы говорим О(1) то 1 это константа, но эта константа это длина ключа. А на практике всё ещё сложнее.

В терминах большой нотации да, это будет на добавление всех элементов O(N) + O(N) на чтение всех элементов.

ну от мені і стало цікаво, як вдалось подолати O(N log(N)) — теоретично можливу границю швидкості сортування для алгоритмів заснованих на порівнянні

Есть практика, а есть теория.
Например если мы говорим про quicksort, то он тратит время на сравнение и перемещение элементов при сортировке. Но HArray его никогда не тратит, однажды сохраненный ключ уже никогда не перемещается в памяти. Иногда эволюционируют его узлы при вставках или деградируют при удалении, но сам ключ в памяти не перемещается.
Вот здесь есть немного теории, в чем прелесть Trie.
github.com/...​ter/Trie_for_beginners.md

Если говорить о длинных ключах, типа урлах, которые хорошо префиксно жмутся, то HArray не только их сразу отсортирует при вставке на скоростях значительно превышающих работу хештаблиц, но и почти ничего не будет перемещать в памяти, как это делают любые быстрые сортировки in place.
В этом кейсе HArray по сортировке будет кратно превосходить квиксорт.
В общем кейсе. Где ключ например обычный 4х байтный рандом, результат скорости сортировки будет сопоставим с квиксортом.

заснованих на порівнянні

Бо він не на порівняннях. Чудовою вправою є написати свій сорт інтів, який використовує той факт, що сортує інти :).

Бо він не на порівняннях

HArray конечно сравнивает ключи. Но он их никогда (целиком) не перемещает в памяти. Когда мы имеем дело с длинными ключами, то квиксорт проиграет за счет того, что будет копировать с места на место длинные ключи при операции swap, при этом HArray этого делать никогда не будет. И за счет этого выиграет. А на рандоме интов он будет плюс минус работать также, только за счет своего оверхеда. Ибо HArray всетаки мапа для очень быстрого вставки\поиска\обновления\удаления ключей, а не их сортировки.

Чудовою вправою є написати свій сорт інтів, який використовує той факт, що сортує інти :)

я назвав його lulz_sort :)

data = [3, 1, 45, 1, 2] 

def lulz_sort(l, p, d):
  f = lulz_sort if d else lambda l,p,d: l
  return f([x for x in l if x<p], p-d, d>>1) + f([x for x in l if x>=p], p+d, d>>1)

import math
N = 2**int(math.log(max(data), 2))

lulz_sort(data, N, N // 2)

Тут (дуже) погано, що ти багато додаткової пам’яті використовуєш. Так не цікаво :). Треба з O(bucket) додаткової.

І, до речі, проблема в тому, що ти робиш всього-лиш по-бітно. Тобто на 32-бітних інтах у тебе глибина буде десь 32 (ну або 31 якщо тільки додатні числа). Це погано, бо logN < 32 в майже усіх випадках.

І ще. Якщо хочеш без додаткової пам’яті, то тобі можна слайс передавати. Якось так:

def lulz_sort(lst, bit):
  if bit == 0 or len(lst) <= 1: return;
  # cnt -- number of elements in lst that have bit set.
  # that is after sort:
  # L0 = lst[:cnt] will have bit unset (0)
  # L1 = lst[cnt:] will have bit unset (1)
  cnt = sum(1 for i in lst if i & bit != 0)
  L0, L1 = lst[:cnt], lst[cnt:]

  # move elements that have `bit` set from `L0` to `L1`.
  p0, p1 = 0, 0
  while p0 < len(L0):
    while p0 < len(L0) and L0[p0] & bit == 0: p0 += 1
    while p1 < len(L1) and L1[p1] & bit == 1: p1 += 1
    # now either L0[p0] have bit set AND L1[p1] have bit unset
    # OR p0 == len(L0) and p1 == len(L1) => all elements reshuffled
    if p0 == len(L0) break;
    L0[p0], L1[p1] = L1[p1], L0[p0]
    p0 += 1; p1 += 1;
   
  # now stuff is re-shuffled, sort recursively
  lulz_sort(L0, bit // 2)
  lulz_sort(L1, bit // 2)

P.S. я пам’ятаю що ти з фізфаку, так ето ... воно видно — у математиків (і, получається, фізиків) дуже велика любов до однобуквенних змінних (сам такий :) ).

просто я люблю код-гольф :)
dou.ua/...​rums/topic/28593/#1763796
цікаво, що якщо з іншого боку біти розглядати, то таки можна дотиснути до ванлайнера
dou.ua/...​rums/topic/31632/#2043595

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

# non-negative ints only
data = [3, 1, 45, 1, 2]

def lulz_sort2(l, d=1):
  return l if d > max(l) else lulz_sort2([x for x in l if not x&d] + [x for x in l if x&d], d<<1)

lulz_sort2(data)

а компаратор в той HArray сетиться просто щоб було?

Если честно, я не смотрел код)
Но если мы говорим о trie, то ссылка валидна.

мої питання відносяться виключно до HArray, на який було посилання вище.

Код якийсь повний п****ц. Можеш детально розказати що саме твій HArray робить? Просто trie зазвичай пишеться тривіально:

Дай угадаю, ты новенький?

Сейчас все эти сортировки массивов делаются библиотеками типа LINQ, а деревьев нет на 99.9% проектов

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

Самое близкое, что я помню, это найти Top K-й элемент в массиве на N элементов за O(K).

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

Можно пример решения?

Не помню точно, но задача была в жанре: Запусти 3 треда которые вызывают функцию, но функция в первом должна выполница всегда первая, во втором всегда вторая, в 3-м всегда третия. И я юзал 2 ManualResetEvent который создавал закрытым, и 1-й поток его включал для 2-го, а 2-й для 3-го. И поскольку это самые легковесные конструкции на .NET У меня было лучше чем у 100% то есть выехал как раз таки на глубоком знании .NET а на олимпиадном программировании.

Очень похожа, или она, или была еще одна такая-же.

Це дуже проста задача. Просто використовуєш семафори, евенти, чи що там є з легкого в мові/бібліотеці. У мене на плюсах щось таке вийшло:

class Foo {
public:
    void first(function<void()> printFirst) {
        unique_lock<mutex> lock(m_mtx);
        printFirst();
        m_firstDone = true;
        m_first.notify_one();
    }

    void second(function<void()> printSecond) {
        unique_lock<mutex> lock(m_mtx);
        m_first.wait(lock, [this](){return m_firstDone;});
        printSecond();
        m_secondDone = true;
        m_second.notify_one();
    }

    void third(function<void()> printThird) {
        unique_lock<mutex> lock(m_mtx);
        m_second.wait(lock, [this](){return m_secondDone;});
        printThird();
    }
    
private:
    bool m_firstDone = false, m_secondDone = false;
    condition_variable m_first, m_second;
    mutex m_mtx;
};

talk is cheap, show me the code.

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

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

ibb.co/XpF8kDY
Где глянуть что я лучше чем 100% был я хз, если кинешь ссылку я по аналогии тебе скину.

P.S. уже попустили, лучше чем 96% всего, а год назад было 100%
ibb.co/GxV1GWh

I hate to brake it to you, но лучше чем Х% на литкоде работает очень плохо :) У них нет нормальной виртуализации и запускается на разных машинах. У меня был код, которы был лучше чем 20% и когда перезапустил стал лучше чем 100%.
Так что это просто значит, что год назад вам попалась лучше машина в менее нагруженом состоянии чем 100% остальных людей :)

Самое близкое, что я помню, это найти Top K-й элемент в массиве на N элементов за O(K).

А как за O(K), в голову приходит только за О(n*lgn)

Самое близкое, что я помню, это найти Top K-й элемент в массиве на N элементов за O(K).

В твоей же ссылке бесткейс O(n)
Ворсткейс O(n*n)

Откуда О(К) ?
При топ 1 элементов будешь сканировать 1 элемент ?

Опечатка была. В статье правильно сложность рассчитана.

Ну и к слову сказать, квикселект годится только чтобы таски на литкоде закрывать.
Алгоритм ужасен и по ворсткейс и по сик таймс.
В реальных проектах используются другие алгоритмы которые работают железно за O(n) и могут работать с медленным диском. Хоть и с доп потреблением памяти K. Но поскольку К это всегда топ 10, топ 100 ну может топ 1000, а данных миллионы строк то на память никто не обращает внимание.
Кстате хороший пример — как решает задачу дрочер литкода в фаанге.
И как она решается в реальном проекте, где забыли на литкод создать аккаунт

а деревьев нет на 99.9% проектов.

Как минимум сиквел построен на деревьях.

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

я крутой архитект из лидера рынка, но литкод вообще не решаю

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

меня возьмут туда на принципала или нет?

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

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

То есть я могу сказать: Я — принципал

Подавай резюме на прінципала, якщо зацікавить — з тобою зв’яжуться.

литкод я вообще не шарю

Це зайве, цього казати не варто.

Я сеньйор С++, от тільки ніяк не пойму коли і для чого там крапку з комою ставити. Давайти мені складні задачі.

я вам убийцу Гугла там нарисую

Готовий закластися що ні, не намалюєш.

И они скажут: -ОК, на своей позиции ты и не должен его дрочить, давай сразу систем дизайн.

Якщо тебе будуть розглядати на прінципала то задачі там звісно будуть масштабніші і складніші ніж алгоритми — це перевжно будуть дизайн та архітектура. Як з нуля так і виправлення косяків у запропонованій. Оцінка вартості і термінів. Оцінка і мітигація рисків. Розбиття на задачі та приорітизація. І купа усього іншого, що має прінципал робити.

Тобто прінципал це не той кому кажуть «зроби ось це добре», а той хто каже «я ось вам тут добре зробив» без особиливих вказівок.

Тим більше ти про принципал архітекта говориш, а не про пронціпал дева.

Тим більше ти про принципал архітекта говориш, а не про пронціпал дева.

Можешь объяснить разницу? Я думал принципал в США один, и это и есть наш архитект, а бывает еще принципал архитект это — высший тайтел архитекта который идет после синьор архитекта, и таких всего пару на многомилиардную компанию. Это считай первый заместитель CTO.
Или условно в гугле на L8 есть и принципал дев, и принципал архитект?

Тобто прінципал це не той кому кажуть «зроби ось це добре», а той хто каже «я ось вам тут добре зробив» без особиливих вказівок.

Вот это как раз таки у меня хорошо получается, но я за такую инициативу пока только «по ушам» в наем аутсорсе получаю.

Можешь объяснить разницу? Я думал принципал в США один, и это и есть наш архитект

Дев/тест/архітект/ПМ — різні ролі. Джун/сеньйор/прінципал — різні рівні у кожній ролі.

Или условно в гугле на L8 есть и принципал дев, и принципал архитект?

Я думаю у них там і прінципал тест і прінципал ПМ теж бувають.

Вот это как раз таки у меня хорошо получается, но я за такую инициативу пока только «по ушам» в наем аутсорсе получаю.

Перескочити рівень — це дуже важко, навіть не знаю чи реально взагалі.

Можешь объяснить разницу? Я думал принципал в США один, и это и есть наш архитект, а бывает еще принципал архитект это — высший тайтел архитекта который идет после синьор архитекта, и таких всего пару на многомилиардную компанию. Это считай первый заместитель CTO.
Или условно в гугле на L8 есть и принципал дев, и принципал архитект?

То, о чем ты говоришь, скорее всего называется Solution Architect. В BigTech это люди, которые код писать не умеют, но знают кучу базвордов и умеют рисовать красивые вещи на доске и делать power point презентации. Например, облачные провайдеры имеют таких людей. Они общаются с кастомерами и пытаются их убедить купить как можно больше сервисов, показывают как их можно будет связать друг с другом в одну большую красивую картинку (на доске, раузмеется, сами они ничего не делают).

Самые продвинутые могут запилить и задеплоить какой-то hello world в облако, представляющий 1% сложности от того, чот они легко предлагают реализовать кастомерам.

— Так, что у вас? Вебсайт? Вот, будем юзать виртуалку EC2. Что еще? Данные? Юзаем DynamoDB или RDS, рисуем, связываем их линией. Сколько кастомеров? Много? Ок, надо будет много виртуалок, рисуем. А много виртуалок — их надо скейлить, рисуем Auto Scaling Group. Что еще? Ага, надо load blancer, рисуем и рисуем линии до виртуалок. А картинки у вас есть? Есть? Отлично, добавляем S3 хранилище для картинок, и Cloud Front для CDN, связываем линиями. Смотри как офигенно. А вам еще надо имейлы отравлять и SMS сообщения? Это офигенно, добавляем SES и SNS. А данные вам надо стримить? Не надо, жаль я хотел нарисовать еще Kinesis. Ну все равно смотри как офигенно получилось!

Это полезные люди, но к разработке продуктов и сервисов отношения не имеют.

— Так, что у вас? Вебсайт? Вот, будем юзать виртуалку EC2. Что еще? Данные? Юзаем DynamoDB или RDS, рисуем, связываем их линией. Сколько кастомеров? Много? Ок, надо будет много виртуалок, рисуем. А много виртуалок — их надо скейлить, рисуем Auto Scaling Group. Что еще? Ага, надо load blancer, рисуем и рисуем линии до виртуалок. А картинки у вас есть? Есть? Отлично, добавляем S3 хранилище для картинок, и Cloud Front для CD

Как с головы моей прочитал, как раз то, что я неделю назад делал.

То, о чем ты говоришь, скорее всего называется Solution Architect. В BigTech это люди, которые код писать не умеют, но знают кучу базвордов и умеют рисовать красивые вещи на доске и делать power point презентации.

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

Так я эту позицию и хочу как раз, чем не работа мечты?

Разводить руками и ничего не делать и ни за что не отвечать — это работа мечты, согласен.

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

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

Во-третьих, не нужен литкод, нужны хорошие коммуникационные способности и софт скилы.

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

Нет. Это совершенно разные роли, слабо связанные друг с другом.

Solution Architect — это тот, кто рассказывает кастомерам как связать компоненты в кучу. В Амазоне большинство SDE2 и все SDE3, у которых есть какой-то свой сервис, в дополнение к своим инженерным способностям имеют экспертизу Solution Architect и пользуются ей для построения своего сервиса. У них всех майндсет «Не рассказывай какой сервис юзать, лучше помоги запилить CFN темплейт. Не знаешь CFN? Тогда иди нах».

Роль Principal Engineer — это техническая роль, где надо делать вещи, в т.ч. писать код. Они пилят архитектуру, но не ту архитектуру, про которую ты думаешь. Рисовать на доске auto scaling group и load balancer им не нужно — это могут сделать SDE2 и SDE3 самостоятельно. Они, например, разрабатывают новую топологию для дата-центра, новую систему виртуализации и т.п.

Иногда Principal Engineer помогают что-то задизайнить кастомерам (вместо Solution Architect) — это делается не потому что нужна какая-то суперская экспертиза, а чтоб показать кастомеру респект и уважуху — «смотрите, в этот раз с вами работает не какой-то обычный Solution Architect, а сам Principal Engineer, который 5 лет назад с нуля разработал сервис, который вы юзаете».

в этот раз с вами работает не какой-то обычный Solution Architect, а сам Principal

Не понял, а обычные архитекты это кто? SDE3 что ли?

Что такое «обычный архитектор»?

Иногда Principal Engineer помогают что-то задизайнить кастомерам (вместо Solution Architect) — это делается не потому что нужна какая-то суперская экспертиза, а чтоб показать кастомеру респект и уважуху — «смотрите, в этот раз с вами работает не какой-то обычный Solution Architect, а сам Principal Engineer, который 5 лет назад с нуля разработал сервис, который вы юзаете».

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

Можешь привести пример архитектуры, которую ты делаешь на daily basis? Какой-то дизайн док или что-то нарисованное на white board? Я тебе могу помочь понять какой левел SA этим занимается.

Разбиваю монолит на микросервисы, переношу логику с SQL на .NET и TS. Создаю архитектуру кластера в AWS с нуля, решаю какие сервисы AWS использовать для новой версии.
Но я сейчас техлид если что, хоть у нас в компании нет Application Architect-ов и все техлиды должны уметь выполнять обязанности Application Architect-а.
А учусь я на следующий левел, на Solution Architect-а который уже может продумывать архитектуру для нескольких команд, и не писать код вообще.
Но Украинские тайтлы то отдельная тема, меня интересует при какой у инженера должен быть минимум левел у вас, что бы он был полноценным Solution Architect-ом?
P.S. в треде «24 онсайта» ты вроде писал что решил 300 задачек за 5 месяцев с января по май. Ты решал их паралельно с работой? Или брал отпуск? Можно без подробностей, если тут твои коллеги сидят.

Разбиваю монолит на микросервисы, переношу логику с SQL на .NET и TS. Создаю архитектуру кластера в AWS с нуля, решаю какие сервисы AWS использовать для новой версии.

Дизайн док плиз, я не понимаю вы говорите.

меня интересует при какой у инженера должен быть минимум левел у вас, что бы он был полноценным Solution Architect-ом?

Это вопрос типа как у кошки должен быть левел, чтоб она была полноценной собакой?

Какой у кошки с тайлом

Solution Architect

будет левел по собачей(SDE) шкале?

Доки кинуть не могу из-за NDA само собой, если что, раз рисовал дизайн документ с диаграммами на 40 страниц.

P.S. в треде «24 онсайта» ты вроде писал что решил 300 задачек за 5 месяцев с января по май. Ты решал их паралельно с работой? Или брал отпуск? Можно без подробностей, если тут твои коллеги сидят.

Решал в свободное от работы время.

Подавай резюме на прінципала, якщо зацікавить — з тобою зв’яжуться.

А реально сразу с Украины на принципла поехать?
Если что это я на далёкое будущее спрашиваю, я понимаю что мне до американского принципала как до западного побережья рачки.

А реально сразу с Украины на принципла поехать?

Якщо продемонструєш відповідний рівень — так, реально.

То есть я могу сказать

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

Пример реального разговора с hiring manager в MSFT Azure
— Ну что, хочешь к нам работать?
— Да, а на какой левел нанимаете?
— Да на разные.
— Ну на какие?
— А ты какой хочешь?
— Principal/65 или выше
— .....
— .....
— А ты сам какой левел?
— Я SDE2 в AWS
— Ок, мы с вами свяжемся.

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

Пример другого разговора с директором в Oracle

— Ну что, идешь к нам работать?
— А вы какие левелы нанимаете?
— Ну могу предложить IC-4 Principal
note: в Оракле инфляция левелов, Principal эквивалентен SDE3 в Амазоне.
— Я хочу IC-5 Consulting MTS
— А ты какой левел?
— SDE2
— Чувак... Я переманивал Amazon Principal на Consulting MTS... Давай потихоньку... тебя повесим на IC-4 и посмотрим.

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

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

Ты представляешь себе сколько на рынке труда людей, которые не умеют кодить, но считают, что они могут на доске нарисовать убийцу гугла? :)

И они скажут: -ОК, на своей позиции ты и не должен его дрочить, давай сразу систем дизайн.

Не скажут. Почти все серьезные Principal SDE и Senior Principal SDE пшиту код и довольно активно.

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

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

Ты читаешь ответы, которые тебе пишут?

dou.ua/...​rums/topic/31632/#2042913

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

Это уровень SDE2, если сильно повезет.

Принципал — это человек с 10+ годами опыта работы в Big Tech, реальными достижениями (например, разработал сетевой стек Windows, или систему виртуализации, которую задеплоили на миллион серверов), стопкой патентов, contributions в какие-то стандарты, спецификации и серьезные опенсорс проекты, опубликованные цитируемые white paper, выступления на серьезных конференциях, плюс куча связей в Big Tech, которые позволяют набрать телефон какого-то вице-президента и сказать ему, что ты будешь у них работать, поэтому надо открыть позицию и сделать офер.

Мне кажеться ты Distinguished Engineer описал, а принципал это обычная рабочая лошадка, которая есть на каждые 3-5 команд(из 5-9 человек), и если в компании 50к гребцов, то будет 2к принципалов.

Мне кажеться ты Distinguished Engineer описал

Один из Distinguished Engineer, которого я знаю — это James Gosling (чувак, который разработал оригинальную Java). Еще один — ключевой контрибьютор в qemu. Еще один — чувак, который работал в Amazon с первого года его основания и приложил руку к разработке большинства успешних продуктов компании в разное время.

а принципал это обычная рабочая лошадка, которая есть на каждые 3-5 команд(из 5-9 человек), и если в компании 50к гребцов, то будет 2к принципалов.

Давай на секунду предположим, что я лично работал в BigTech и регулярно взаимодействовал с PE напрямую, и видел чем они занимаются? Я работал в infrastructure, что вносит некоторую погрешность, но тем не менее дает более менее хорошее представление о том, чем эти люди занимаются.

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

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

Чувак, ты задал вопрос, реально с позиции архитектора в лидере рынка Украины попасть на позицию принципала? Я тебе отвечаю — нереально.

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

Чувак, ты задал вопрос, реально с позиции архитектора в лидере рынка Украины попасть на позицию принципала? Я тебе отвечаю — нереально.

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

Лучше бы начал сначала думать, куда 500 000 складывать.

Как куда? Я придумал свой пакет акций 4 месяца назад, и за 4 месяца там +40%(из-за Теслы пипаной). Напугал бомжа самогоном)
А вот в Украине я ссу больше 7k$ в банк ложить, гарантии же никакой. Не факт что скоро и эти 7k$ давать будут, так как у Фонда гарантирования Вкладов гигантские долги.

Отлично.
Осталось всего навсего получить h1b и работу в фанге.
Это уже мелочи.

+1
вот она проблема сбережения и преумноженя зароботков в украине

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

возьму сабатикал

надо брать блэк сабатикал
во первых — блэк сабатикал матерс...

Как я понял, попасть в FAMNG куда то в Европу или Канаду легче чем в США?
Какая потом вероятность поехать в США по L1 через год?
Как решают кто поедет? Отправляют всех? Только лучших? Или лотерея какая-то?
Тут писали в восточной европе фаннги и MS платят некотрым 3.5k$ чистыми в месяц.
Не хотелось бы лет 5 сидеть на такой ЗП в какой то Польше.

Зависит от компании, какой отдел и какая команда. Если большая распределенная организация (например, Amazon Networking очень распределена, есть офисы в Европе в т.ч.), то в ней переходить будет проще. Если это что-то замкнутое, то сложнее.

Здесь тебе вряд ли достаточно информации дадут. Попробуй спросить на teamblind.com

500К$/y — это хорошие деньги, а быть 23-сеньйором и уметь литкод — довольно заурядно. Все кто учился на computer science учили алгоритмы. Я не понимаю зачем такого специалиста нанимать-перевозить на такие деньги.

Я 6 лет учился в топовом вузе на топовом фаекультете на CS. И реально учился, а не сайти на php вместо пар клепал. И сходу даже изи не все могу сделать. Там нифига ничему не учат такому даже близко.

Ок, не все учили 🙂. Я к тому, что если за несколько месяцев можно понять принципы решения всех задач на Литкоде, и если учесть что эти умения действительно редко пригождаются, то не такой уж это крутой, редкий, востребованый, ценный навык. Решать задачи по обучалкам, с подсказками (не на 100%, на 100% никто не требует), с готовыми решениями в интернете, а так же заплатив непосредственно Литкоду может любой программист. Можно нанять джуна и доучить его Литкоду.

Я решил все задачи на Кодилити (те которые с уроками). Там их по-меньше конечно, чем на Литкоде. Нужно много времени и желания, да.

топовом вузе на топовом фаекультете на CS.

Це де? Я спеціально десяток easy глянув і вони всі супер прості. Там взагалі більшість задач настільки прості, що можна було б і без універу рішити.

Гм... Наче норм ВУЗ...

Ти просто колись писав, що проходив топовий рівень (С2) в якоби топових курсах:

Я проходил C2(Proficiency) в топовой школе английского

і потім умудрився зморозити:

Can you see the bird? I expect it to be a magpie is pecking an acorn. Am I right?

і

There’d been an oak near there.

тому ти не обіжайся коли народ піддає сумніву топовість твоєї освіти.

Я когда магистра закончил английский знал на уровне Full Beginer. Не мог сказать I work here. и после универна начал с нуля учить. Вот такой вот топовый вуз.
А школа английского действительно крутая, и препод америкос. Уверен некотрую граматику я лучше тебе бывшего гугловца знаю. Но не ошибаеться тот, кто ничего не делает.

Уверен некотрую граматику я лучше тебе бывшего гугловца знаю.

Мужик, от якого *** ти це пишеш в тому ж повідомленні, що і

Full Beginer

хінт: beginner пишеться з 2-ма «n».
edit: та і «full beginner» ніхто не говорить, якщо вже «beginner», то «total» або хоча б «complete».

Не умничай, вот тут ты под эффект Даннинга — Крюгера сам попал. Это именно название уровня, можешь погуглить что оно значит, и в чем отличие от Beginner.
В кратце Beginner это полноценный левел на котором уже 3 или 4 времени можно полнценно использовать. То есть турецкие грузцики это типа Beginner они могу спросить куда нести, кем ты работаешь, и тп. А я был именно Full Beginner т.е даже такое спросить не мог.
А Elementary полноценный это вообще можно говорить на бытовые темы нормально, еще выше, там времен 5.
Ну а n вторую забыл, потому как тут спелчекера нет, а я даже на русском без него с ошибками пишу.

Не умничай

Так а я хіба про себе щось кажу? Це я шолі хвалився, що проходив «топові курси» англійської мови з американцями і потім зробив 2 помилки в назві рівня?

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

У тебе (імхо) 2 помилки. Одна описка (хоча досить епічна враховуючи тему понтування), а друга в тому, що full це скоріш «наповнений» (empty/full). Хоча я запросто можу помилятись, бо я ні разу не лінгвіст і не грамотєй — буду радий побачити ссилку на якийсь опис рівнів, де є словосполучення «full beginner».

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

На курсах такое наши преподы говорят, типа был у нас фулл бегине

Якщо твої преподи дійсно говорять full beginner, то я на 99.9% впевнений, що твої курси тебе найобують.

edit: i.imgur.com/zoPIVDD.jpg
www.youtube.com/...​LAY&feature=youtu.be&t=41
edit2: пофіксив ссилку на мем
edit3: цього разу дійсно пофіксив ссилку на мем

Ну я большую часть сам учил, всех мерфи прошел, Анки 5к слов уже, и тп.

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

Тествовый IELTS сдавал на 8.5 еще как только начал свой C2 проходить.

Еще один якобы свер обьективных и независимый тест сдал на 96 или 94 из 100 а в нем 80 это уже C1.

Ну якщо це правда, то респект. Просто ти тут сам на форумі пару раз понтанувся своїм англійським і умудрився помилитись. Тобто у нас з малої вибірки складається враження що ти тільки на словах Лев Толстой.

Я спеціально десяток easy глянув і вони всі супер прості

Недавно в Линкедин на меня вышли рекрутёры Амазона. Сениорская позиция в Торонто. Я уже раньше слал лесом несколько раз рекрутёров из Фейсбука, но эта прямо была очень настойчивой во время звонка. У меня, типа, 9 лет опыта и я делал точно такое приложение как им надо. Говорит «давай, типа, ты сможешь, задачки будут easy, я в тебя верю, недельку подготовитшься и всё реально». Я, дурак, поверил, перешёл по ссылке с её письма на этот литкод, попробовал самую easy задачку. Завис на полдня. Психанул, нашёл на Ютубе её разбор. Посмотрел несколько раз. Не понял нихрена. Тупо передрал с видоса решение (там 10 строк), подставил — работает. Смотрю на это решение и не могу понять, как эти 10 строк работают. Извините, но код стиля
A = B;
B = C;
C = A;
D = B;
return C;
Это абсолютно нечитабельная хрень, которую я если увижу у кого-то на код ревью в коммерческом проекте, просто молча удалю сертификат этого человека из репозитория и пускай менеджер делает с ним что хочет.
Написал в ответ, что пускай хайринг процесс останавливают, я манал такое задрачивать.
Это задачки очень не для каждого, а для чемпионов игры в напёрстки. Потому что подобное жонглирование переменными — это «кто увидел, где граната?».

а можна посилання відос, щоб кодстайл зацінити?

Изи.
youtu.be/O0By4Zq0OFc
Он там 2 способа упоминал. Я, честно говоря, сходу подумал о рекурсии, но там получается ещё больший говнокод. Это уникальный случай, когда чувак до атомов всё разжёвывает, но непонятно решительно ничего.

xoxoxo

static inline void __list_add(struct list_head *new,
struct list_head *prev,
struct list_head *next)
{
if (!__list_add_valid(new, prev, next))
return;

next->prev = new;
new->next = next;
new->prev = prev;
WRITE_ONCE(prev->next, new);
}

С тут ні до чого, просто так зручніше записувати. Якщо те саме написати на Python, JS, Go, C# чи чому завгодно іношому то ти раптом зрозумієш?

    pub fn reverse_list(mut head: Option<Box<ListNode>>) -> Option<Box<ListNode>> {
        let mut new_head = None;
        
        while let Some(mut current) = head {
            head = current.next;
            current.next = new_head;
            new_head = Some(current);
        }
        
        new_head
    }

www.youtube.com/watch?v=UHQ6vJ-r50U
Серйозно, кожен раз коли чую, що за растом майбутнє то виникає бажання розібратись що там. І кожен раз натикаюсь на ось таке. Ну ок, сходу можу догадатись, що Option це поінтер. А, блять, Box що таке? І нафіга Some()?

www.youtube.com/watch?v=UHQ6vJ-r50U

Зачот. Надо найти няшную тян, и запилить стрим как она учит раст, пойдет на ура.

Серйозно, кожен раз коли чую, що за растом майбутнє то виникає бажання розібратись що там.

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

Option — это не поинтер. Это enum, который может либо иметь какое-то значение — Some(X), либо не иметь значения — None. Это заменяет концепцию Nullable types в других языках программирования и конецпцию null.

doc.rust-lang.org/std/option
doc.rust-lang.org/...​d/option/enum.Option.html

Box

Это один из немногих способов хранить значение в куче. Реализация Linked List обычно требует держать значения в куче. Если хочешь что-то держать в куче, надо явно указать, что это что-то лежит в Box.

Я просто до того, що в расті порог входу якось ... неоправдано високий. Тобто після C++ інші мови сильно схожі і їх можна читати майже сходу: Go/Python/C++/Java/C#/Pascal/PHP/Lua/JavaScript/... — все ясно, просто у кожного свої syntax quirks, але загалом, якщо треба щось дописати або виправити, то говно-вопрос — можна чуть лі не сходу.

А тут я дивлюсь на твій код і просто розумію, що навіть якби треба було б щось пофіксити, то я б на довго повис — Some(X) я б не додумався ніколи юзати. Box теж.

Причому ладно там всяка єбала з функціональними мовами ... так тут же якоби С+±подібна мова.

Язык разрабатывался не для того, чтоб на нем можно было писать без подготовки. Цели были другие — сделать язык, который будет иметь характеристики производительности на уровне C/C++, и характеристики безопасности и стабильности на уровне чем у C#/Java (или выше). То, что он сложнее в изучении — это побочный эфект.

В коде, который я привел, ничего нетривиального нет. Это Rust 101. Если ты потратишь хотя бы час, чтоб понять концепцию enum в раст (С++/C#/Java не имеют подобной концепции поэтому ее нужно тупо сесть и выучить) и патерн матчинга, и 10 минут чтоб понять что такое Box, то этот код будет выглядеть для тебя тривиально.

Цели были другие — сделать язык, который будет иметь характеристики производительности на уровне C/C++, и характеристики безопасности и стабильности на уровне чем у C#/Java (или выше).

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

То, что он сложнее в изучении — это побочный эфект.

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

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

отсюда собственно ровно то что ты пишешь

Если ты потратишь хотя бы час, чтоб понять концепцию enum в раст (С++/C#/Java не имеют подобной концепции поэтому ее нужно тупо сесть и выучить) и патерн матчинга, и 10 минут чтоб понять что такое Box, то этот код будет выглядеть для тебя тривиально.

ну селяви ))

т же якоби С+±подібна мова.

нене, это убийца плюсов. не перепутай

Помню Вовчок как-то писал в другом топике

А хіба є потреба реалізовувати власноруч якусь структуру даних, коли це вже в наявності у бібліотеці мови? Просто прочитав, в яких випадках яку використовувати, і написав у два рядки.

Так на співбесіді якраз висняють чи ти copy-paste engineer чи ти зміг би при потребі реалізувати хоч щось нетривіальне. Як правило народ, який говорить що «все вже реалізовано» навіть не знає про наявність 90% речей. Мені, наприклад, недавно доводилось реалізовувати блум-фільтр на SQL. Абсолютно нічого важкого, але copy-paste engineer скоріш навіть не знає що така штука існує.

и ти зміг би при потребі реалізувати хоч щось нетривіальне.

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

Та навпаки ж. Це хороша задача не тому, що кожен день всі реверсять однозв’язні списки, а тому, що вона показує чи вмієш ти тримати в голові факти про стан змінних.

Наприклад переставити місцями дві змінні a i b.

a = b
b = ...
ах бля, тепер ми затерли значення і не зможемо його записати в b.
ок, ну то збережемо його десь:
tmp = a
a = b
b = tmp
тобто тут тобі треба було усвідомити, що після a=b у тебе в обидвох змінних значення b. І вже a ти ніде не відкопаєш.

Але це занадто просто. Якщо хочеш складнішу задачу, то поміняй значення a і b не використовуючи додаткової змінної — це можливо і дуже красиво :). І от там треба набагато більше деталей тримати в голові, але як тільки поймеш трюк, то задача «вбита». Тобто для співбесіди це не годиться.

А от розвернути однозв’язний список це тупо «воно» для співбесід — тут вже не 2 змінні (a і b) а чуток більше, плюс абсолютно не треба нічого запам’ятовувати і задрочувати, нормальний програміст, який може в голові відслікувати значення 3х-4х змінних запросто накодить. Без задрочування.

Ну тобто як задача рішається? Спочатку малюємо лінкед ліст.

node1 -> node2 -> node3 -> node4 -> ...
починаємо з v = node1.
що повинно бути після реверсу? ну, очевидно, v.next = null
ок, переходимо далі до v = node2, ах бля ... немає як перейти, бо ми затерли v.next ... значить перед тим як затерти, треба було кудись зберегти. Ітого код вже:
old_value_of_v_next = v.next;
v.next = null;
v = old_value_of_v_next;
Окай ... тепер у нас:
node1 -> null
node2 -> node3 -> node4 -> ...
v=node2
що далі треба зробити ... ну зробити v.next = node1, але бля ... у нас її немає. у нас тільки 2 змінні: v = old_value_of_v_next = node2, ну значить перед тим як ми пересунули v = old_value_of_v_next треба було зберегти значення v, ітого:
// реверс v=node1
old_value_of_v_next = v.next;
v.next = null;
old_value_of_v = v;
v = old_value_of_v_next;

// реверс v=node2
v.next = old_value_of_v;
секундочку, та ж сама проблема — затерли v.next, ок:
// реверс v=node1
old_value_of_v_next = v.next;
v.next = null;
old_value_of_v = v;
v = old_value_of_v_next;

// реверс v=node2
old_value_of_v_next = v.next;
v.next = old_value_of_v;
old_value_of_v = v;
v = old_value_of_v_next;
Оооо... Вже щось — видно, що ці коди можна об’єднати в один, якщо ініціалізувати old_value_of_v = null
Ітого:
old_value_of_v = null;

// реверс v=node1
old_value_of_v_next = v.next;
v.next = old_value_of_v;
old_value_of_v = v;
v = old_value_of_v_next;

// реверс v=node2
old_value_of_v_next = v.next;
v.next = old_value_of_v;
old_value_of_v = v;
v = old_value_of_v_next;
одне і те ж! ну і, очевидно, 3-ій ноуд буде так само ... і 4-ий ... а коли зупинитись-то? ну коли v = null. Ітого:
old_value_of_v = null;
v = head;
while (v != null) {
  old_value_of_v_next = v.next;
  v.next = old_value_of_v;
  old_value_of_v = v;
  v = old_value_of_v_next;
}
Що треба повернути? Нову голову?.. А, ну так це ж old_value_of_v:
old_value_of_v = null;
v = head;
while (v != null) {
  old_value_of_v_next = v.next;
  v.next = old_value_of_v;
  old_value_of_v = v;
  v = old_value_of_v_next;
}
return old_value_of_v;

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

P.S. писав в браузері, міг описатись ... ото цирку буде якщо обісрався :)

old_value_of_v и есть работа со временем.
Только не понял, с прямой или обратной стрелой времени?
Я их путаю.

Але це занадто просто. Якщо хочеш складнішу задачу, то поміняй значення a і b не використовуючи додаткової змінної — це можливо і дуже красиво :).

Ну если бы меня попросили на собеседовании поменять две переменные местами без использования третьей (я знаю как это делать, по крайней мере с помощью ХОR), я бы пожалуй в ответ поинтересовался, как часто они используют такую магию в реальном коде проектов. Как там дядя Витя писал сегодня в топике про плюсы: «код должен быть понятен тем, кто его будет поддерживать»

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

Осталось это все мотоциклисту редиректнуть и донести.

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

ну це задача з тих диких часів, коли народ любив бітові трюки і на співбесіді хотіли перевірити culture fit задаючи питання, яке було недавно на одному з 1.5 існуючих форумів по програмуванню.

я знаю как это делать, по крайней мере с помощью ХОR

Скажи красиво? Просто таке не забувається:

a ^= b ^= a ^= b;
можна схоже через мінус (-).

делюсь лайфхаком (питон) а,б=б,а

От блін. Зря я попросив без додаткової змінної, а не без додаткової пам’яті. Просто цей (хороший і ідіоматичний) код на пітоні дійсно без додаткової змінної, але (якщо правильно пам’ятаю що там в пітоні під капотом) з додатковою пам’яттю.

P.S. в asm’і взагалі xchg є і навряд існує щось оптимальніше за

xchg op1, op2

P.P.S. не певен що спрацює якщо обидва аргументи в пам’яті, але (регістр, пам’ять) наче міняє місцями.

Мало кому це потрібно.

Був у мене якось випадок, один умовний 23 річний сеньйор©™ так не любив SQL, що при переписуванні API повністю перейшов з оптимізованого sql на LINQ. Потім ті навантаження, які легко трималися на SQL, стали недосяжними, а клієнти продовжували користуватися старою версією.

Это хороший случай, чаще до

оптимізованого sql

И не доходят

Чи є якесь продовження цієї історії? Яка подальша доля того сеньйора, тієї системи й ваших клієнтів?

Обычный нет, дейта инженер — да

Без жартів — ні. Клієнт якраз і був data engineer’ом...

:( жаль, надеялся.
Для понимания плана это довольно важно, но могут быть ньюансы в именовании. Например в ms sql bitmap filter это реализация bloom.

Если нет необходимости прямо вот так внезапно реверсировать, то что мешает избыточно держать рядом второй лист, в который данные в реверсном порядке add()
Еще привиделось решение — при вызове реверс() создавать два пустых листа и тыкать в оба из исходного, но реверсивно во второй.
Или проблема с порядком ключей?
Лист в линию и применить обратный порядок.
Обычно я так обмысливаю, а потом кодю как придется лишь бы заработало.

Тут важна роль наблюдателя. При наблюдении неупорядоченное становится упорядоченным. Но реверс это смена наблюдателя.

Разные взгляды на одну и ту же вещь. Под разным углом 0 и 180

что мешает избыточно держать рядом второй лист, в который данные в реверсном порядке add()

У випадку LeetCode — нічого не заважає. Але там крім того, що рішення проходить всі тести ще є показники як час роботи і використання пам’яті за які теж можна боротися щоб потрапити у Х% найкращих рішень.

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

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

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

В обратной стреле времени. Начало с концом поменять, так ведь? И когда это возможно без проблем?
И да, тут последовательное применение простого правила обмен какого-то начала с каким-то концом. Красота!

Это чем-то похоже на перемещение (с применением результатов) по экранам при поиске в моем каталоге.

как по мне это похоже на кусок кода ядра линукса

Я сподіваюся ти тролиш. Бо не вигадати самому рішення такої задачі за 10-15 хвилин — це навіть для тих хто лише почав вчити програмування якось занадто :(

В КПІ на першому курсі давали такі задачки. Це правда не приклад чогось важкого чи занадто специфічного.

Ага. Ещё скажите, что все украинские программисты учились в вузах по специальности «программирование».

Изи.
youtu.be/O0By4Zq0OFc

Me: Засел на полдня на Median of Two Sorted Arrays, не решил. Считаю себя ничтожеством.

Мой оппонент на ДОУ: засел на полдня на Reverse Linked List, считает литкод ничтожеством.

Считать себя ничтожеством очень вредно.

О, ця задачка мені колись нерви на інтерв’ю попсувала. Там морока з індексами така, що виходять одні унікальні випадки. І коли нервуєшся на співбесіді (це інша проблема) то легко самого себе заплутати.

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

Доречі,

Median of Two Sorted Arrays

має красиве і просте рішення, якщо можна O(log(maxint-minint)*log(m+n)). Ну і чисто формально log(maxint-minint)=32=O(1), але це трохи нахально :).

Спочатку треба навчитись рахувати f(x) — скільки елементів менші за x в масиві. Це тривіально:

int f(int x, const vector<int>& arr) {
  return lower_bound(arr.begin(), arr.end(), x) - arr.begin();
}
Далі, очевидно, як порахувати g(x) — скільки елементів менші за x в обох масивах: f(x, vec1) + f(x, vec2).
Далі двійковий пошук від minint до maxint, і знаходиш такі R=L+1, що менше ніж L менше половини, а менше за R більше половини.
int L = INT_MIN, R = INT_MAX;
int seek = (vec1.size() + vec2.size())/2;
if (g(R)) < seek) { значить дуже багато значить INT_MAX в масиві -- це і є медіаною }
// далі підтримуєш інваріант що g(L) < seek, g(R) >= seek.
while (R-L > 1) {
  int M = (L+R) / 2;  // тут треба акуратно щоб не налажати з переповненням, або нахально перейти в int64
  if (g(M) < seek) L = M; else R = M;
}
return L; 

В моєму варіанті вимога була робити швидше за O(n).

Якщо цікаво, то за квадратний логарифм так: pastebin.com/yqMJYW3i

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

Runtime: 24 ms, faster than 97.66% of C++ online submissions for Median of Two Sorted Arrays.
Memory Usage: 89 MB, less than 95.74% of C++ online submissions for Median of Two Sorted Arrays.

How To Reverse A Singly Linked List

та ты просто пятничный тролляка !!! )))

ЗЫ: видео посмотрю пятница же ж дело к вечеру

уровень украинских сеньйоров суров и беспощаден к литкоду)

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

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

То ощущение, когда даёшь колесо людям из каменного века.

kotlinlang.org/...​.collections/reverse.html

1) В коммерческом проекте подобный код будет классическим велосипедом. Все эти функции давно написаны — бери и используй.
2) Стиль кода по ссылке совсем неплох. Всё разбито на коротенькие простые методы, поведение которых легко отследить. Бизнес-логика написанная в таком стиле — няшка.

Я сфалломорфировал от того, что синьор андроид не то что не в состоянии придумать решение такой примитивной задачи, но и не в состоянии понять после просмотра видео несколько раз!

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

призёр национального чемпионата по плаванию

Це досягнення якого у тебе нема. В твоєму випадку правильно говорити «учасник змагань з плавання який одразу з тумбочки пішов на дно». І тут вже не суттєво знає він дефури чи ні.

В твоєму випадку правильно говорити «учасник змагань з плавання який одразу з тумбочки пішов на дно».

Ну это как посмотреть. Я интересующий меня оффер в «отсталой» Украине получил за 4 дня. Местный герой за хрен знает сколько месяцев оббегал все ФААНГи и довольствуется даже не ФААНГовским оффером. Так что, кто тут лучше плавать умеет — вопрос очень спорный. Диффуры чего-то не очень помогают плавать в серной кислоте, да? ;)

Я интересующий меня оффер в «отсталой» Украине получил за 4 дня

Враховуючи, що ти список перевернути не можеш не дуже добре говорить про ринок України.

Местный герой за хрен знает сколько месяцев оббегал все ФААНГи и довольствуется даже не ФААНГовским оффером

Що означає вищі вимоги до кандидатів, а відповідно роботу з розуміншими людьми.

Так что, кто тут лучше плавать умеет — вопрос очень спорный

Той хто хоч-якось допливає однозначно вміє краще за того хто просто на дно йде зі старту.

що ти список перевернути не можеш

Есть ещё много вещей, которые я сделать не могу, которые не нужны в моей работе :)

відповідно роботу з розуміншими людьми

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

Той хто хоч-якось допливає однозначно вміє краще

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

Есть ещё много вещей, которые я сделать не могу, которые не нужны в моей работе

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

Критерии интеллекта крайне размыты.

В плані роботи все можна звести до професійних досягнень.

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

Ні, це значить, що я не вмію в авіасімулятори та мотоцикли.

Я доплыл куда мне было нужно в десятки раз быстрее.

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

Герой, куда изначально целился, не доплыл.

Але він в процесі.

Вміти знайти алгоритм, або у ширшому випадку знайти рішення проблеми — це важливо в роботі програміста на мою думку.

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

В плані роботи все можна звести до професійних досягнень.

Да. И сравнивать можно насколько каждый получил то, что хотел. Я — получил

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

І якщо такої бібліоте поки нема, або вона якось конфліктує з іншими фреймворками/лібами то ти будеш сидіти і чекати поки її хтось напише замість зробити це самому?

И сравнивать можно насколько каждый получил то, что хотел

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

І якщо такої бібліоте поки нема, або вона якось конфліктує з іншими фреймворками/лібами то ти будеш сидіти і чекати поки її хтось напише

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

замість зробити це самому?

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

Або ще цілу купу показників:

Можно ещё цвет потолка в офисе сюда записать.
In the end of the day the only thing that matters is how both are satisfied with their own achievements in professional area.

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

Это всё у меня обычно есть. И сейчас есть.

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

Это имеет значение только если я буду получать с этого процент.

відомість/впливовість для певної аудиторії

Таких комплексов у меня нет.

это будет выявлено на этапе первичного изучения требований

Що саме «це» буде виявлено? Щоб щось зарані невідоме виявити треба робото певну зробити яка за обсягом дорівнює реалізації проекту.

будет сообщено кастомеру как техническое ограничение платформы

Хоча насправді це проблема відсутності спеціалістів необхідного рівня.

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

Рішення існують практично для всього, просто не для всіх мов і комбінацій фреймворків їх хтось вже запрограмував. Тому програміст коли це потрібно бере і... програмує.

Можно ещё цвет потолка в офисе сюда записать.

Якщо ти вплинув на це і для тебе це важливо то можна, чому ні?

In the end of the day the only thing that matters is how both are satisfied with their own achievements in professional area.

Але мова ж йшла про професійні досягнення які я пояснив тобі як можна помірати і порівняти.

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

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

Що саме «це» буде виявлено? Щоб щось зарані невідоме виявити треба робото певну зробити яка за обсягом дорівнює реалізації проекту.

Wat?
Пример из жизни. Новый кастомер, которому нужно мобильное приложение. Письмо от директора с общим описанием того, что нужно кастомеру. 5 минут на прочтение и обдумывание. Рассматриваем каждый пункт. Находим «нужно, чтобы приложение могло взаимодействовать с микропрограммной на симке телефона». What a fuck? Какая-то дичь. Но кастомер хочет. Ок, лезем в Гугл. Пользы от него мало, через 10 минут гугления получаем вывод о том, что эта дичь работать не будет. На следующий день созвон с этим потенциальным кастомером. Перед созвоном ещё раз полчаса гуглим и видим, что задача точно не в полномочиях application layer в Android.
О чём и сообщаем клиенту на созвоне.
Done, рассматриваем следующего клиента.

Хоча насправді це проблема відсутності спеціалістів необхідного рівня.

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

Якщо ти вплинув на це і для тебе це важливо то можна, чому ні?

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

Яке це має відношення до оцінювання професійних досягнень?

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

задача точно не в полномочиях application layer в Android

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

если речь идёт о массовом приложении для Гугл плей, этот подход не катит

Підхід «мені ніхто не написав таку бібліотеку» не катить.

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

І втретє повтоврю — мова йшла про те як порівняти і поміряти професійні досягнення.

я добился тех профессиональных целей, которые себе ставил

Ти ж пишеш, що не можеш розв’язати елементарну проблему якщо нема біблітеки з її рішенням. Тут здається епітети чи «професійні» чи «досягнення» зайві. А то і обидва одразу.

Підхід «мені ніхто не написав таку бібліотеку» не катить.

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

Ти ж пишеш, що не можеш розв’язати елементарну проблему якщо нема біблітеки з її рішенням.

Потому что проблема не относится к моей профессиональной сфере. Я таким не занимаюсь.

Если операционная система тебе не позволяет сделать определённое действие

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

Потому что проблема не относится к моей профессиональной сфере.

Звісно, програмувати — не професійна сфера програміста.

програмувати

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

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

Все одно, що звинувачувати лікаря, що він не знає як і не розуміє для чого мити руки перед процедурами.

О! Ще один hashCode() через поліноміальний хеш. Я тут якраз пару місяців назад залуплявся з іншим сініор-помідор ніібацца архітектом, який зривав з нього покрови.

О! Ще один hashCode() через поліноміальний хеш. Я тут якраз пару місяців назад залуплявся з іншим сініор-помідор ніібацца архітектом, який зривав з нього покрови.

Хеш-коды и прочая крипта — это не то место, где синьор помидорам уместно меряться письками.

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

Це було в контексті того, що «вища освіта не потрібна». І я там розпинався доказував, щоб освіти чувак навіть не знає чого він не знає. Ну тобто unknown unknowns. І я там приводив PHP, бо мова п****ц хуйова і стилі написання функцій ваще неконсистентні: strpos vs str_rot13. Ну тобто якого *** тут відбувається? Виясняється, що в ранніх версіях php алгоритмом хешування був ... strlen. Я, блять, не жартую:
news-web.php.net/php.internals/70691
якщо потруть, то ось:

From:	Rasmus Lerdorf

> The core functions which follow neither rule include C-style
> abbreviations like "strptime" which couldn't be automatically swapped to
> either format, and complete anomalies like "nl2br". If you named those
> functions as part of a consistent style, you would probably also follow
> stronger naming conventions than Rasmus did when he named
> "htmlspecialchars".

Well, there were other factors in play there. htmlspecialchars was a
very early function. Back when PHP had less than 100 functions and the
function hashing mechanism was strlen(). In order to get a nice hash
distribution of function names across the various function name lengths
names were picked specifically to make them fit into a specific length
bucket. This was circa late 1994 when PHP was a tool just for my own
personal use and I wasn't too worried about not being able to remember
the few function names.

-Rasmus

На фразі

hashing mechanism was strlen()

весь народ з половиною семестру CS освіти б’є себе по чолу і хором стогне «єбааааать».

І я (приблизно) такий в тому срачі:

невже важко було хоч щось написати краще за strlen()? звісно ні, 4 рядки коду, йопт:
size_t hash(const string& s) {
  size_t res = 0;
  for (char ch : s)
    res = res*57 + ch;
  return res;
}

і тут наш сініор архітект давай розказувати який це ужасний хеш, лол. по ходу напутав крипто-хеші зі звичайними, зривав покрови з того, що тут буде переповнення, що 32 біти це дуже мало для хеша, і ще в кінці запропонував замінити 57 на 256, лол. Короче сініор потім випилявся з форуму.

Тобто, хеш для пари строк ви б не порахували? І задачку на кшалт як тут тут люди пишуть ізі — не вирішили б?) UPD: OK, у жабі є магічний HashCodeBuilder, але так можна і невміння лист розвернути виправдати тим, що є магічний метод для такого.

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

Понял на что ты отвечал.

Вместо этого стоит использовать что-то типа HashCodeBuilder

Ну дивись. Буквально тиждень назад була задача. Є алгоритм класифікації, він бере на вхід зображення і на виході у нього масив даблів: double[] prob, де prob[i] — імовірність того, що об’єкт належить i-ому класу. Якщо що, то всі імовірності, очевидно, не від’ємні і їх сума рівна 1. Мені захотілось порахувати margin — різницю імовірностей між класом, де імовірність максимальна і друга по величині. Ну тобто якщо найімовірнішим класом є клас 743 з імовірністю 0.87, а другим по величині йде клас 514 з імовірністю 0.11, то «зазором» буде 0.76. Навіщо це потрібно? Ну бо це дає мені змогу оцінити наскільки сильно мій класифікатор впевнений в своєму передбаченні, очевидно, що якщо margin=0.97, то класифікатор дуже сильно впевнений в своєму передбаченні, а от якщо зазор малий, то значить класифікатор сильно вагається між (як мінімум) двома класами.

Я, як представник покоління динозаврів, написав кід за пару хвилин. Але мені цікаво як до цієї задачі підходять панове з більш просвітленого періоду. Тобто от цікаво мислітєльний процес. Ти зразу відкриваєш референс по своїй бібліотеці? Чи гуглиш на стек оверфлоу? Чи гуглиш java library to find two largest numbers in array?

мені цікаво як до цієї задачі підходять панове з більш просвітленого періоду

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

Квадратики пихай в картинку. Большие и маленькие. Чем больше совпадений тем объекты роднее друг другу. А еще лучше треугольники.
И ты не поверишь что еще тебе понадобится...
Вот нейронку когда обучаем мы ей делаем внутреннюю память вещей.
Но раз так помнить можно и квадратики.
А раз так, то можно обучать на конкретные составляющий.
Один набор — одно запоминание. 10 — десять разных вариантов. 200 — тоже самое.
Не щадя объема винчестера. Чем больше помнит винт тем больше шансов совпадения. И никаких проблем с переобучением — кроме размера винта и их количества.

Тобто от цікаво мислітєльний процес. Ти зразу відкриваєш референс по своїй бібліотеці? Чи гуглиш на стек оверфлоу? Чи гуглиш java library to find two largest numbers in array?

Типа того.

Є алгоритм класифікації, він бере на вхід зображення і на виході у нього масив даблів: double[] prob, де prob[i] — імовірність того, що об’єкт належить i-ому класу.

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

java library to find two largest numbers in array?

И это вся задача? Да отсортировать массив встроенными функциями и взять 2 первых элемента отсортированного массива, убедившись, что его длина как минимум 2 и ни одно из этих значений не null. Задачка на 20 секунд

на десктопной Java:

var array = Object[]; Arrays.asStream(array).filter(Objects::nonNull).sorted().limit(2) .collect(Collectors.toList());

Это даже не задачка, а просто 1 строка тривиального кода. Если нормально подходить к этому.

Ух бля. Нафіга так складно-то?

double margin(double[] arr) {
  Arrays.sort(arr);
  return arr[arr.length-1] - arr[arr.length-2];
}
тільки тепер, в якості вправи, треба зробити те ж саме без сортіровок і без того, щоб змінювати arr.

В этом решении нет проверки на null перед сортировкой и на длину массива. Так что то, что написано у меня выше, полагаю, самое краткое полное решение по кол-ву написанного кода. По крайней мере на Java.

Якщо вже придиратись, то на NaN ти теж не провірив. І якщо я правильно розумію, то взяв 2 найменших, а не 2 найбільших елементи.

Немає null — там же double, а не Double.
Плюс специфіка така, що масив гарантовано має >= 2 елементи — у нас же класифікатор, який каже до якого класу відноситься об’єкт: людина — 10%, собака — 70%, кіт — 15%, ... нафіга комусь класифікатор, який має тільки 1 клас? Плюс специфіка така, що всі елементи від 0 до 1, і сума їх (дуже близька до) 1.

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

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

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

Але в той же час важливо писати підтримуваний код. А ще щоб його менше було. Тому наприклад якщо можна лямбда функціями в один рядок — треба робити так. В даному кейсі.

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

мессенджера видел как из базы доставали все обычным SELECT"ом (SQL же для Androida не нужен©),

Вот только для мессенджеров и нужен.

А то что у юзеров фризило

SQL прямо с UI потока рубили?

например добавление сообщений в UI по одному и ререндеринг (reactive же) и т.д.)

Это уже неумение работать с UI и обновлять только изменённые данные. К алгоритмам это отношения не имеет.

все было медленно

Может, оно не на том потоке вызывалось?

и по одному попадали в правильный RecyclerViewAdapter

Налицо неумение пользоваться тем же Rx.
Вместо пулять их по одному, ничто не мешало собрать их в коллекцию и засеттить в адаптер сразу список, из которого бы тот через diff utils отфильтровал то, чего не было, или что было изменено.
Ну и Select * from x where y=z умею даже я, без профильного образования и видевший тот SQL в паре проектов за 8 лет.

о том как сделать «чтоб работало на 20-100 элементах», но и о перформансе и алгоритмах в принципе.

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

использовать и аггрегирующие функции, и всякие IF CASE WHEN, и замену substr() для старых версий SQLite которые использовались в четвертом андроиде.

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

а не время машины на выполнение алгоритма, которое не стоит ничего

Оосбенно если это время пользовательского терминала, а не серверов в AWS. )

которое не стоит ничего

любой ваш говнокод стоит батареи

Полчаса моей работы стоит как новая батарея

При том, что это дешёвый ресурс и во многих случаях гораздо важнее, чтобы фича была сдана быстрее.
Пример — делал приложение для водителей грузовиков. Оно, среди прочего, отслеживало местоположение транспортного средства в реальном времени. В требованиях было обеспечить максимально возможную точность любой ценой. Ибо телефон всё равно включен в прикуриватель в машине и батарея не расходуется.
Большинство задач из реального мира такие — скучные, неинтересные. И делать их нужно быстро и без багов — это единственное мерило их успешности.

у нас разные понятия выражения «без багов», очевидно

разные понятия выражения «без багов»

«Без багов» означает «в соответствии с первоначальными требованиями». Могут быть другие интерпретации?

Так тобі не треба нічого знати про класи — я просто розказував де це всплило, щоб не виглядало як абстрактна задача.

И это вся задача?

У тебе реально є масив даблів (не нули, не NaN’и, багато елементів), треба знайти різницю між найбільшим і наступним по величині елементом.

отсортировать массив встроенными функциями и взять 2 первых элемента
Задачка на 20 секунд

всьо ок, але давай наступний раз покажи код.

Тепер ускладення: ти не можеш змінювати масив, і, c’mon, без сортіровки — це реально виконується в самій глибині вкладених циклів — я наніч залишаю перебор алгоритмів, щоб знайти найкращий margin.

Тепер ускладення: ти не можеш змінювати масив, і, c’mon, без сортіровки — це реально виконується в самій глибині вкладених циклів — я наніч залишаю перебор алгоритмів, щоб знайти найкращий margin.

Без какой-то магии с математикой, без обработки NaN, без модификации массива, O(N).

play.rust-lang.org/...​b73dedf5ccbdf959bf81b5f82

fn top_diff(data: &[f32]) -> f32 {
    assert!(data.len() >= 2);

    let mut top_most = data[0];
    let mut second_top_most = data[1];

    if top_most < second_top_most {
        mem::swap(&mut top_most, &mut second_top_most);
    }

    for &current in data.iter().skip(2) {
        if current > second_top_most {
            second_top_most = current;

            if top_most < second_top_most {
                mem::swap(&mut top_most, &mut second_top_most);
            }
        }
    }

    top_most - second_top_most
}

Воно, тільки якщо робити код рев’ю, то:

0. topmost це одне слово
1. (імхо) тут реально випадок коли краще змінні назвати однобуквенно і додати коментар.
2. можна ініціалізацію спростити зробивши top_most=-1, second_top_most=-1, тоді skip непотрібен буде
3. &current означає що ти current — mutable reference на елемент data? Чи у вас за замовчуванням immutable reference? В любому випадку ... навіщо тобі референс? на 64х бітних це ж більше за сам елемент + зайвий рівень indirection

У мене десь так:

// in case of C++ change to: double margin(const vector<double>& arr)
double margin(double[] arr) {
    double a = -1, b = -1;  // a -- greatest in arr, b -- second greatest
    for (double x : arr) {
        if (x > a) {
            b = a;
            a = x;
        } else if (x > b)
            b = x;
    }
    return a-b;
}
а так дуже ок — рівно те що треба.
1. (імхо) тут реально випадок коли краще змінні назвати однобуквенно і додати коментар.

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

2. можна ініціалізацію спростити зробивши top_most=-1, second_top_most=-1, тоді skip непотрібен буде

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

3. &current означає що ти current — mutable reference на елемент data? Чи у вас за замовчуванням immutable reference? В любому випадку ... навіщо тобі референс? на 64х бітних це ж більше за сам елемент + зайвий рівень indirection

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

Можно или так

    for current_ptr in data.iter().skip(2) {
        let current = *current_ptr;

или так

for &current in data.iter().skip(2) {
на 64х бітних це ж більше за сам елемент + зайвий рівень indirection

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

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

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

I know that feel, bro...

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

tmp = a;
a = b;
b = tmp;

Логическая подстановка что ли? В эрланге пример видел. Красиво, да.

Логическая подстановка что ли?

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

В книге эрланг во имя добра или в этом роде такая перестановка, это не XOR
Впустим два луча света X и Y по оптоволокнным кабелям А и Б, и тот, который прилетит первым на оконечную станцию будет Y а второй X. Осталось изменить характеристики оптоволокна одного из кабелей. PROFIT!

И сравнение оптическое так же делать. Если оптическая сортировка понадобится.

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

Не понял, тебе надо было интернировать стек?
1 -> 2 -> 3 -> 4 -> 5
Превратить в:
5 -> 4 -> 3 -> 2 -> 1 ?
Если да, то я реально такое решал на первом курсе ФИОТа, и причем вполне успешно, стеки, очереди и двухсвязные списки я понял хорошо как-раз, вроде даже для стека оптимизировал какой-то алгоритм из ученика, сделав его более лаконичном.
Но это и все мои достижения, еще задачи с графами решал на уровне изи тогда.
А деревья понимал в теории, и но на практике не писал код по ним. Возможно изи по деревьям тоже бы решил тогда.
За 5+ лет забыл это все под «0» (Как я уже и писал много раз, вышка вообще не нужна, так как за 5 лет ты любую тему забываешь полностью под 0, и надо все учить непосредственно перед использованием, иначе это будет тупо двойная работа).
Сейчас сидя в санузле(И на свидании с тян причем, лол, в лучших традицях литкодеров).
Продумал алгорит как решить эту задачку чисто мысленно, без всякого гугла и подсказок минут за 20.
Потом вышел из санузла, достал достал тетрадь, и записал, и продебажил его мысленно минут за 10(было 5 элементов), с 2-мя ошибками, которые я сразу пофиксил как мой мысленный поток выполнения до них дошел.
Если что, я себя считаю полным чайником в этих задачках, и последний раз решал их на первом курсе, но ради оффера в Амазон в Торонно я бы их задрачивал не то что всю неделю, а и все лето если надо.
P.S. Коллеги а вы сталкивались с таким, что наши лидеры рынка на словные 5к ебут лида этим литкодом и систем дизайном? Потому что я такое вижу уже не первый раз, и в разных компаниях, и ЗП там не факт что даже 5к.

Сейчас сидя в санузле [...] минут за 20.

Це дуже довго і для срання і для цієї задачі — ти ж так геморой заробиш.

Не понял, тебе надо было интернировать стек?
1 -> 2 -> 3 -> 4 -> 5
Превратить в:
5 -> 4 -> 3 -> 2 -> 1 ?

Оно. Только не стек, я связанный список.

За 5+ лет забыл это все под «0»

Та причём тут? Я за 14 лет, что прошли с момента окончания вуза, тоже забыл как настраивать электронные регуляторы систем управления. Но хотя бы помню что там вообще к чему и за недельку, если надо, сделаю расчёт в простом случае для реальной системы регулирования. Я помню, с чего начать и куда смотреть, хотя уже не помню что именно и как делать. Как и у тебя.
А в случае с алгоритмами — я не имея образования в этой сфере даже не понимаю, с какой стороны к решению подойти. И пример решения без понимания теории выглядит как египетский манускрипт. Работает, но как — хз, магия.
Так что тут да, нужно либо профильное программисткое образование, либо exceptional mad skills в «кто увидел, где граната?».

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

То что я 5 лет назад писал мне никак не помогло, я сегодня весь алгоритм заново изобретал, единственное что я за 5 лет запомнил, что все односвязные списки выглядят так:
class Node {
int Value
Node next;
Node previous; // если двухсвязный список.
}
И все, все остальное я заново изобретал с кучей ошибок.
Может у меня память плохая, но мое мнение, никакой универ тут не поможет, все равно забудешь.

Так что тут да, нужно либо профильное программисткое образование

Ну ты после топового универа Украины по CS хорошо если половину изи решиш вроде такой, там толко ничему не учат как я писал.

exceptional mad skills в «кто увидел, где граната?».

Мне кажеться просто мотивация и время нужны, там оно не сложнее чем Java, надо просто постепенно учить.

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

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

там оно не сложнее чем Java

У меня на изучение Java без базового программистского образования ушло полтора года. Верю, что за такой срок я смог бы научиться решать почти все easy и значительную часть medium на литкоде. Но ни о каких неделях или паре месяцев в моём случае речь не идёт. И скажем так, мой стиль жизни не изменится так существенно, как изменился от изучения Java в своё время.

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

Це не в пам’яті проблема (99%), це в тому, що ти, насправді, недовчився. Ну тобто скоріш за все ти запам’ятав набір фактів, здав іспит, і ... все.

Це все чимось схоже на таблицю множення — якщо ти навіть забувся скільки буде 7*9, то ти зможеш (сподіваюсь) вивести скільки це буде. Ти не боїшся забутись таблицю множення, бо ти чудово розумієш що при потребі виведеш недостаючі значення. Ну да, це тобі займе чуток більше часу ніж просто достати готове значення з пам’яті, але у тебе ніколи не буде

Я забувся 7*9 і ці знання тепер втрачені. Я, звісно, можу нагуглити рішення цієї конкретної проблеми (значення 7*9), але вдруг я забувся інші значення з таблиці множення (наприклад 9*7)? Єдиний спосіб відновити всю цю тему в моїй голові, це піти заново вчити всю алгебру за 3ій клас. Треба брати саббатікал на пів року — не менше.

Думаю, это уровень IQ и

exceptional mad skills в «кто увидел, где граната?».

Я в 2016-м, когда на работе в тот момент времени была маленькая загрузка, честно пытался почитать теорию про все эти деревья, сортировки. Это были какие-то бесплатные курсы Prometheus, материал был вроде на украинском языке. Я многое запомнил в общих чертах, что оно в принципе есть. Но без какого-то серьёзного понимания и практического освоения.
На тот момент у меня был общий опыт работы в индустрии — 10 лет, 7 лет программирования на суммарно 2-х языках.

До речі через стек реально прикольно.
Стек і є зв’язним списком. Вершина стеку — найвищий елемент, а кожен елемент зберігає вказівник next на того, хто після нього йде:

class Stack {
  Node top;
  bool empty() { return top == null; }
  void push(Node n) { n.next = top; top = n; }
  Node pop() { Node old_top = top; top = top.next; return old_top; }
}

Stack reverse(Stack st) {
  Stack resStack = new Stack();
  while (!st.empty())
    resStack.push(st.pop());
  return resStack;
}

Спасибо, вот это реально более читабельное решение, а не «кто увидел, где граната?»
Но для этого надо знать, как работает стек. Что кстати, мне не мешало бы подтянуть, ибо фрагменты в Андроиде хранятся в стеке и pop() там дёргается часто в коде, никогда не задумывался, что именно он делает.
Я ж говорю, без понимания основ там делать нечего. Это всё равно что мутузить грушу не поставив технику удара.

«кто увидел, где граната?»

Просто трохи напрягає, що реально дико простий код описуєш так, наче це якась чорна магія і якась єбала. Це десь так, наче ми тобі на твої покатушки під 200 сказали що це якесь занадто велике число і ми тут матан не вчили щоб такими числами оперувати.

А в случае с алгоритмами — я не имея образования в этой сфере даже не понимаю, с какой стороны к решению подойти. И пример решения без понимания теории выглядит как египетский манускрипт. Работает, но как — хз, магия.
Так что тут да, нужно либо профильное программисткое образование, либо exceptional mad skills в «кто увидел, где граната?».

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

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

Это да. Но я без малого 10 лет успешно проработал в профессии и успешно сделал (иногда с нуля) не один проект, не обладая этими знаниями. И решил вообще заглянуть что там, когда меня попросили рекрутёры ФААНГов, пообещав нехилые условия.
Я пока не готов в общем, инвестировать минимум полтора года на подготовку и практику решения подобных задачек. Я хочу вначале попробовать поработать в продуктовых компаниях поменьше, может мне оно вообще не надо.

P.S. Коллеги а вы сталкивались с таким, что наши лидеры рынка на словные 5к ебут лида этим литкодом и систем дизайном? Потому что я такое вижу уже не первый раз, и в разных компаниях, и ЗП там не факт что даже 5к.

Недавно сталкивался, правда, в облегчённой форме, не как в Фаанге. Правда, не в лидере рынка. В американский молодой продукт, бывший стартап, через бодишопную прокладку в Киеве. На банальные 5k. Оттого и бомбит.
Естественно, я собес провалил. Пошёл на собес чисто посмотреть, как выглядит на практике такое цирковое представление.

В американский молодой продукт, бывший стартап, через бодишопную прокладку в Киеве. На банальные 5k. Оттого и бомбит.

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

Как то так.

Контора в США — обычная торговля с доставками, завёрнутая в обёртку gig economy, digital-трансформации и стартап-движения. Сомневаюсь, что у них нагрузка только за счёт США — миллионы финансовых транзакций в секунду.
А торговлю с расчётом стоимости доставки по данным Google Maps — лично я видел ещё в начале 2010-х на украинском предприятии. Реализовано было на одной из типовых конфигураций 1С:Предприятие 8. Ну и за использование Гугл-карт контора не платила. ) И не было модного мобильного приложения.

А сейчас, в 2020-м, нет — не тот уровень. Без литкод-собсесдования никак нельзя допускать к работе с таким инновационным продуктом. ))

Хороша аналогія. Ти багато знаєш боксерів, які НЕ працюють на груші? Просто тут половина форуму це боксери, які до груші не підходять програмісти, які уникають літкоду.

А якби було не 5к, а 6к, то не так обідно було б? А 7к? А 8к? А 10к?

Просто навіть 6к проти 5к це додаткових 12к в рік, що означає що, в принципі, є сенс взяти 2 місяці саббатікал щоб підтягнути таке і через рік воно вже окупиться, а далі тільки в плюсах.

Вот когда такие клиенты будут реально давать на ремоуте в юрисдикции Украины 7k-8k ФОП в месяц и больше (при сохранении текущего курса доллар/евро/золото, потребительских цен в Украине, текущих предложений на рынке посредников), тогда будет повод что-то менять.

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

Наша дає...

edit: ну тобто я знаю в Україні як мінімум 4 компанії які давали під 10к, але умовою було проходження співбесіди з задачами типу літкоду. Луксері (теперішній снепчат), Рінг десь на початку київського офісу, наша теперішня контора (MemSQL/SingleStore). І ще якісь чуваки, чиє ім’я я тупо забув.

ну тобто я знаю в Україні як мінімум 4 компанії які давали під 10к,

Я не страдаю комплексом непризнанного гения, которого должны брать везде. Либо патологической жадностью/завистью, чтобы построить свой дворец на берегу Чёрного моря или купить всем родственникам по квартире. )

Я специально написал — «такие клиенты» — т.е. обычные CRUD-формошлёпы без налёта инновационности и технологичности. Я допускаю, что кто-то может писать видеообработку, движки баз данных под high load, всякие machine learning с PhD по математике. Понятно, что там могут в теории платить по меркам Украины очень прилично. Но очень часто, на практике, здесь и сейчас, там работают за идею или на какую-то мнимую перспективу. Но не мне судить.

т.е. обычные CRUD-формошлёпы без налёта инновационности и технологичности.

Тоді да, реально дивно, що з такими потребами вони аж так заганяються. Це як би на позицію охоронця в супермаркеті (edit: з відповідною зарплатою) шукали бувших спецназовців...

I feel your pain, bro. Я понимаю, что оно решается жонглированием указателей. Но, б**я, как это закодить, еще та эпопея.

не понимаю зачем такого специалиста нанимать-перевозить на такие деньги

Так такого и перевозят на 90-120K
Никто ж не даёт 500, 350 и думаю даже 200.

90k в долине это жестко, а на 120k хоть сейчас оффер подпишу.

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

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

На эту цифру и должность как раз и надеюсь.

Два свіжих емейла від рекрутерів

Про 500к, кешом
========
I oversee SRE recruiting at Bridgewater — we’re the top performing hedge fund in the world and growing our remote presence. I’m recruiting for multiple SRE roles that I’d love to discuss with you after reading about your experiences at [...]. I included a few factors that are important to most people at this stage, and thought I’d address them upfront:

Compensation:
As a private employee-owned company, our salaries are 100% cash-based and compare to the base+bonus+RSU packages paid by public tech companies. For these roles, we expect a compensation range of $375 — $575K. Based on requirement for the job, these roles most likely compare to L6 SRE roles at leading tech companies.

Bridgewater’s compensation principles are to pay north of fair and to pay for a person’s experience, capabilities, and credentials — never just based on a job title. We consider the external market for similar roles in addition to your expected impact (based on what we learn about you and your experiences throughout the interview process) before making a salary decision.

Technology:
These roles require you to think on a higher conceptual level of complexity around building technology than the traditional SRE role. You won’t be heads-down coding all day...you’ll be integrating multiple products, migrating infrastructure to a fully automated cloud environment with immense levels of security, and advising some of the leading tech firms in the world based on Bridgewater’s engineering principles.

People:
You’ll be working directly with the Head of our Platform SRE team who previously worked at Twitter and LinkedIn. Some of our most recent hires in this team have come from Google, Apple, and NASA JPL so you’ll work with high caliber colleagues as well.
========

Про 600к, але це уже не чистими, Total Comp
========
Principal SRE — Hedge Fund — $600K Total Comp

I’m working exclusively with a high profile Hedge Fund. We’re seeking the best in SRE talent to come in and redesign and modernize their entire infrastructure, bringing it into the 21st century. You will be hands on in the implementation of your design, leveraging cutting edge technology and leading their senior team.
========

Про 500к, кешом
Про 600к, але це уже не чистими, Total Comp

чек уже прислали?

чек уже прислали?

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

Відрубати кур’єру кисть і скинути тіло в аналог Дніпра. Кейс закопати в огороді на пенсію.

Спасибо, я и про грязные имел в виду что бы:

base+bonus+RSU packages

Было 500k до налогов.
Кстати, а какие налоги с акций в США? если я продам весь пакет как только мне его дадут через год, сколько процентов я заплачу? Допустим акций на 200к дали.
P.S. А стек там хоть какой-то есть? Хотья бы понятно какой язык/языки програмирования там?

А стек там хоть какой-то есть?

Глубина стека: от забора и до обеда

Кстати, а какие налоги с акций в США? если я продам весь пакет как только мне его дадут через год, сколько процентов я заплачу? Допустим акций на 200к дали.

Ліньки пояснювати. Давай ти будеш вирішувати проблеми по мірі їх поступання :-)

P.S. А стек там хоть какой-то есть? Хотья бы понятно какой язык/языки програмирования там?

SRE-девопсятина

какие налоги с акций в США?

Податки не з акцій, а з прибутку.

если я продам весь пакет как только мне его дадут через год, сколько процентов я заплачу?

Якщо продати в мінус то можна і нічого не заплатити.

Ух, за такие деньги, можно годик, другой и поноулафить (Чуствуеться, что после надо будет брать года два отпуска)..
А че там за требования? врятли они чисто литкод спрашуют.

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

Та, можна і на 3-4 місяці піти в развєдку, бабла чистого накосити, якщо шось :-) (3 місяці там — це як рік base компенсації у інших конторах)
Головне — вчасно зістрибнути, якщо відчується, що колеги на амфетамінах сидять і тебе підштовхують до того ж.

А че там за требования? врятли они чисто литкод спрашуют.

я думаю, що те саме, що й по SRE мене всюди ганяли
— leetcode
— system design
— упор на values/behavioral ( у Bridgewater засновник написав книжку Principles, напевне, краще її переглянути перед вступанням у секту :-) )
— system debugging
і можливо всяке різне дрібне, що я у своєму топіку про 24 онсайти згадував (code review, incident postmortem report, etc.)

якщо відчується, що колеги на амфетамінах сидять і тебе підштовхують до того ж.

Цікаво, а наскільки це стретч для калчерал фіт спитати: «Хлопці, а що з вашим попереднім SRE сталось?»

Цікаво, а наскільки це стретч для калчерал фіт спитати: «Хлопці, а що з вашим попереднім SRE сталось?»

1. воно може бути не в касу, компанії ростуть — треба більше людей
2. сумні історії вигорання можна знайти на teamblind.com про всякі різні компанії, та й у цьому топіку про зворотній бік того великого бабла уже писали — амфетаміни, подорваність, специфічний типаж людей, що у цьому працюють

1. Ок, але тоді 500к треба ділити надвоє і можливо навіть не один раз
2. Не ок, але я хз як так заробляти бабло ін е сустейнабл вей

1. Ок, але тоді 500к треба ділити надвоє і можливо навіть не один раз

не розумію чому

2. Не ок, але я хз як так заробляти бабло ін е сустейнабл вей

ага, хіба що набігами, як у Совку на північ чи в Сибір на заробітки їздили і потім аж ціле авто купували :-)

1 більше набереш на той самий б‘юджет :)
2 читав в книжці одеського шулєра А. Барбакару, що це була найулюбленіша категорія відпочиваючих

1 більше набереш на той самий б‘юджет :)

нє, на таку роботу тільки за неподілені йти

2 читав в книжці одеського шулєра А. Барбакару, що це була найулюбленіша категорія відпочиваючих

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

Хз, мабуть під такою оптикою 500к за девопс і варто розглядати

(Чуствуеться, что после надо будет брать года два отпуска)..

Ей. Це мій жарт про рік-через-два.

А че там за требования? врятли они чисто литкод спрашуют.

Я в 2014 подавався в різні хедж-фонди, але не на SRE, а на кванта. Чисто літкод запитують, тільки тоді це був hackerrank, а не leetcode, але ідея та ж сама. Щоб два рази не вставати, то ось пруф для Олексія Пєніє: i.imgur.com/eACkzLL.png Але це скоріш навіть скринінг, тобто якщо швидко задачку не зробиш, то з тобою навіть далі говорити не будуть.

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

Мене співбесідувала величезна кількість міжнарників і з математики і з інформатики. Я сходу казав що взагалі не шарю економіку/фінанси, але 90% співбесідющих мені зразу казали, що вони теж дупля не дають.

А... Ось книжка з прикладами запитань: www.goodreads.com/...​97002.Heard_on_The_Street

В мій час (2014) ще дуже цінувались чуваки, які мають досвід роботи з FPGA, мабуть щоб прям з FPGA’шок торгувати в обхід ядра (HFT).

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

Прям под меня вакансию писали, если бы не литкод, то сразу бы к ним пошел.

Ти вже скільки задач на літкоді зробив? Бо з моменту відкриття теми пройшов вже місяць...

тільки тоді це був hackerrank, а не leetcode

 Да без разницы, это одно и тоже.

багато математики, чисельних методів, теорію імовірності і статистику. Багато по системному програмуванню було запитань.

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

i.imgur.com/eACkzLL.png

йопт, я одній конторі сказав «фе» після того, як успішно пройшов 90 хв кодінг на hackerrank, мол чого ви це умучуєте і стресуєте, а тут 120 хв.

В мій час (2014) ще дуже цінувались чуваки, які мають досвід роботи з FPGA, мабуть щоб прям з FPGA’шок торгувати в обхід ядра (HFT).

а що з ними зараз? на відяхи перейшли?

Так а сама задача там на 10хв була (тіпа easy з літкоду). Я пам’ятаю, що більше готувався ніж власне рішав: прийшов додому, повечеряв, настроївся 2 години порішати задачі, сів писати ... і закінчив за 10хв... Мабуть дівчата себе так само відчувать, коли секс закінчується швидше ніж вони розраховували.

Так а сама задача там на 10хв була (тіпа easy з літкоду). Я пам’ятаю, що більше готувався ніж власне рішав: прийшов додому, повечеряв, настроївся 2 години порішати задачі, сів писати ... і закінчив за 10хв... Мабуть дівчата себе так само відчувать, коли секс закінчується швидше ніж вони розраховували.

а решта часу які там ще завдання були?

На хакер ранку вона одна і була. Чи може дві якісь прості — точно не пам’ятаю, але там щось супер-просте тіпа заповнити матрицю по-спіралі:

  1  2  3  4
 10 11 12  5
  9  8  7  6
по-ходу щоб тупо відсіяти народ, який взагалі не вміє кодити.

В 2 сігма очна співбесіда була цілий день (штук 8 співбесід). На першій дали комп і попросили накодити чуток важчу задачу — тіпа додавання двох великих чисел. Потім до кінця годинної співбесіди її ускладнювали дійшли до множення, поспілкувались за множення через ФФТ і Карацуби. Я там навіть поривався ФФТ написати (він дуже простий і реально красивий — 10 рядків), але мені на слово повірили були. Поспілкувались за floating/fixed-point арифметику. Нічого особливого, короче.

В принципі після цього кодінг у мене не просили — далі в основному по математиці: куча задач на теорію імовірності і комбінаторику. Була вже класична: дано N точок на прямій заданих своїми координатами (x_1, ..., x_N) треба побудувати десь школу (тобто знайти x_0) так, щоб сума відстаней від неї до всіх інших точок була мінімальна. Потім аналогічно, але з іншими метриками: сума квадратів відстаней, сума півторатих степеней, ...

Ще мене співбесідував якийсь дуже високопоставлений чувак, який тупо прийшов зі мною поговорити, бо побачив, що я пройшов був crypto-class від Dan Boneh на courser’і. На той час я навіть не знав що Dan Boneh то крутий мужик. Там перша домашка була розшифрувати текст, зашифрований xor’ом, але тексту було досить мало. То чувак був такий:
— а як ти зробив першу домашку?
— там де текст розшифрувати? ну я частотну таблицю побудував
— так там не получиться, бо даних мало
— так а я не по-байтно, а по-бітово
— о, круто... а я словником зробив
— так там не получиться, бо тексту дуже мало
— да-да, я сам намучився, але додавив

дано N точок на прямій заданих своїми координатами (x_1, ..., x_N) треба побудувати десь школу (тобто знайти x_0) так, щоб сума відстаней від неї до всіх інших точок була мінімальна.

Це типу варіація на тему: en.m.wikipedia.org/...​tion_theory_(mathematics
??

Ніт, звісно. Це задача на оптимізацію одновимірної випуклої функції f(x) — ціна, якщо поставити школу в точку x. Просто у випадку суми відстаней і суми квадратів відстаней є рішення в замкнутому вигляді: для суми відстаней це або медіана (якщо вона одна), або люба точка між медіанами (якщо їх 2), а для суми квадрату відстаней це просто середнє арифметичне.

Сума квадрату відстаней доказується тривіально — f(x) = sum((x-x[i])^2). Візьми другу похідну, вона буде 2n > 0, тобто функція випукла. Значить є єдиний мінімум і він точно в точці, де похідна рівна 0:
f’(x) = sum(2x — 2*x[i]) = 0
sum(2x — 2x[i]) = 0
sum(x — x[i]) = 0
sum(x) — sum(x[i]) = 0
nx = sum(x[i])
x = sum(x[i])/n

З сумою перших степеней (тобто просто відстаней) там те ж саме, просто так нахально не можна брати похідні. Сама f(x) це сума модулів abs(x-x[i]), тобто у тебе кусково лінійна функція, знову ж таки випукла.

Ага, добре: вони f(x) вариювали а не сеттінг в цілому. Дякую

Сеттінг теж, але не на цьому інтерв’ю. Класичне узагальнення — рішити задачу в 2д, або провести пряму, відстань від якої буде мінімальна. Тепер у тебе функція з 2х змінних.

А тепер уяви що можна побудувати більше однієї школи з якимось фіксованим коштом будівництва* :)

Упд: * однієї школи

Я в универе весь матанлиз пропустил (или не пропустил, но уже забыл). Что стоит почитать, чтоб во всем этом разобраться на достойном уровне?

Фіхтенгольц. Досить стара книжка, але як підручник просто незрівнянна. Єдине, мені не дуже подобається, що він дійсні числа вводить через перерізи Дедекінда — я надаю перевагу їх вводити як класи еквівалентності фундаментальних послідовностей на раціональних числах, ну але то радше справа смаку. При прочитанні ще дуже класно тримати під руками Гелбаум, Олмстед, «Контрприклади в аналізі» і періодично заглядати туди.

Єдине, мені не дуже подобається, що він дійсні числа вводить через перерізи Дедекінда — я надаю перевагу їх вводити як класи еквівалентності фундаментальних послідовностей на раціональних числах, ну але то радше справа смаку.

Можете что-то на английском посоветовать?

Whittaker, Watson, «A course of modern analysis», як мені пам’ять не зраджує, то дуже добра книжка. можете її спробувати.

Потому что «Инженер — это человек который умеет правильно читать справочники» (ц)

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

То-то я думаю почему чтение Фихтенгольца повергает в уныние и помрачает сознание!

Откуда, по-твоему мнению, стоит чистую воду черпать?

ищешь в поисковике что-то в духе calculus textbooks и смотришь, что предлагают топовые американские универы в качестве методических пособий по калькулусу. Ну то есть университетская методичка по сути, смотреть на mit, стенфорд и так далее. Обычно это страниц 300, американцы все излагают прагматично и с максимальной пользой для практики. Из 5-6 вариантов нужно выбрать тот, который меньше всего вызывает отторжения при чтении.
Ну а если хочется действительно хорошо разобраться (но при этом с большим отрывом от практики), то нужно читать уже совсем другие книги, и Фихтенгольц в их число не входит.

Ок, мерсі! Я где-то так и думал

Дальше немного личное :)
Я где-то таким способом интуитивно уже себе нашел:
Tier 1 — Morris Kline Calculus: An Intuitive and Physical Approach: хорошая книга о том как считать
Tier 2 — Jay Cummings Real Analysis: A Long-Form Mathematics Textbook: хиханьки-хаханьки вместо Definition Theorem Proof Corollary, но упражнения — ок
Tier 3 — Frigyes Riesz Bella Sz Nagy Functional Analysis: открыл и осознал, что нужно как минимум понять предыдущие две :)

Бонус
Справочник: Aleksandrov, Kolmogorov, Lavrentiev Mathematics: Its Content, Methods and Meaning — благо что при переводе плевлы марксизма-лененизма довольно четко обозначены

Теперь ищу «час та натхнення» и думаю что забить комментить на доу очень поможет

предмет анализа по ним не выучишь

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

Якщо серйозно, то Фіхтенгольц дуже ок, але там зайвого багато. В принципі пофіг по яких книжках вчитись — математика всюди однакова. Те, що ти знаєш укр/рос є твоєю супер-силою, яка дає тобі змогу вибирати з найкращих підручників кількома мовами. Боббі Фішер, один із найкрутіших шахістів світу всіх часів, колись спеціально рос мову вчив, бо найкращі підручники з шахів були саме російською. Ми в школі в свій час рішали польські олімпіадні шкільні, а от розбори були тільки польською, то прийшлось трохи польську «вчити» ... правда це трохи чітінг — польський і без словника на 70% українцям зрозумілий, а з базовим паперовим словником так взагалі можна pierdolić майже як нейтів спікер.

Якщо тобі принципово, щоб американці знали про твій підручник, то наче більшість американців тащаться від Calculus’а Michael Spivak’а. Але саме його я не читав, тому не буду сильно радити. Khan Academy кажуть дуже ок для основ, але я теж не читав.

Проблема Мат. Аналізу в тому, що його багато і треба багато прикладів робити. «На практиці» тобі потрібно буде сильно менше, тобто було б цікаво піти в зворотньому напрямку — вибрати якусь цікаву область, де потрібна математика і вже під неї підстроюватись. Один із варіантів — Machine Learning. Власне практично в любому курсі по МЛ тобі прийдеться освоїти чисельні методи щоб мінімізувати багатозмінну loss-function. І там якраз матан дуже пригодиться. Власне один із найкращих курсів по МЛ це cs231n від Стенфорду, рекомендую лекції 2016 року де Андрей Карпати читав: www.youtube.com/...​VBg1TpCC7OQi31AlC&index=2 (першу пропусти, бо там Феі-Феі лі читає так, що можна здохнути зі скуки). Вже в третій лекції буде повторення потрібної математики для оптимізаційних задач.

Із прикольного ще недавно був побачив ось це: ceres-solver.org/derivatives.html і офігів наскільки прикольно пояснено.

Але мат.аналіз/алгебра/... без практики у тебе взагалі не відкладеться. Найкращий варіант йти в ближайший універ і брати той calculus, який вони дають першокурсникам. Другий крутий варіант — брати українського репетитора онлайн і всерівно проходити весь курс, але обов’язково з усіма домашками.

Сенкс.

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

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

якщо Вам для ML, то може щось в моїх нотатках цікавого знайдете (але там лише класика) github.com/...​eilstein/machine_learning . я там де лекції по методах намагався в кожну привнести щось математичного.

P.S. нотатки ще сируваті — другий раз всього курс читаю. критика вітається

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

Я в универе весь матанлиз пропустил

И правильно сдалел, это я дурак его сдавал лучше всех в группе, и потом оно вообще не пригодилось, а как попал на проект с матаном, то прошло 5 лет и я все забыл. Но там бы и школьной программы хватило.
Мне тут одни гении на полном серьезе Кнута советовали, я его скачал месяц назад тоже и прозрел, это же невозможно читать, как в Фалаут попал. Все кнгиги что старше 20-ти лет уже тяжело воспринимать после современных. Даже Рихтор 2013-го года уже устарел, и я его велю читать джунам в последнюю очередь. Что блин говорить про книги 50-х годов?
Лучше посоветуйте что-то типа матан для чайников. Что бы темы были как у Физенгольца, только новая, и все по делу, и желательно с заточкой на выполнение на компе потом, типа не как решать, а что оно вообще такое.

питання було не про проекти, а про

чтоб во всем этом разобраться на достойном уровне

і тут, на мою скромну думку, Фіхтенгольц якраз найкраща відповідь. так, це доволі стара книжка і зараз далеко не кожен знає де крейцкопф у паровоза )) , але це просто шикарний підручник.

Що за проект з матаном?

Стосовно Кнута я абсолютно згоден — extremely overrated. Я взагалі сумніваюсь, що більшість з тих, хто його радить самі його ж і читали. Якщо цікаво, то introduction to algorithms Кормена, Лейзерсона і Рівеста — суперкнижка, імхо.

сдавал лучше всех в группе
Физенгольц
Лучше посоветуйте что-то типа матан для чайников.
сдавал лучше всех в группе

doubt

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

Лучше посоветуйте что-то типа матан для чайников.

Так я не себе просил) А человеку)
А Физенхольц этот и есть для чайников, только непонятным языком.
Но на самом деле за 5 лет все забываеться под 0. Я не помнил что такое логорифм, что такое экспонента и тп. А в универе тройные интегралы решал. Я это быстро вспомнил все правда на проекте.
Вот базовый теорвер я юзал в своих играх, и поетому знал его лучше чем доктора наук которыйе его не юзали, а все что не юзаеться, то забываеться за 5 лет под 0. 5 лет это крайний срок, на самом деле уже года через 2.
Ладно еще матан, вон я WCF и JQuery учил и юзал чуть ли не на уровне синьора, сейчас я тебе не одного метода в них не вспомню, мне спрашивали по WCF в одной конторе, так я даже забыл что там точка входа одна.

— так а я не по-байтно, а по-бітово

а тут, будь-ласка, детальніше

Блін, писав був довгу штуку, але закрив вкладку і всьо пропало.

От, наприклад, шифротекст:

ZSwYNVdWNFRAVl1/SQACFTMmSU9YLHVRFFJlGQIIDww5eRgEBzpCKEMgUHZWVjVUQF5AMElBAgkzdAFCVikhPTNPHT8bGBFIIywZVxE2DCIWNFA5G04iEQFKV1VlDxJBODsdT141MhcQTBw/TRACHCM7HldvVSwgQCZKdlRJIl8FXBIyXRITDTB0HU9eKHVAFFllFgQbBkg+LUxLEC0RaRY0XXZXUDFUQFFGf0sUBEEhNRAtdjc5FwFICikIXRQHJTofBCx/BipYZEx2UUw0RUBLUyYuIBgFdjoGU18yO1BVRQMpCF0OCSMqCVYWVWgRRDZLIhtwZ0IFXVl/RQ8SQR90D05ZP3VeGwAWNRh3Jh4yLBUEAT4bZVAsSnZOSmdCD1VXK0wIGAZ2OgxQPRQlUhsAAjMDGUMOOCxMRUU7CyNQJkozVU1nRwldRVVlDxJBODsdT141MhcQTBw/TRACHCM7HldvVSwgQCZKdlhYNVQEGFQwVkEBCTcgSVNfPiwXEU9lFAgLBhp3PQ1WADtCI1kxGCFTWDMRFFBXJgQKGA4hXitSQ3scFx5OAC0=

зашифрований іксором:

def encrypt(arr, password):
    return [ord(b) ^ ord(password[i % len(password)]) for i, b in enumerate(arr)]

print(encrypt('hello, world!', 'secret!'))
-> [27, 0, 15, 30, 10, 88, 1, 4, 10, 17, 30, 1, 85]

стандартний спосіб таке ламати — будуй частотну таблицю кожної L-ої букви. В англ текстах найчастіше йде буква ’ ’ (пробєл), потім ’e’, потім ’t’, потім ’a’. Проблема в тому, що я тобі дав ~400 символів, а довжина ключа більша ніж 35 ;), тому тобі реально буде важко сказати хто був пробєлом.

Власне якщо ти розглянеш побітні частотні таблиці англ текстів, то побачиш, що біт 7 завжди 0 (бо ascii), біт 5 в дохуя разів частіше одиниця ніж нуль — ну бо різниця між uppercase і lowercase якраз в цей біт, а lowercase набагато частіше. От ти вже 2 біти кожної букви ключа знаєш :).

От тобі табличка, яка я згенерував з якоїсь рандомної новели:

0 [371629, 307941] 0.9936550400569337
1 [445452, 234118] 0.9290683170217795
2 [355060, 324510] 0.99854170646658
3 [442210, 237360] 0.9334231132164383
4 [507991, 171579] 0.8151879093255066
5 [27819, 651751] 0.2465681981241518
6 [142255, 537315] 0.7402018324937761
7 [679557, 13] 0.0003274343395414797
формат — степінь двійки [кількість байт де цей біт 0, кількість байт де цей біт 1] ентропія (якщо я не забув як її правильно рахувати, лол).

Як бачиш, біти 4-7 вгадати навіть з 10 символів супер просто. А що робити з молодшими? Ну а там вже довитягуєш тою евристикою, що після розшифрування повинно би бути чисто англ + пробєл, а не всякі ` $ ( ^ -> бум. всьо :).

Власне воно не повністю ідеально розшифрувало, але майже все вгадує і решту пофіксити тривіально:

Drinl beer pith the guys
(це інший текст)

54. Spiral Matrix это Medium задача на Leetcode

Ну если ты задаешь такие вопросы — то точно нужно на полгода уволитсься.

Не, увальняйся!
Если ты —

техлид

, то

открывать двери с ноги в любой FAANG

уже можешь.

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

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

Ну Безос всех сцаными тряпками гоняет — ему можно %)

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

Можете на примере одного из принципов объяснить вашу точку зрения?

сказал чувак не смогший взять сде3 и сваливший в фейсбук ))

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

Я поправил.

Работа, которую я делал, была в рамках того, что делают остальные SDE3 (кроме тех вещей, которые могут делать только SDE3, например, у меня не было доступа к MBR/OLR и некоторым хайринг ивентам). Я сидел в EC2N Dataplane, а не в ритейле, что добавляет некоторый мултиплаер поверх этого.

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

Плюс поверх всего майндсет людей наверху «promotion is a retention tool», но при этом полиси компании, которая не позволит им сделать ничего кроме как пожать плечами, когда я положу перед ним оферы.

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

спорить не буду, ты принял правильное решение

Могу я привести по моему опыту работы с некоторыми ex-amazonian, которые считаю, что больше вредят атмосфере, чем помогают.

Ownership — задумывалось, что «own your shit», но часто — противоположность collaboration. Значит, что нужно всегда «проходить» через одобрение индивидуала, даже если вся команда владеет определенной частью. Нужно всячески замедлять процесс чтобы показать важность.

Are Right, A Lot/Have Backbone; Disagree and Commit;Insist on the Highest Standards — значит, что нужно везде вставить 2с, несоглашаться ради несогласия и только ради того, чтобы тебя замечали на митингах. highest standards = my standards.

Встрeчал очень много толковых ребят, но как-то чем дольше был человек в компании и чем выше он дошел, то тем больше проявляются эти «leadership» :\

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

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

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

Пара десятков штук $, это в какой стране?

Пара десятков штук $, это в какой стране?

default country :-)
U.S.A.

Просто, к примеру, где-то в Европе было бы ОК.

Customer Obsession

Leaders start with the customer and work backwards. They work vigorously to earn and keep customer trust. Although leaders pay attention to competitors, they obsess over customers.

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

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

Мало того, у них каждый новый интервьювер спрашивает по несколько этих вопросов.

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

А «несправедливо» отбракованные, если и правда круты, соберут свои крохотные муравейники будут потом просто куплены и инкорпорипованы

Это если логически, без гуманитарных соплей в сахаре.

им достаточно уже получать просто хороших

каждый следующий должен быть лычше чем 50% текущих — www.inc.com/...​be-peers in similar roles.

Зафейканные истории обычно отсеиваются дополнительными вопросами, спросить пару наводящих вопросов с деталями и несколько раз и люди теряются. Behavior занимаются обычно люди на 1-2 уровня выше.
Интервьювер часто видет то насколько готовились и адаптирует результат. Если люди не готовились — они обычно и к другим интервью не готовились и часто фейлят несколько раундов.

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

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

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

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

Я проходил C2(Proficiency) в топовой школе английского, и самый крутой в группе был 12-ти летний малой, потом шли 25-ти летние, все кому 35+ жестко тупили на С2, даже если он были отличниками на C1. 40-летние профессорши, которые читают лекции на английском, сначала смотрели на малого свысока, и типа исправляли ему ответы(которые уже были правильные) и я тоже этим первый урок грешил, а под конец семестра уже списывали у него без зазрения совести, и смирились с тем что он самый умный и понимает все новые темы на лету.

14 літній буде мати трабли з концентрацією.

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

Очень крутая история про мотивацию подростков! Жалко, конечно немного, шо туфта

Может и я аутист, но на меня она очень даже сработала, и только лет в 25 понял как жестко меня развели.

Та всё ок с тобой

Happiness is the perpetual possession of being well deceived.

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

35 хочу стати big data

А почему ты хочешь стать? ЗП же такие-же, а вакансий толком нет, по крайней мере 4 года назад их вообще 0 было. Это я себя Big Data Engineer считаю типа, потому как все время с ETL и Data Warehouse работал и с базами, но тут явно не 3 года учиться надо на мой взгляд, это может на крутого Machine Learning Engineer надо 3 года учиться как раз, а Big Data это тот же CRUD. На Hadoop, Spark, H20 почти нет вакансий кстати, только вчера смотрел.

Тяжело просто себя заставить что-то учить 2 часа в день ради той же ЗП, но в другой сфере, а вот что бы увеличить совю ЗП раз в 5-6, в фаанге, то уже друго дело.

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

коли я в 14 прийшов в секцію карате, і вже через місяць сідав на всі можливі шпагати і став зіркою групи. Тільки з того нічого не виросло.

якось так дивно читати про шпагат і потім «нічого не виросло», пошлувато вийшло :-)

Коллеги которые живут или жили в США подскажите, имея гринку я смогу такое купить, и работать удаленно? В чем тут подводные камни что оно такое дешевое? Или это нормальные цены для такого села?
www.zillow.com/...​nd-FL-34145/54168746_zpid

Ты сначала заимей гринку))))))))))))

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

«И вы тоже говорите» ©

У тебя настолько же реалистичные представления о мире, как и у 6-и летнего ребенка)

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

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

Вроде в среднем получали через года 3, дольше чем через 5 почти никто не получал. Или у тебя другая информация?

Це було до останніх змін з еміграційних законах, де була диверсифікація по країні походження. Українець отримував грінку за 4-5 років, індус — міг і за 10 не отримати. Зараз — походу, мають це вирівняти. тому мабуть зараз імовірніше в лотерею виграти =)

Зараз — походу, мають це вирівняти

Знову SJW?

плюс с ковидом сильно непонятно тож.

В чем тут подводные камни что оно такое дешевое?

Рассказываю простой местный лафхак: скролишь по своей ссылке до раздела «школы», кликаешь на местную хайскул и по ученикам легко узнаешь информацию о районе: половина студентов латиносы и еще четверть — черные, 78% из бедных семей. С такими данными статистику по преступности можно даже не смотреть.

и работать удаленно?

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

Вроде же курортный город, а не какая то жопа? Я так понимаю тут как раз пенсионеры из Нью Йорка живут.

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

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