5 задач с собеседований Amazon для Python-разработчиков
Составили подборку из 5 задач с собеседований в Amazon, IBM и Apple для Python-разработчиков для джунов и миддлов.
14К открытий26К показов
Составили подборку из 5 задач с собеседований в Amazon для Python-разработчиков.
Они относительно несложные и подойдут для junior и middle программистов, а встретить задачки можно в том числе на собеседованиях в Apple, Samsung, Oracle и IBM.
В статье собраны решения, которые предложили программисты CodingNinjas. Весь код представлен на Python 3.5.
Изменить порядок слов
Вам дана строка ‘s’ с некоторым количеством слов N. Нужно сделать так, чтобы исходный порядок слов в строке изменился на обратный.
При этом в исходной строке между словами может быть множество пробелов, но в результате работы скрипта мы должны получить предложение с одним пробелом между словами, без пробелов в начале предложения и после его конца.
Время выполнения скрипта не должно превышать 1 секунду.
Решение
Если строка равна нулю или пуста, в выводе должна появиться пустая строка. То же самое стоит сделать, если в исходной строке находится один пробел.
Инициализируйте String ans для хранения перевернутой строки.
Инициализируйте указатель на конец исходной строки и запускайте цикл while, пока указатель не достигнет начала строки.
Если в строке встречается несколько пробелов, уменьшите указатель.
Добавьте пробелы в строку ans. После этого запустите вложенный цикл while, чтобы извлечь текущее слово из ans в вывод.
После прохождения всей строки верните ответ.
Сумма всех чисел до N
Вам дано число N. Напишите скрипт, который считал бы сумму всех четных чисел в промежутке от 1 до N, включая N. К примеру, если N равняется 6, то вывод должен быть равен 2+4+6, то есть 12.
Решение
Нам нужно вывести формулу для вычисления суммы четных чисел до числа ‘N’.
Пусть задано число N. Тогда общее количество четных чисел от 1 до N будет равно N/2. Например, для 4 список четных чисел будет равен 2 и 4, а их количество равно 2.
Последовательность четных чисел до N образует арифметическую прогрессию с общей разницей D между числами в 2, первым элементом A = 2
, и количеством элементов N, равным N/2, как доказано выше.
Сумма арифметической прогрессии равна (N/2)*(A+L)
, где N — количество элементов, а L — последнее число, которое также можно записать как A + (N - 1)D
.
Таким образом, сумма равна (N/2*2) * (2 + 2 + (N/2 - 1)*2)
= (N/2) * (1 + 1 + N/2 - 1)
= (N/2) * (N/2 + 1)
.
Палиндромы из чисел
У вас есть список из целых чисел. Вам нужно написать скрипт, который определит, является ли последовательность чисел палиндромом. Если это палиндром, нужно вернуть true
, а если нет — вернуть false
.
Решение
Мы можем написать скрипт, который пройдет по списку из чисел от начала до конца и сохранит данные. После этого скрипт должен пройти от конца и до начала. Если данные совпадают, последовательность чисел является палиндромом.
Заменить пробелы
У вас есть строка STR, в которой есть слова с пробелами. Вам нужно заменить пробелы между словами на “@40”.
Решение
Вам стоит создать отдельную строку для хранения вывода. Поочередно копируйте символы из исходной строки в строку вывода, и всякий раз, когда в ней появляется пробел, просто добавляйте в новую строку вместо пробела “@40”.
Уровни двоичного дерева
Вам дано двоичное дерево, в котором находятся целые числа. Ваш скрипт должен вывести последовательность чисел, которая бы показывала, как он проходил по двоичному дереву.
При этом количество попыток не должно превышать 100, количество ветвей дерева не должно быть меньше нуля и не должно превышать 1000, а числа дерева не должны быть отрицательными.
Решение
При обходе “уровней” дерева мы будем использовать структуру данных queue, которая обладает свойством “FIRST IN FIRST OUT”. Скрипт обойдет все первые ветви дерева, потом перейдет к следующим в иерархии.
Заключение
Какие задачи из представленных вы смогли решить, не подглядывая под спойлеры? Может быть, задачи оказались сложными для вас? Или, может, вы встречали задачки и посложнее на собеседованиях в компаниях, в которых вы работали? Напишите об этом в комментариях!
Если вы думаете, что нашли более лаконичные решения задач, опишите их ниже: с радостью их обсудим. ?
14К открытий26К показов