Сколько платят Junior developerам?

User avatar
valchkou
Уже с Приветом
Posts: 3173
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: Сколько платят Junior developerам?

Post by valchkou » 05 Feb 2019 21:15

Palych wrote:
05 Feb 2019 19:36
valchkou wrote:
05 Feb 2019 17:27
Palych wrote:
05 Feb 2019 04:34
С применением на интервью понятно. Спасибо!
Мне любопытно насколько это применяется в работе. Особенно О(N^2), О(N)...
Практически везде где нужно массажировать данные, особенно если они приходят из разных датасурсов.

Есть у вас массив схожих объектов типа A(id, p1, p2) и типа B(id, p3, p4) на выходе нужно получить массив С(id, p1, p2, p3, p4).
задача в чем - берем объект А из массива 1, находи его в массиве 2 и мержим. Можно это сделать за О(N^2), а можно массив 2 перегнать в Map or Set и получить О(N).

из той же темы - есть у вас массив и периодически требуется проверять содержится в нем тот или иной элемент contains(). Например массив исключений.
Решение такое же как в примере выше, вместо О(N) получаем О(1)
Понятно. Получается, если выражаться крестьянским языком, знание алгоритмов и структур - это знание коллекций.
Плюс - возможность выпендриться знаниями математических формул...
>знание алгоритмов и структур - это знание коллекций.
Да
>возможность выпендриться знаниями математических формул
Нет, мат формулы это совсем другой зверь.

rtogan
Уже с Приветом
Posts: 577
Joined: 13 Dec 2011 11:24

Re: Сколько платят Junior developerам?

Post by rtogan » 07 Feb 2019 11:09

valchkou wrote:
04 Feb 2019 17:55
Palych wrote:
04 Feb 2019 15:57
А что ноне подразумевают под data structures and algorithms?
на прмере java
data structures - map, set, list, q их имплементации, как устроены внутри и какие лучше использовать на примере задач.
algorithms - тут обычно сводится к sort, filter, find, insert применимо к data structures. Big 0 данных алгоритмов. например какой Big 0 на insert/get в HashMap, TreeMap или ArrayList.

мне в свое время помогла эта книжка Data Structures and Algorithms in Java by Mitchell Waite and Robert LaFore
http://web.fi.uba.ar/~jvillca/hd/public ... dition.pdf
Не смотрите что книжка старая для мид/жун вполне достаточно и написано понятно для чайника.

Для сениора нужно понимание как работать с concurrency и multy-core.
И тут появляются такие интересные структуры как blockingQ, ConcurrentMap, SkipList.
Aggregate, Sort, Filter, Modify используя stream и parallel stream

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

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

Вот была у меня задача, надо было найти какие то элементы в 2-х массивах на сколько то там сотни тыс елементов и занимает не более 300 millisec.
Я пишу код который с виду О(N^2). Интервьюер на том конце хочет О(N). Я это понимаю но времени подумать и выдать то что он хочет просто нет.
Он запускает свой код и у него 200ms, запускает мой и с удивлением получает 95 ms. Все тесты зеленые.
Интервью я не прошел, потому как не выдал О(N).
Я догадываюсь что решение типа стандартное и каждый кто готовился к таким задачам выдаст его не задумываясь.

итого нужны 3 скилза для успешного прохождения интервью
- знать data structures and algorithms
- уметь применять их в работе
- уметь применять их в задачах на интервью
А разве сейчас эти гады не требуют в дополнение нарисовать архитектуру какой-нибудь системы/system design?

User avatar
valchkou
Уже с Приветом
Posts: 3173
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: Сколько платят Junior developerам?

Post by valchkou » 07 Feb 2019 17:01

rtogan wrote:
07 Feb 2019 11:09
valchkou wrote:
04 Feb 2019 17:55
Palych wrote:
04 Feb 2019 15:57
А что ноне подразумевают под data structures and algorithms?
на прмере java
data structures - map, set, list, q их имплементации, как устроены внутри и какие лучше использовать на примере задач.
algorithms - тут обычно сводится к sort, filter, find, insert применимо к data structures. Big 0 данных алгоритмов. например какой Big 0 на insert/get в HashMap, TreeMap или ArrayList.

мне в свое время помогла эта книжка Data Structures and Algorithms in Java by Mitchell Waite and Robert LaFore
http://web.fi.uba.ar/~jvillca/hd/public ... dition.pdf
Не смотрите что книжка старая для мид/жун вполне достаточно и написано понятно для чайника.

Для сениора нужно понимание как работать с concurrency и multy-core.
И тут появляются такие интересные структуры как blockingQ, ConcurrentMap, SkipList.
Aggregate, Sort, Filter, Modify используя stream и parallel stream

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

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

Вот была у меня задача, надо было найти какие то элементы в 2-х массивах на сколько то там сотни тыс елементов и занимает не более 300 millisec.
Я пишу код который с виду О(N^2). Интервьюер на том конце хочет О(N). Я это понимаю но времени подумать и выдать то что он хочет просто нет.
Он запускает свой код и у него 200ms, запускает мой и с удивлением получает 95 ms. Все тесты зеленые.
Интервью я не прошел, потому как не выдал О(N).
Я догадываюсь что решение типа стандартное и каждый кто готовился к таким задачам выдаст его не задумываясь.

итого нужны 3 скилза для успешного прохождения интервью
- знать data structures and algorithms
- уметь применять их в работе
- уметь применять их в задачах на интервью
А разве сейчас эти гады не требуют в дополнение нарисовать архитектуру какой-нибудь системы/system design?
хотят,но после структур-алгоритмов и не для юниоров.

систем дизайн это не сложный скилз. Чего все хотят? саморасширяющуюся распределенную систему 24*7*365.
а на это уже налагаются различные бизнес процессы, типа найти совпадения или закачать данные в рилтайм из разных систем, обработать и высветить на дэшборде.
Все сводится к быстрому раскидыванию на доске кубиков со стрелками. И это пожалуй самое сложное.
Ведь на интервью времени мало и поэтому раскидывать нужно уметь автоматически.
По моим расчетам нужно не более мес чтобы выдрессироваться, но зато это разово, не то что задачки, которые надо крэкать постоянно чтобы не заржаветь.

rtogan
Уже с Приветом
Posts: 577
Joined: 13 Dec 2011 11:24

Re: Сколько платят Junior developerам?

Post by rtogan » 08 Feb 2019 05:50

valchkou wrote:
07 Feb 2019 17:01
rtogan wrote:
07 Feb 2019 11:09
valchkou wrote:
04 Feb 2019 17:55
Palych wrote:
04 Feb 2019 15:57
А что ноне подразумевают под data structures and algorithms?
на прмере java
data structures - map, set, list, q их имплементации, как устроены внутри и какие лучше использовать на примере задач.
algorithms - тут обычно сводится к sort, filter, find, insert применимо к data structures. Big 0 данных алгоритмов. например какой Big 0 на insert/get в HashMap, TreeMap или ArrayList.

мне в свое время помогла эта книжка Data Structures and Algorithms in Java by Mitchell Waite and Robert LaFore
http://web.fi.uba.ar/~jvillca/hd/public ... dition.pdf
Не смотрите что книжка старая для мид/жун вполне достаточно и написано понятно для чайника.

Для сениора нужно понимание как работать с concurrency и multy-core.
И тут появляются такие интересные структуры как blockingQ, ConcurrentMap, SkipList.
Aggregate, Sort, Filter, Modify используя stream и parallel stream

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

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

Вот была у меня задача, надо было найти какие то элементы в 2-х массивах на сколько то там сотни тыс елементов и занимает не более 300 millisec.
Я пишу код который с виду О(N^2). Интервьюер на том конце хочет О(N). Я это понимаю но времени подумать и выдать то что он хочет просто нет.
Он запускает свой код и у него 200ms, запускает мой и с удивлением получает 95 ms. Все тесты зеленые.
Интервью я не прошел, потому как не выдал О(N).
Я догадываюсь что решение типа стандартное и каждый кто готовился к таким задачам выдаст его не задумываясь.

итого нужны 3 скилза для успешного прохождения интервью
- знать data structures and algorithms
- уметь применять их в работе
- уметь применять их в задачах на интервью
А разве сейчас эти гады не требуют в дополнение нарисовать архитектуру какой-нибудь системы/system design?
хотят,но после структур-алгоритмов и не для юниоров.

систем дизайн это не сложный скилз. Чего все хотят? саморасширяющуюся распределенную систему 24*7*365.
а на это уже налагаются различные бизнес процессы, типа найти совпадения или закачать данные в рилтайм из разных систем, обработать и высветить на дэшборде.
Все сводится к быстрому раскидыванию на доске кубиков со стрелками. И это пожалуй самое сложное.
Ведь на интервью времени мало и поэтому раскидывать нужно уметь автоматически.
По моим расчетам нужно не более мес чтобы выдрессироваться, но зато это разово, не то что задачки, которые надо крэкать постоянно чтобы не заржаветь.
У меня, как раз, проблема именно в кубиках со стрелками. Причем, частенько про них спрашивают на фон-скрине, так что до любимых алгоритмов дело частенько и не доходит ;)
А как готовиться, что почитать, чтобы понять как работают/создаются эти саморасширяющиеся распределенные системы?
И что имеется в виду под совпадениями, которые нужно найти?

User avatar
valchkou
Уже с Приветом
Posts: 3173
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: Сколько платят Junior developerам?

Post by valchkou » 11 Feb 2019 20:42

rtogan wrote:
08 Feb 2019 05:50
А как готовиться, что почитать, чтобы понять как работают/создаются эти саморасширяющиеся распределенные системы?
не подскажу, кто то давал недавно ссылки то ли в этом то ли в соседнем топике
rtogan wrote:
08 Feb 2019 05:50
И что имеется в виду под совпадениями, которые нужно найти?
простой случай это autocomplete.
более сложный найти совпадения слов в документах, емайлах или просто огромном количестве строковых комментариев
и наконец вас просят рассказать как работает гугл серч, каким же это образом он вам выдает подсказки и даже предлагает исправить ошибки.
Под такую задачу народ годами горбатится, вливаются миллионные инвестиции и нанимаются лучшие умы планеты, а вы так ррррраз сделали тройное сальто с места
и за полчаса выдали готовое решение.

User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 10003
Joined: 27 Sep 2007 22:53

Re: Сколько платят Junior developerам?

Post by Мальчик-Одуванчик » 11 Feb 2019 21:30

Palych wrote:
05 Feb 2019 19:36
Понятно. Получается, если выражаться крестьянским языком, знание алгоритмов и структур - это знание коллекций.
Плюс - возможность выпендриться знаниями математических формул...
да нет там формул.
Разве что можно выпендриться поверхностным знанием алгебры в применении к STL библиотеки или теории категорий в отношении функциональных языков.
А вообще-то нужно учить Хаскель или накрайняк Скалу.
После этого жаба или плюсы покажутся нудным задротством.

Бубновый Валет
Уже с Приветом
Posts: 225
Joined: 01 Nov 2017 21:42

Re: Сколько платят Junior developerам?

Post by Бубновый Валет » 12 Feb 2019 20:33

Sergunka wrote:
04 Feb 2019 20:55
Дали модификацию задачки найти самый длинный полиндром в строке. Базовое решение скомуниздили с leetcode
Оказывается этот алгоритм (вокруг центров) называется Manacher's algorithm. Еще всем рекомендую LRU cache освоить, встречается он вообще везде, мне попадался раза 4-5.

Return to “Работа и Карьера в IT”