Рубрики

Опыт интервью с Amazon (для стажеров SDE)

Amazon недавно (в ноябре 2019 года) посетила наш кампус для найма стажеров SDE. Это был процесс найма в три раунда.

Раунд 1 (Раунд онлайн-кодирования):

Это был онлайн-тур по программированию на платформе mettl. Нам дали 90 минут, чтобы решить 2 вопроса о кодировании и 28 mcqs.

Mcq были основаны исключительно на структурах данных и алгоритмах, а также на обнаружении ошибок / выходных данных в заданном фрагменте кода c / c ++, где не было отрицательной пометки.

Кодовый вопрос для меня был,

  1. Это был простой вопрос, основанный на манипуляции со строками, вам просто нужно позаботиться о угловых случаях, в противном случае это была легкая прогулка.
  2. Второй вопрос состоял в том, чтобы найти следующее большее число, используя те же цифры, что и во входной строке . Ограничения на длину входной строки составляли 1 <= длина <= 100000, поэтому решение O (NLogN) было бы хорошо.
    пример
    Вход: 1532
    Выход: 2135

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

Раунд 2 (интервью F2F):

Этот раунд был личным собеседованием и длился почти 1 час на каждого кандидата.

Сначала он начал с представления о своем прошлом и своей текущей работы в Амазонии в качестве SDE, затем мне сказали, чтобы я представился. После этого он начал с интервью.

Сначала он просмотрел мое резюме, когда я упомянул о моей летней стажировке, он спросил о моей работе там и о заявке, над которой я работал. Он был дружелюбным и, казалось, увлекался всем, что я говорил. Затем он взглянул на мой проект и нашел один мой проект интересным, поэтому он попросил меня показать логику и расчеты на бумаге, я объяснил это в течение примерно 10 минут, он был убежден с ответом, а затем мы перешли к структуре данных и алгоритм вопросов.

  1. Оставив историю в стороне, вопрос заключался в том, чтобы найти два узла, которые суммируют заданное значение в сбалансированном бинарном дереве поиска. Я предложил подход, чтобы взять обход по порядку и получить отсортированный массив. А затем применить этот двух указатель O (N) время подход в качестве массива уже сортируются. Он спросил меня, могу ли я улучшить космическую сложность вместо O (N) до чего-то лучшего? Я рассказал ему о методе поддержки стеков: один для обхода по порядку, а другой — для обратного обхода по порядку и выполнения того же подхода с двумя указателями, так как один стек дает элементы массива в порядке возрастания, а другой — в порядке убывания. Я не был уверен в итеративной имплантации этого обхода, поэтому он сказал, что все в порядке, и сказал мне написать первый подход. Он тщательно просмотрел код и после некоторого объяснения кода с моей стороны он был удовлетворен и перешел к следующему вопросу.
  2. Он попросил меня спроектировать структуру данных, которая наилучшим образом поддерживает операции вставки, поиска и удаления. Я предложил дважды связанный список с hashmap, чем он сказал, если я могу улучшить сложность удаления времени. Затем я предложил самобалансировку BST (AVL Tree), которая будет поддерживать все это в O (LogN) времени. Он был убежден и сказал мне, чтобы показать, как я буду балансировать дерево? Я рассказал ему о поворотах, которые нужно выполнять после каждой операции вставки и удаления. Мне не нужно было кодировать это. После этого он сказал, что если у меня есть к нему какие-либо вопросы, я задал пару общих вопросов, и тогда раунд закончился.

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

Раунд 3 (интервью F2F):

Этот раунд также основывался на структуре данных и алгоритмах и длился более часа.

  1. Первый вопрос состоял в том, что мне дали массив неотрицательных целых чисел, где каждое целое число представляет максимальное количество прыжков, которое я могу сделать из этой позиции, и я должен найти количество способов достичь n-го шага. где n — длина массива. Я предложил ему решение DP, я взял массив count [n], в котором хранится количество способов достижения этого конкретного шага и позволяет использовать входной массив как шаги [n].
    • И отношение было,
      count [0] = 1; (Поскольку есть один способ добраться туда, и мы уже там таким образом!)
      для каждого я от 1 до п
      count [min (i + 1, n-1)] для подсчета [min (i + steps [i], n-1)] будет увеличен на count [i], так как пути для достижения здесь были count [i] и мы можем пойти к шагу [я] отсюда.

    Он был убежден решением и сказал мне написать рабочий код без ошибок.

  2. Второй вопрос был о соединении частей веревки, принимая две части за раз, чтобы соединить их, и, наконец, объединить их в одну веревку с минимальными затратами , где стоимость определяется как сумма двух веревок, к которым мы решили присоединиться. Я сказал ему жадный подход с использованием приоритетной очереди, чтобы взять две части длины по мин. Из приоритетной очереди и снова добавить объединенный кусок в приоритетную очередь, пока не будет единственной веревки. Затем он спросил меня, как мне реализовать приоритетную очередь? Я сказал ему, что я буду использовать мин кучу. Затем он спросил меня о вставке и удалении в минимальной куче, и после этого мы перешли к следующему вопросу, мне не нужно было кодировать этот.
  3. Третий вопрос состоял в том, что мне дали n-арное дерево, каждый узел имеет целочисленное значение, и мне нужно было найти подмножество узла, которое имеет максимальную сумму, но я не могу взять в этом наборе и родителя, и ребенка (т.е. исключить хотя бы одного из них). Эта проблема напоминала эту проблему, которую я решил ранее. Поэтому я предложил то же самое, взяв два дополнительных свойства в классе Node (т. Е. Максимальную сумму, включающую этот узел и исключив этот узел), а затем приняв обход дерева порядка уровней и изменив значение включающих и исключающих переменных N-го уровня, находясь в (N-1) th. (То есть, вставляя их в очередь, здесь мы должны сделать это, рассматривая все дочерние элементы текущего узла. И корневой узел инициализируется со значением исключения, равным нулю, и включением в качестве значения этого узла) И, наконец, принимая сумму max (включая, исключая) для всех конечных узлов. Затем он сказал мне написать рабочий код с охватом всех угловых случаев. И он также сказал мне написать класс Node.

После этого 3 вопроса он спросил меня о моей стажировке и проектах и, когда сроки продолжали прибывать, он задавал мне различные вопросы по ним,

  • Что реагирует?
  • Что такое компонентно-ориентированная разработка?
  • В чем разница между базой данных SQL и NO-SQL?
  • Что такое AWS? и т.п.

Наконец он спросил, есть ли у меня какие-либо вопросы к нему, и тогда раунд закончился.

Приблизительно после двух часов этого раунда были объявлены результаты, я и другие 6 студентов были отобраны.

Я бы посоветовал быть уверенным и громко мыслить, находясь там, а также выражать свои мысли, приводя примеры на бумаге и задавая вопросы везде, где есть сомнения. Желаем удачи в ваших интервью!

Напишите свой опыт интервью или отправьте его по электронной почте на адрес contrib@geeksforgeeks.org

Рекомендуемые посты:

Опыт интервью с Amazon (для стажеров SDE)

0.00 (0%) 0 votes