+380 57 755 34 05 team@fulcrum.software

В нашей компании достаточно часто возникают вакансии для разработчиков на языке 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

   // }

   // Или бросить исключение, если вернуть деньги невозможно

}


Разработать структуру данных для хранения узла бинарного дерева.

Написать функцию проверки – является ли дерево сбалансированным.