Опыт собеседования с Amazon | 6-месячная стажировка (вне кампуса)

Опубликовано: 28 Августа, 2021

Я подал заявку на 6-месячную стажировку по направлению в конце ноября. Я думал, что если вы подадите заявку через направление, вам потребуется всего 1-2 дня, чтобы вернуться из отдела кадров, но через 2-3 дня, когда никто не связался со мной, я подумал, что я не собираюсь получать от них ответ. Но через две недели я получил письмо об онлайн-кодировании.

Раунд 1: Раунд онлайн-программирования
Было 2 вопроса по кодированию и 28 MCQ.

  1. Преобразование Infix в Postfix
  2. Очень простая задача манипулирования строкой

Я смог решить их обе.

Через два дня они рассказали мне о собеседовании на месте и о том, что мне нужно ехать в офис Amazon Bangalore.
В день собеседования я пошел в офис. Было около 70-80 других студентов.

Раунд 2: техническое интервью
Это был 60-минутный раунд, и было задано 2 вопроса по кодированию. Один я решил полностью, а другой частично. Мой интервьюер был классным и дружелюбным. Хотя он не часто улыбался, он заставил меня почувствовать, что мы обсуждаем этот вопрос. Он начал с обычного вопроса «О вас», а затем сразу перешел к вопросам кодирования.
Q1. Вы находитесь на первой ступеньке, и вам нужно добраться до N-й ступеньки. На любой лестнице вы можете сделать не более K ступеней. Найдите общее количество способов добраться до N-й ступени. интервал countWays (интервал N, интервал K)
Он объяснил мне вопрос, а затем объяснил его на примере тестового примера. А потом попросил меня сначала объяснить подход, и если он доволен подходом, то кодировать могу только я. Он сказал мне, что он также будет записывать вещи на своем ноутбуке.
Во-первых, я дал ему рекурсивный метод перебора (потому что так говорит CTCI). Потом он попросил меня его оптимизировать. Затем я дал ему DP-подход с временной сложностью O (N * K) и пространственной сложностью O (N). Затем он попросил меня еще больше его оптимизировать. Я использовал другую переменную, чтобы сохранить сумму последних K ступеней и увеличить ее значение для i-й ступени и уменьшить для (ik) -ой ступени. Теперь моя временная сложность была O (N), а пространственная сложность - O (N). Я думал, что теперь могу писать код, но он снова попросил меня оптимизировать пространство. Затем я дал ему решение с пространственной очередью O (K). Теперь он остался доволен подходом и попросил меня его закодировать. Он снова объяснил мне, чего он ожидает при написании кода. (Читаемое, модульное, значимое имя переменной с отступом). Затем я написал код, он проверил его и остался доволен.
Q2. Наименьшая строка со свопами - http: //https//leetcode.com/problems/smallest-string-with-swaps/
Мне было трудно придумать решение с помощью грубой силы, и я сказал ему. Затем он дал мне несколько подсказок, и с его помощью я придумал решение с использованием грубой силы. После этого у нас было некоторое обсуждение того, всегда ли решение методом грубой силы дает правильное решение. После этого он попросил меня оптимизировать его, что я пытался, но он сказал мне, что время вышло и есть ли у меня какие-либо вопросы. Я просто спросил его о роли стажера и о том, какая команда нанимает стажера.

Через 15 минут мне сказали, что я перехожу в следующий раунд.

Раунд 2: техническое интервью
Это был также 60-минутный раунд, и было задано 3 вопроса по кодированию. Сначала он попросил меня кратко представить. Затем он спросил меня о моей стажировке и моих проектах. Затем он рассказал мне, чего ждет от меня в этом раунде. Он сказал мне, что задаст 2-3 вопроса, в зависимости от времени, и мне нужно сначала объяснить ему логику, а затем код. Кроме того, следуйте хорошей практике кодирования. Он сказал мне, что я не могу перезаписать код, и что он напишет точный код на своей машине (не уверен, действительно ли он это сделал, но он что-то печатал на своем ноутбуке).
Q1. Проблема улавливания дождевой воды
Во-первых, дал ему решение грубой силы O (N ^ 2). Он сказал мне оптимизировать его. Затем дал ему подход к массивам leftMax и rightMax. Он сказал, что теперь я могу программировать. При написании кода я старался сохранить его в чистоте, сделать его настолько модульным, насколько это возможно, использовать описательное имя переменной. Он посмотрел на мой код, задал мне несколько вопросов, а затем перешел ко второму вопросу.
Q2. https://www.geeksforgeeks.org/dynamic-programming-building-bridges/ Поскольку я уже ответил на этот вопрос, я сказал ему, что мне просто нужно найти LIS в массиве. Он сказал мне, как я буду это делать. Я дал ему подход O (N ^ 2). Он сказал, что это нормально, и попросил меня написать код.
Q3. Это был простой вопрос. Он спросил меня, есть ли земля, а внутри есть озеро. Мне нужно найти размер озера. Я сказал ему, что могу использовать 1 для земли, 0 для воды, а затем применить DFS, когда я встречу любой 0. Затем он задал вопросы о DFS и о том, как я буду это делать. Я объяснил ему свой подход, а затем он попросил меня написать для него псевдокод.
Затем он спросил, есть ли у меня вопросы. Я задал ему несколько вопросов.

Примерно через 20 минут ему позвонил HR и поздравил меня.

Консультации на собеседовании

  1. Независимо от того, сколько времени осталось, убедитесь, что ваш код соответствует передовой практике. Я помню время, когда я думал, что напишу код очень быстро, а затем объясню ему код, но это не работает. Они сохранят бумагу, в которой вы написали код, а затем просмотрят ее, если у них возникнут какие-либо сомнения относительно вас. Поэтому убедитесь, что то, что вы пишете, понятно и понятно. Ваш код, ваша логика, ваша диаграмма, ваши тестовые примеры.
  2. Убедитесь, что вы ведете обсуждения, а не интервью. Обязательно объясните свой подход и свои ответы на его / ее вопросы так, чтобы это выглядело как обсуждение. Как? Объясняйте такие вещи, как будто вы что-то знаете, а не просто догадывайтесь, объясните, почему вы думаете о рекурсивном решении.
  3. Всегда ищите в Интернете ответы на свои вопросы. Следующий интервьюер может спросить вас.

Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию . Если вы готовы, проверьте свои навыки с помощью серий тестов TCS, Wipro, Amazon и Microsoft.