Спасибо за очередной познавательный пост!valchkou писал(а): Пн фев 04, 2019 11:55 amна прмере javaPalych писал(а): Пн фев 04, 2019 9:57 am А что ноне подразумевают под data structures and algorithms?
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
- уметь применять их в работе
- уметь применять их в задачах на интервью
Сколько платят Junior developerам?
- SUPER
- Уже с Приветом
- Сообщения: 590
- Зарегистрирован: Чт июн 23, 2016 2:49 pm
- Откуда: SFBA
Re: Сколько платят Junior developerам?
- Sergunka
- Уже с Приветом
- Сообщения: 34164
- Зарегистрирован: Вс дек 03, 2000 4:01 am
- Откуда: Vladivostok->San Francisco->Los Angeles->San Francisco
Re: Сколько платят Junior developerам?
Мой старший сейчас ищет работу на лето. Сегодня делал задание на https://www.hackerrank.com/
Дали модификацию задачки найти самый длинный полиндром в строке. Базовое решение скомуниздили с leetcode
https://leetcode.com/problems/longest-p ... /solution/
Это для примера что надо ожидать по-первоходу. Если что будет еще запощу 
Дали модификацию задачки найти самый длинный полиндром в строке. Базовое решение скомуниздили с leetcode
https://leetcode.com/problems/longest-p ... /solution/
Код: Выделить всё
public String longestPalindrome(String s) {
if (s == null || s.length() < 1) return "";
int start = 0, end = 0;
for (int i = 0; i < s.length(); i++) {
int len1 = expandAroundCenter(s, i, i);
int len2 = expandAroundCenter(s, i, i + 1);
int len = Math.max(len1, len2);
if (len > end - start) {
start = i - (len - 1) / 2;
end = i + len / 2;
}
}
return s.substring(start, end + 1);
}
private int expandAroundCenter(String s, int left, int right) {
int L = left, R = right;
while (L >= 0 && R < s.length() && s.charAt(L) == s.charAt(R)) {
L--;
R++;
}
return R - L - 1;
}

"A patriot must always be ready to defend his country against his government." Edward Abbey
- Kirpidonych
- Уже с Приветом
- Сообщения: 4593
- Зарегистрирован: Пн авг 31, 2009 7:05 am
- Откуда: Москва - Горновидовка - Пало Альтово - Озерки - Портланд\Сиэттл
-
- Уже с Приветом
- Сообщения: 13742
- Зарегистрирован: Вт янв 16, 2001 4:01 am
- Благодарил (а): 1 раз
Re: Сколько платят Junior developerам?
С применением на интервью понятно. Спасибо!valchkou писал(а): Пн фев 04, 2019 11:55 am Вот была у меня задача, надо было найти какие то элементы в 2-х массивах на сколько то там сотни тыс елементов и занимает не более 300 millisec.
Я пишу код который с виду О(N^2). Интервьюер на том конце хочет О(N). Я это понимаю но времени подумать и выдать то что он хочет просто нет.
Он запускает свой код и у него 200ms, запускает мой и с удивлением получает 95 ms. Все тесты зеленые.
Интервью я не прошел, потому как не выдал О(N).
Я догадываюсь что решение типа стандартное и каждый кто готовился к таким задачам выдаст его не задумываясь.
итого нужны 3 скилза для успешного прохождения интервью
- знать data structures and algorithms
- уметь применять их в работе
- уметь применять их в задачах на интервью
Мне любопытно насколько это применяется в работе. Особенно О(N^2), О(N)...
Неужели сейчас что-то оптимизируют, не решают проблемы добавлением мощности?
Или это скорее хотелки нанимающих, типа попытки придать налет элитности команде?
(не хотелось бы устраивать очередную свару и меряние разными признаками, но интересно увидеть реальное положение дел)
- Sergunka
- Уже с Приветом
- Сообщения: 34164
- Зарегистрирован: Вс дек 03, 2000 4:01 am
- Откуда: Vladivostok->San Francisco->Los Angeles->San Francisco
Re: Сколько платят Junior developerам?
Для junior-a это больше проверить образование понятно сильно рыть или спрашивать проекты где было критично О нотайшин никто не будет. Но спросить спросят так как обычно предполагается, что курс структуры данных и алгоритмы имеряк прослушал.Palych писал(а): Пн фев 04, 2019 10:34 pmС применением на интервью понятно. Спасибо!valchkou писал(а): Пн фев 04, 2019 11:55 am Вот была у меня задача, надо было найти какие то элементы в 2-х массивах на сколько то там сотни тыс елементов и занимает не более 300 millisec.
Я пишу код который с виду О(N^2). Интервьюер на том конце хочет О(N). Я это понимаю но времени подумать и выдать то что он хочет просто нет.
Он запускает свой код и у него 200ms, запускает мой и с удивлением получает 95 ms. Все тесты зеленые.
Интервью я не прошел, потому как не выдал О(N).
Я догадываюсь что решение типа стандартное и каждый кто готовился к таким задачам выдаст его не задумываясь.
итого нужны 3 скилза для успешного прохождения интервью
- знать data structures and algorithms
- уметь применять их в работе
- уметь применять их в задачах на интервью
Мне любопытно насколько это применяется в работе. Особенно О(N^2), О(N)...
Неужели сейчас что-то оптимизируют, не решают проблемы добавлением мощности?
Или это скорее хотелки нанимающих, типа попытки придать налет элитности команде?
(не хотелось бы устраивать очередную свару и меряние разными признаками, но интересно увидеть реальное положение дел)
Вообще в яве довольно много чего оптимизируют если серьезный бекенд и сейчас набирает популярность направление IoT там, что не временной ряд так надо оптимизировать, аггрегировать и вообще копать разными лопатами, чтоб уложиться в норматив

"A patriot must always be ready to defend his country against his government." Edward Abbey
- Sergunka
- Уже с Приветом
- Сообщения: 34164
- Зарегистрирован: Вс дек 03, 2000 4:01 am
- Откуда: Vladivostok->San Francisco->Los Angeles->San Francisco
Re: Сколько платят Junior developerам?
Palych,
извините за вопрос, Вы для себя позицию приглядываете?
извините за вопрос, Вы для себя позицию приглядываете?
"A patriot must always be ready to defend his country against his government." Edward Abbey
-
- Уже с Приветом
- Сообщения: 13742
- Зарегистрирован: Вт янв 16, 2001 4:01 am
- Благодарил (а): 1 раз
Re: Сколько платят Junior developerам?
Приглядываю какую позицию для себя приглядывать...Sergunka писал(а): Пн фев 04, 2019 11:14 pm Palych,
извините за вопрос, Вы для себя позицию приглядываете?
- Sergunka
- Уже с Приветом
- Сообщения: 34164
- Зарегистрирован: Вс дек 03, 2000 4:01 am
- Откуда: Vladivostok->San Francisco->Los Angeles->San Francisco
Re: Сколько платят Junior developerам?
Вот же блин. Тогда потихоньку на leetcode и hakerrank плюс пару тройку книжек по типо как пройти интервью с примерами на Яве. Слава богу тренд на яве еще держится если по-молодости программировали на С то гляньте в сторону Go там сейчас пруха в микросервисах.
"A patriot must always be ready to defend his country against his government." Edward Abbey
- valchkou
- Уже с Приветом
- Сообщения: 4195
- Зарегистрирован: Вт апр 26, 2011 10:43 pm
- Откуда: Сергели ->Chicago
- Контактная информация:
Re: Сколько платят Junior developerам?
Практически везде где нужно массажировать данные, особенно если они приходят из разных датасурсов.Palych писал(а): Пн фев 04, 2019 10:34 pm С применением на интервью понятно. Спасибо!
Мне любопытно насколько это применяется в работе. Особенно О(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)
Или например приходит некий стрим данных из кафки или рабит, объект описывающий некое действие, с датой его начала и окончания. Action(id, name, ..., startTs, endTs ),
Вам нужно считать количество действий по их продолжительности округленной до минуты roundToMinute(endTs- startTs)
duration minutes | count
1 | 15246445
2 | 56484746
.....
N | xxxxx
(похожая задача на построение Scatter Chart, например наиболее посещаемые части экрана, распределение посетителей по возрасту, распределение объектов по весу)
Тут можно заюзать HashMap для быстрого нахождения счетчика за O(1),
но если данные нужно периодически скидывать куда то в отсортированном виде то можно взять TreeMap, которая в свою очередь является имплементацией Red-Black Tree c O(LogN)
Вот вам и придется оценить будет ли эффективней периодически копировать и сортировать HashMap или иметь TreeMap.
И да все эти задачи не имеют ничего общего с нахождением палиндрома, вычислением фибоначчи или перевертыванием строки.
-
- Уже с Приветом
- Сообщения: 13742
- Зарегистрирован: Вт янв 16, 2001 4:01 am
- Благодарил (а): 1 раз
Re: Сколько платят Junior developerам?
Понятно. Получается, если выражаться крестьянским языком, знание алгоритмов и структур - это знание коллекций.valchkou писал(а): Вт фев 05, 2019 11:27 amПрактически везде где нужно массажировать данные, особенно если они приходят из разных датасурсов.Palych писал(а): Пн фев 04, 2019 10:34 pm С применением на интервью понятно. Спасибо!
Мне любопытно насколько это применяется в работе. Особенно О(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)
Плюс - возможность выпендриться знаниями математических формул...
- valchkou
- Уже с Приветом
- Сообщения: 4195
- Зарегистрирован: Вт апр 26, 2011 10:43 pm
- Откуда: Сергели ->Chicago
- Контактная информация:
Re: Сколько платят Junior developerам?
>знание алгоритмов и структур - это знание коллекций.Palych писал(а): Вт фев 05, 2019 1:36 pmПонятно. Получается, если выражаться крестьянским языком, знание алгоритмов и структур - это знание коллекций.valchkou писал(а): Вт фев 05, 2019 11:27 amПрактически везде где нужно массажировать данные, особенно если они приходят из разных датасурсов.Palych писал(а): Пн фев 04, 2019 10:34 pm С применением на интервью понятно. Спасибо!
Мне любопытно насколько это применяется в работе. Особенно О(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)
Плюс - возможность выпендриться знаниями математических формул...
Да
>возможность выпендриться знаниями математических формул
Нет, мат формулы это совсем другой зверь.
-
- Уже с Приветом
- Сообщения: 1558
- Зарегистрирован: Вт дек 13, 2011 5:24 am
Re: Сколько платят Junior developerам?
А разве сейчас эти гады не требуют в дополнение нарисовать архитектуру какой-нибудь системы/system design?valchkou писал(а): Пн фев 04, 2019 11:55 amна прмере javaPalych писал(а): Пн фев 04, 2019 9:57 am А что ноне подразумевают под data structures and algorithms?
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
- уметь применять их в работе
- уметь применять их в задачах на интервью
- valchkou
- Уже с Приветом
- Сообщения: 4195
- Зарегистрирован: Вт апр 26, 2011 10:43 pm
- Откуда: Сергели ->Chicago
- Контактная информация:
Re: Сколько платят Junior developerам?
хотят,но после структур-алгоритмов и не для юниоров.rtogan писал(а): Чт фев 07, 2019 5:09 amА разве сейчас эти гады не требуют в дополнение нарисовать архитектуру какой-нибудь системы/system design?valchkou писал(а): Пн фев 04, 2019 11:55 amна прмере javaPalych писал(а): Пн фев 04, 2019 9:57 am А что ноне подразумевают под data structures and algorithms?
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
- уметь применять их в работе
- уметь применять их в задачах на интервью
систем дизайн это не сложный скилз. Чего все хотят? саморасширяющуюся распределенную систему 24*7*365.
а на это уже налагаются различные бизнес процессы, типа найти совпадения или закачать данные в рилтайм из разных систем, обработать и высветить на дэшборде.
Все сводится к быстрому раскидыванию на доске кубиков со стрелками. И это пожалуй самое сложное.
Ведь на интервью времени мало и поэтому раскидывать нужно уметь автоматически.
По моим расчетам нужно не более мес чтобы выдрессироваться, но зато это разово, не то что задачки, которые надо крэкать постоянно чтобы не заржаветь.
-
- Уже с Приветом
- Сообщения: 1558
- Зарегистрирован: Вт дек 13, 2011 5:24 am
Re: Сколько платят Junior developerам?
У меня, как раз, проблема именно в кубиках со стрелками. Причем, частенько про них спрашивают на фон-скрине, так что до любимых алгоритмов дело частенько и не доходитvalchkou писал(а): Чт фев 07, 2019 11:01 amхотят,но после структур-алгоритмов и не для юниоров.rtogan писал(а): Чт фев 07, 2019 5:09 amА разве сейчас эти гады не требуют в дополнение нарисовать архитектуру какой-нибудь системы/system design?valchkou писал(а): Пн фев 04, 2019 11:55 amна прмере javaPalych писал(а): Пн фев 04, 2019 9:57 am А что ноне подразумевают под data structures and algorithms?
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
- уметь применять их в работе
- уметь применять их в задачах на интервью
систем дизайн это не сложный скилз. Чего все хотят? саморасширяющуюся распределенную систему 24*7*365.
а на это уже налагаются различные бизнес процессы, типа найти совпадения или закачать данные в рилтайм из разных систем, обработать и высветить на дэшборде.
Все сводится к быстрому раскидыванию на доске кубиков со стрелками. И это пожалуй самое сложное.
Ведь на интервью времени мало и поэтому раскидывать нужно уметь автоматически.
По моим расчетам нужно не более мес чтобы выдрессироваться, но зато это разово, не то что задачки, которые надо крэкать постоянно чтобы не заржаветь.

А как готовиться, что почитать, чтобы понять как работают/создаются эти саморасширяющиеся распределенные системы?
И что имеется в виду под совпадениями, которые нужно найти?
- valchkou
- Уже с Приветом
- Сообщения: 4195
- Зарегистрирован: Вт апр 26, 2011 10:43 pm
- Откуда: Сергели ->Chicago
- Контактная информация:
Re: Сколько платят Junior developerам?
не подскажу, кто то давал недавно ссылки то ли в этом то ли в соседнем топикеrtogan писал(а): Чт фев 07, 2019 11:50 pm А как готовиться, что почитать, чтобы понять как работают/создаются эти саморасширяющиеся распределенные системы?
простой случай это autocomplete.rtogan писал(а): Чт фев 07, 2019 11:50 pm И что имеется в виду под совпадениями, которые нужно найти?
более сложный найти совпадения слов в документах, емайлах или просто огромном количестве строковых комментариев
и наконец вас просят рассказать как работает гугл серч, каким же это образом он вам выдает подсказки и даже предлагает исправить ошибки.
Под такую задачу народ годами горбатится, вливаются миллионные инвестиции и нанимаются лучшие умы планеты, а вы так ррррраз сделали тройное сальто с места
и за полчаса выдали готовое решение.