„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 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
#python #basics #tutorial #chatgpt
I always wanted to write my programming course — very simple and clear and gradual introduction to each topic and simple explanation answering question “Why”. With the release of ChatGPT-3 and the ability to generate the content, the geek living inside me couldn’t resist catching on. I decided to write a course co-authored with AI and understand what kind of animal this is.

Although, I will expose my experience of establishing relationships and communication with ChatGPT-3 separately, here is my first hands-on impression. Software developers do not need to worry about their jobs (yet) — working with AI demands for lots of human interventions to ensure the quality of the content.

Anyways, find the first lessons for “Intro to Programming” below:

- Intro to Programming: Variables: https://medium.com/@yeldos/basics-of-python-syntax-variables-c9bceb48c7b4
- Intro to Programming: Why we need variables: https://medium.com/@yeldos/basics-of-python-syntax-why-we-need-variables-6b8029d938aa
- Intro to Programming: Naming Variables: https://medium.com/@yeldos/basics-of-python-syntax-naming-variables-afa9ba79f071

Share it with your little brothers and sisters who want to learn more about coding.

I will keep the list updated and will gradually finish the course. It does take lots of time yet...

And remember, I am always open for a feedback! So, drop your questions, corrections, and any other thoughts in the comments below.
🔥71👍1
🌲🥳🌲🥳🌲🥳 Всех с новым годом! Желаю в новом году всем мира и добра - это нужно сейчас много кому как никогда! Пусть в новом году у всех будет достаточно сил, чтобы идти вперед к намеченным целям. Всем развития, всем движа, всем достижений! С новым 2023 годом!
🎉10👍2
#python #basics #tutorial #chatgpt

At the end of last year, I began working on creating a tutorial called
"Intro to Programming," with the help of ChatGPT3. I have been gradually
adding more topics to the content, so I just improved the previous ones
based on feedback from the first students and added two new topics:
lists and loops.

- Lists: https://medium.com/@yeldos/intro-to-programming-lists-b5999ad00fc
- Loops: https://medium.com/@yeldos/intro-to-programming-loops-565995032bdd
- Overview of the whole course: https://medium.com/@yeldos/intro-to-programming-9536d8614a02

So check them out and keep sharing your feedback with me 😍 I am happy to make the content more student-friendly 🫡

Also, share with your little brothers and sisters!
🔥6