„Chillin‘“ at Amazon
621 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
#mock #interview #coding

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

Что понравилось:
1. Кандидат смог пройти, относительно неплохо, через первые этапы неизведанности
2. Кандидат собрал часть требований и поговорил об ограничениях
3. Кандидат во время поднял вопрос проблемы с аудио


Из того, над чем работать:
Потренировать навык сбора требований к решению задачи, в частности,
1. Дизайн API - request/response
2. Уточнение scope задачи и если он меняется на протяжении интервью

и по кодингу, навыки:
1. Написание переиспоьзуемого и поддерживаемого кода
2. Применение алгоритмов в практике

https://www.youtube.com/watch?v=xvbeHygMMvQ
#coding #algorithm #dynamic #programming #interview

Замечательное объяснение подхода решения задач через Динамическое Программирование!

Если знаете еще хорошие ресурсы (видео, статьи), то поделитесь в комментах, для меня и других

https://youtu.be/aPQY__2H3tE
#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
#interview #coding
Для тех кто застрял на легких задачках в ЛитКоде и думает что программирование (или дорога в FANG) это не его: Попробуйте изменить подход.

1. То как решаешь задачки. 20-20-20. Решай задачу 20 минут, если не решил, то иди в дискуссии и изучай как другие решают это задачу, стараясь понять решение. Последние 20 минут используй на то, чтобы решить задачку еще раз несмотря в решение. Это самый эффективный способ решения задач. Важно соблюдать это правило и не тратить часы чтобы решить самостоятельно. Не забывай про цель - цель не доказать что ты всемогущий/-ая, а набить руку и визуальную библиотеку
2. Введи отдельно сессию, где ты разбираешь сложные алгоритмы. Старайся понять какую проблему они решают и как. Это может быть книга Сэджвика или Ютуб каналы, где разбирают как решать задачи, или курс по Алгоритмам от MIT. Где что то непонятно, подключай коммьюнити или GPT. Цель: углубиться в сложные алгоритмы и перестать их бояться.
3. Решай Моки - набивай опыт по прохождению интервью с людьми. Прохождение интервью с человеком может быть легче, так как задача собеседника направлять кандидата если тот застрял. Умение слушать собеседника - это то чего ты не получишь просто решая задачи на ЛитКоде. Более того, интервью это про беседу - коммуникацию с другим человеком.

В конце концов, тебе может повезти и у тебя никто не будет спрашивать Харды и ограничатся Медиум задачами.

Удачи в подготовке к интервью!
🔥183👍1
#ai #coding #assistants #LearnAndBeCurious

Решил попробовать codeium - по слухам хороший помощник в написании кода. Если еще не пробовали, то не теряйте время . Пока сыроват. По крайней мере в разработке на Python.

Я ожидал, что интерфейс будет предложен таким образом, что от меня нужно будет описывать бизнес логику, а он постепенно будет развивать и писать код. Вообще не так 😅 Он вообще не понимает чего я от него хочу, иногда уходит в рекурсию, или просто пишет бессмысленный бойлерплейт игнорируя важные шаги со словами "add your code here".

## Теряеет контекст 🕵️
Вроде бы должен учитывать контекст, но как то криво. Например, на этом тесте, он обламывается в двух местах:

def test_file_serialization(app):
app.config.captured_data_path = "test.json"
app.run()
# Add your assertion here

1. app.config - это датакласс помеченный как frozen=True. Непонятно почем просит модифицировать таким образом.
2. или add your assertion here - а в чем тогда помощь? :)) где то потерял контекст (а проект вообще простой - два файлика по 5-10 строк в каждом

## Деградация 📉
Когда попросил написать что-то более далекое чем Hello-world, то его вообще заглючело
def main():
# create an application that can be run in SageMaker Processing Jobs
# make sure it runs in multiprocessing using Ray framework
import ray
ray.init(address="auto")

# read the config file
# config = Config.read("config.json")

# read the config file
# config = Config.read("config.json")

# read the config file
# config = Config.read("config.json")

# read the config file
# config = Config.read("config.json")

# read the config file
# config = Config.read("config.json")

# read the config file
# config = Config.read("config.json")

# read the config file
# config = Config.read("config.json")

# read the config file
# config = Config.read("config.json")


Вроде бы обещали и авто комплит, и написание тестов, и тд. Но кроме банальных вещей он ничего не умеет. В итоге получил встроенный ChatGPT, который нужно "коучить" самостоятельно. 🫠

Если у меня будет выбор между таким помощником и джуном с горящими глазами, то выбор очевиден. Джун - инвестиция 🏆, AI Assistant - работа с идиотом / черная дыра. 🫣

Тем не менее, думаю еще дам шанс - возможно я слишком много хочу 😇

У кого нибудь есть положительный опыт? Поделитесь, плс, мб я что то делаю не так 🤧
🎉31👍1
#chilling #amazon, #llm #coding #productivity

🚀 5 способов как GenAI увеличивает мою продуктивность разработчика в Amazon

Привет, друзья! С тех пор как я начал использовать AI-помощников, моя продуктивность выросла минимум в 5 раз. Делюсь топ-5 сценариев использования:

💪 Plugin Amazon Q в IntelliJ (разрешенный в Amazon)
• Помогает с шаблонным кодом: моки, логи и обработка ошибок в стиле проекта
• Ускоряет работу примерно в 3 раза
• Правда, для других задач не особо полезен

💡 Чат Ассистенты для реализации идей
• Превращаю свои задумки в рабочий код
• Продуктивность выше в 5 раз

🧪 Написание тестов
• Генерирует все виды: unit, integration и другие
• Экономит время в 10 раз

☁️ AWS CLI команды
• Практически не открываю официальную документацию
• Ускоряет работу в 50 раз

🛠️ Bash скрипты
• Пишет читаемый, безошибочный, продакшн-готовый код
• Продуктивность выше в 100 раз

Кстати, между нами: Claude все еще намного круче, чем Amazon Q 😉
👍3🔥1