В нашей компании достаточно часто возникают вакансии для разработчиков на языке Python.
Мы решили написать небольшую коллекцию вопросов, чтобы помочь начинающим разработчикам Python быстро проверить свои навыки и сопоставить их с нашими минимальными требования на вакансию “начинающий разработчик Python”.
Первое и обязательное требование ко всем кандидатам – уверенные знания основ курса «Алгоритмы и структуры данных».
Мы не рассматриваем кандидатов на позицию разработчика (безотносительно языка программирования) без понимания концепции «сложности алгоритмов», построения базовых алгоритмов поиска и сортировки, различных структур данных (стеки, очереди, деревья, графы). Так же важно понимание объектно-ориентированной декомпозиции задач (шаблоны проектирования — Singelton, MVC) и применение основ функционального программирования (использования функций в качестве аргументов).
Вернемся к Python.
Ниже приведены базовые вопросы, с которых мы начинаем собеседование в офисе:
Что будет выведено на экран?
print (1 | 2 | 3)
print (1 ^ 3)
x= 50
def func(x):
x = 2
func(x)
print(x)
Для чего служат аргументы с * и **
def total(initial=5, *a1, **a2):
‘’’ some text ‘’’
Объясните синтаксис работы со списками
shoplist[2:]
shoplist[1:-1]
shoplist[:]
Что вернет mylist?
shoplist = [‘1’, ‘2’, ‘3’, ‘4’]
mylist = shoplist
del shoplist[0]
Написать класс с счетчиком количества экземпляров и методом доступа к счетчику
Отсортируйте список по значению “y”
points = [ { ‘x’ : 2, ‘y’ : 3 }, { ‘x’ : 4, ‘y’ : 1 } ]
Что будет выведено на экран?
list = []
for i in range(100):
list.append(lambda x, i = i: x+i )
print(list[42](3))
class myClass:
i=0
def __init__(self):
i=1
obj = myClass()
print(obj.i)
Задания на 5-15 минут:
Есть два списка разной длины. В первом содержатся ключи, а во втором значения. Напишите функцию, которая создаёт из этих ключей и значений словарь. Если ключу не хватило значения, в словаре должно быть значение None. Значения, которым не хватило ключей, нужно игнорировать.
написать функцию getPrimes(n) // Должна вернуть простые числа от 2 до n;
Написать функцию, проверяющую правильно расставленные скобки;
Написать функцию sum чтобы выражение sum(1)(2)(5)(10)возвращало 17.
Написать функцию getAnagrams
getAnagrams(“нос”, “сон”, “снедь”, “днесь”)
Должна вернуть
[
[«нос», «сон»],
[«днесь», «снедь»]
]
Написать функцию
var moneyTypes = [5000, 1000, 500, 100, 50];
function getMoney(amount) {
// нужно вернуть набор денег в следующем формате
// {
// 5000: 1,
// 1000: 2,
// ….
// 50: 5
// }
// Или бросить исключение, если вернуть деньги невозможно
}
Разработать структуру данных для хранения узла бинарного дерева.
Написать функцию проверки – является ли дерево сбалансированным.