Рубрики

Amazon Интервью | Набор 54 (для стажировки)

Привет всем. Вот мой опыт собеседования для прохождения практики в Amazon.
Должность: 2-месячный стажер
Количество раундов: 1 онлайн + 2 PI (2 F2F)

Раунд 1: (90 минут)
20 MCQ и 2 вопроса по кодированию
Было 20 MCQ, основанных на выходе C, вероятности, основных математических данных, OOPS, анализе алгоритма и операционных системах.

Вопрос 1: При наличии связанного списка напишите функцию, которая переворачивает каждые k узлов (где k является входом в функцию).
Пример:
Входы: 1-> 2-> 3-> 4-> 5-> 6-> 7-> 8-> NULL и k = 3
Выход: 3-> 2-> 1-> 6-> 5-> 4-> 8-> 7-> NULL.
Входы: 1-> 2-> 3-> 4-> 5-> 6-> 7-> 8-> NULL и k = 5
Выход: 5-> 4-> 3-> 2-> 1-> 8-> 7-> 6-> NULL.

Вопрос 2: Задана строка, содержащая слова, разделенные произвольным числом пробелов. Напишите функцию, которая возвращает строку, состоящую из первой буквы каждого слова. (Примечание: может быть любое количество пробелов в начале данной строки, в конце данной строки или между словами строки.)
Пример:
Вход: «это тестовый пример»
Выход: tiatc
(Для обоих вопросов были даны прототипы функций и main. Хотя многие решения прошли первоначальные тестовые случаи, они были позже отклонены, поскольку они не удовлетворяли граничным случаям.)

Раунд 2: (лицом к лицу) (1 час 20 минут)
Вопрос 1: Учитывая два числа, представленные двумя связанными списками, напишите функцию, которая возвращает список сумм. Список сумм представляет собой связанный список представлений сложения двух входных чисел.
пример

Input:
 First List: 5->6->3  // represents number 563
 Second List: 8->4->2 //  represents number 842
Output
 Resultant list: 1->4->0->5  // represents number 1405

Я перевернул связанные списки и просто добавил соответствующие узлы вместе с переносом. Затем он попросил меня решить вопрос, не переворачивая список. Затем я решил вопрос итеративно, не переворачивая списки.
Затем интервьюер попросил меня написать рекурсивный код для той же проблемы.
После этого он попросил меня изменить код так, чтобы перенос в каждом месте передавался по значению вместо использования указателей (которые я использовал в своем коде).

Вопрос 2: итеративный и рекурсивный код для обращения к связанному списку (позаботьтесь о угловых случаях: когда список не имеет узлов или содержит один узел)

Вопрос 3: Напишите функцию, чтобы проверить, является ли двоичное дерево поддеревом другого двоичного дерева (Проверьте для всех угловых случаев).
Я решил это за O (n ^ 2) временную сложность. Он не просил меня оптимизировать мой код.

Вопрос 4: Какую структуру данных вы бы использовали для ведения учета фондового рынка?

Я попросил его уточнить постановку проблемы.

Затем он спросил меня: «Предположим, вам необходимо поддерживать стоимость акций различных компаний в течение разных периодов и возвращать минимальную стоимость акций конкретной компании в течение определенного периода времени».

Я ответил на дерево сегментов (возможно, правильным ответом была структура данных очереди).
Однако интервьюер продолжил вопросы о дереве сегментов.
Он попросил меня написать код для
а) Создание дерева сегментов
б) Выполнение минимального диапазона запроса в сегментном дереве
в) Обновление дерева сегментов
Он попросил меня проанализировать сложность времени для построения дерева сегментов и выполнения запроса минимального диапазона в дереве сегментов.
Затем он спросил меня: «Если вы хотите поддерживать стоимость акций компании в течение последних 6 месяцев … затем вы должны обновлять дерево сегментов каждый день, удаляя стоимость акций и вставляя новую стоимость акций». Как бы Вы это сделали?
Здесь я застрял и не смог выполнить обновление быстрее, чем за время O (n). (Однако с использованием очереди это можно выполнить за время O (1)).

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

Раунд 3: (лицом к лицу) (20 минут)
Только один технический вопрос был задан мне в этом раунде.

а) Он попросил меня рассказать кое-что о себе и моих технических достижениях ..

б) Как сохранить двоичное дерево в файле и затем прочитать обратно (это не обязательно BST)
Сначала я ответил, что буду хранить обход дерева уровня-порядка.
Затем он спросил меня, как я буду поддерживать узлы на разных уровнях (на которые я не смог ответить). Итак, я изменил свой подход и сказал, что: я буду хранить упорядоченные и предварительные порядки обхода дерева, из которого можно легко извлечь исходное дерево.
Но затем он сказал мне оптимизировать мой подход (поскольку этот подход потребовал бы вдвое больше исходного пространства для хранения данных в узлах). Я не мог и дальше оптимизировать свой подход (однако лучшим подходом было использование скобок.

                                    A
                                      /   \
                                        B    C
                                        /   \
                             D      E

Если это двоичное дерево, оно может быть сохранено как (A (B (D), (E)), (C)) в файле.)
в) Затем была 10 минутная дискуссия о моем проекте, проблемах, с которыми я столкнулся, и способах их решения.
г) Наконец он спросил меня, есть ли у меня какие-либо вопросы.
Я спросил о стажировках в Amazon и об использовании в них СУБД и NETWORKING.
Он начал разрабатывать весь рабочий процесс в Amazon и свой опыт работы …… .. большинство из которых я едва мог понять. Он также сказал, чтобы я хорошо знал JAVA, так как это потребуется на каком-то этапе проектов.

Наконец-то меня выбрали.

Много-много поздравляю автора. Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью и отправить ее по почте на contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Все проблемы с практикой для Amazon !

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

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

Amazon Интервью | Набор 54 (для стажировки)

0.00 (0%) 0 votes