„Chillin‘“ at Amazon
618 subscribers
27 photos
1 video
7 files
370 links
Amazonian SDE is sharing, 'cause sharing is caring 👨‍💻

note: I do not represent any of my employers in this channel
Download Telegram
Forwarded from Bohdan Shtepan 🇺🇦
Что быстро пришло в голову:

The Making of a Manager: What to Do When Everyone Looks to You.
Легкое чтиво и, по сути, автобиография одного из первых сотрудников Фейсбука, которая выросла с рядового дизайнера-интерна в топ-менеджеры. Эту книжку часто рекомендуют для подготовки к бихейву. Но здесь нет никаких рецептов или откровений. Даже конфликтные ситуации покрыты весьма поверхностно. Но, тем не менее, книжка хорошая.

Software Engineering at Google: Lessons Learned from Programming Over Time.
Прочел эту книжку по рекомендации одного из участников этого сообщества. Книжка очень хорошо описывает множество разных процессов в Гугле, но актуально и для любой большой технологической компании. После более 5 лет работы в аутсорсе/аутстафе и прочтения этой книжки я решил для себя, что назад в аутсорс - ни ногой.

Own Your Tech Career: Soft Skills for Technologists.
Легкая книжка с простыми истинами о том, как рости как специалист в своей сфере. Наверное, для многих эта книжка не будет глубоким откровением, но поможет систематизировать определенные навыки и упростит отношение ко многим вещам.
3
Forwarded from Nurbek Ismagulov
Теоретическая часть:
Подборки:
Awesome Competitive Programming: https://codeforces.com/blog/entry/23054
Coding Interview University: https://github.com/jwasham/coding-interview-university
Ресурс с большим кол-вом инфы по Computer Science на английском: https://teachyourselfcs.com

Книги:
Общая теория:
1) Algorithms (4th Edition) от Robert Sedgewick
2) The Algorithm Design Manual от Steven S. Skiena
3) Guide to Competitive Programming от Antti Laaksonen

С фокусом на подготовке к собеседованиям:
1) Cracking the Coding Interview от Gayle Laakmann McDowell
2) Elements of programming interviews in Java от Andan Aziz


Очень удобный сайт для подбора книг https://anvaka.github.io/greview/


Ресурсы для практики решения задачек:
https://leetcode.com (Большой набор задач с собеседований)
https://firecode.io (Очень заходит для начинающих, но особо не развивается)
https://hackerrank.com (Описание задач больше похоже на олимпиадное программирование)
https://codeforces.com (Олимпиадное программирование как оно есть)
https://codingcompetitions.withgoogle.com (Соревнования проводимые Google)
Подборка задач от hackerrank для подготовки к собеседованиям: https://www.hackerrank.com/interview/interview-preparation-kit


Курсы по алгоритмам на русском:
Очень короткий курс по структурам данных: https://stepik.org/course/1547
Курс по алгоритмам покрывающий основные темы: https://stepik.org/course/217
Курс по динамическому программирования для начинающих: https://www.youtube.com/watch?v=AawQnuYSY4Y&list=PLUfHxBkkFMScK6mOOWp5s6LgbzmtfwmYQ
Алгоритмическое программирование Очно-заочный курс Петра Калинина: https://algoprog.ru
Математика для олимпиад по программированию: https://stepik.org/course/4603

Курсы по алгоритмам на английском:
Курс от ИТМО: https://courses.edx.org/courses/course-v1:ITMOx+I2CPx+1T2018/course/
Курс от СПБГУ: https://www.coursera.org/learn/competitive-programming-core-skills

Статья на русском о подготовке и прохождении собеседования в гугл и фейсбук: https://tproger.ru/articles/work-in-google/

Leetcode Patterns: https://medium.com/leetcode-patterns
LeetCode course: https://github.com/sarthfrey/leetcode-course
Dynamic Programming Patterns: https://leetcode.com/discuss/general-discussion/458695/dynamic-programming-patterns
Must do Dynamic programming Problems: https://leetcode.com/discuss/general-discussion/1050391/must-do-dynamic-programming-problems-category-wise
Большая подборка материалов на все темы связанные с интервью https://docs.google.com/document/d/1VNoEUzBtyCw0fDw0X_bvuhmCwz1qhNjETPJc5VRZqm8/

System Design:
1) The System Design Primer https://github.com/donnemartin/system-design-primer
2) Grokking the System Design Interview https://www.educative.io/collection/5668639101419520/5649050225344512
3) Видео по подготовке к System Design Interview https://www.youtube.com/channel/UC9vLsnF6QPYuH51njmIooCQ/featured

Machine Learning Systems Design:
https://github.com/chiphuyen/machine-learning-systems-design

Статьи по алгоритмам:
На русском:
DSU: https://habr.com/ru/post/104772/
Topological sort: https://habr.com/ru/post/100953/
Rabin Karp: https://e-maxx.ru/algo/rabin_karp

На английском:
DP:
Презентация от Stanford: http://web.stanford.edu/class/cs97si/04-dynamic-programming.pdf
🔥6
This one is fun!))
Очень крутое и компактное видео от Principal Engineer at Amazon. Интересно, что я в таком режиме живу уже какое то время. Иногда даже кажется, что работать стал меньше, но продуктивности, или как говорят в Амазоне, импакта больше.

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

https://youtu.be/c3pzcV9yi24
👍2🔥1
#interview #coding

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

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

Поэтому, прежде чем писать решение задачки, даже если оно простое, очень важно собрать информацию о задаче.

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

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

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

Все это можно перевести на язык Лидерских принципов в Амазоне: Are right a lot, Deep Dive, Think Big, Earn trust, Customer Obsession, and etc.

Фреймворк по которому я работаю:
1. Сбор информации: уточняющиеся вопросы о задаче, о том где и как ее применяют, об ограничениях, размерах, и типах данных (int, star, negative positive, uppercase lowercase, punctuation, etc)
2. Поняв задачу в деталях, я предлагаю несколько тест кейсов, чтобы удостовериться наверняка, что я понял задачу точно. Я покрываю такие вопросы как какие данные приходят на вход и какие на выход, то есть как устроен API. В этом есть несколько плюсов: ты даешь возможность собеседнику подсказать тебе если ты что то недопонял и что ты ты точно понимаешь и осознаешь крайние случаи
3. Поняв задачу, включая тест кейсы, предлагаешь решения и их сложности, и проверяешь у собеседника, что это вписывается в его ожидания. Тем самым, показав свою зрелость, ты даёшь собеседнику возможность повысить тебе сложность раньше, и тем самым повысить свои шансы на то, что он тебя уже будет планировать на Bar Rasing level
4. Только после того как ты поймёшь, что ты понял задачу, написал тест кейсы, проговорил это все с интервьюером, и он дал тебе зелёный свет писать код, то только тогда можно писать код.
5. Следующий пункт очень важен: написав решение задачки, ты используешь выше-приведённые тест кейсы, чтобы прогнать их через своё решение, где шаг за шагом ты объясняешь значение каждой переменной и как они меняются. Это даёт сигнал собеседнику, что ты умеешь проверять свои решения и исправлять ошибки если таковы имеются.

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

Удачи на интервью!

Вопросы пишите в комментариях.
👍172
👍8
#amazon #leadership #principles #interview #behavioural

В этой статье очень неплохо описывают про поведенческую часть (aka Leadership Principles) в Амазон

Единственное дополнение наверное это в ответах нужно показать размер/сложность/scope задачи, которая будет соответствовать уровню на который вы подаетесь. Если ВКРАТЦЕ:
L4 - делаю сам маленькие компоненты очень хорошо, учусь влиять на команду
L5 - делаю сам средние компоненты, влияю на Команду, учусь влиять на другие команды, учусь создавать видение для своей
L6 - лидирую крупные/сложные задачи (по меркам сложности для одной команды), требующие нескольких человек для реализации и взаимодействия с другими командами. Создаю техническое видение продукта и работаю на bottlenecks в достижении намеченных целей

https://www.levels.fyi/blog/amazon-leadership-principles.html
👍6