5 задач по программированию для разработчика ПО

12
19313

Статья от разработчика с опытом более 20 лет, который сделает вызов вашим навыкам. Вы все еще думаете, что вы инженер-программист?


Всякий раз, когда я публикую вакансию Software Engineer, заявки от претендентов стекаются очень быстро. Однако меня беспокоит то, что среди них обязательно есть такие «специалисты», которые не знают, что значит «программирование».

Конечно, они думают иначе.

Я полагаю, что это нормально, знать только jQuery, если вы хотите подать заявку на место «Front-End Web Developer», но с каких пор «Software Engineer» означает лишь только знание HTML, JavaScript и CSS?

(Особенно я люблю тех, кто часами может говорить о XML, JSON, XSLT, SOAP, HTTP, REST, SSL и еще 200 акронимах, но не различает типы данных int и float.)

Можете ли вы написать что-нибудь на самом деле?

От человека, претендующего на позицию Software Engineer, я ожидаю наличие навыков программирования. Я имею в виду реальный код: вам дают задачу, и вы пишете решение для нее, используя любой язык программирования, с которым вы чувствуете себя комфортно.

Как вы думаете, вы сможете это сделать?

Если вы не сможете решить следующие 5 проблем менее чем за 1 час, то вам стоит вернуться к своему резюме. Возможно, вы хороши в чем-то, чем вы сегодня занимались. Но вам нужно перестать называть себя «инженером-программистом» (или просто программистом, или специалистом по информатике, или даже, возможно, «разработчиком»). Перестаньте лгать себе и уделите немного времени на то, чтобы сменить приоритеты.

5 задач

(Следующие задачи предельно просты, но вы бы удивились, узнав, сколько людей не могут с ними справиться. Вообще, они просто не могут ничего сделать. Серьезно.)

Задача 1

Напишите три функции, которые вычисляют сумму чисел в данном списке, используя цикл for, цикл while и рекурсию.

Задача 2

Напишите функцию, которая объединяет два списка, чередуя элементы. Например, с учетом двух списков [a, b, c] и [1, 2, 3] функция должна вернуть [a, 1, b, 2, c, 3].

Задача 3

Напишите функцию, которая посчитает первые 100 чисел Фибоначчи. По определению первые два числа в последовательности Фибоначчи равны 0 и 1, и каждое последующее число представляет собой сумму двух предыдущих. В качестве примера здесь приведены первые 10 чисел Фибоначчи: 0, 1, 1, 2, 3, 5, 8, 13, 21 и 34.

Задача 4

Напишите функцию, которая принимает список не отрицательных целых чисел, упорядочивает их так, чтобы они составляли максимально возможное число. Например, [50, 2, 1, 9], наибольшее сформированное число равно 95021.

Задача 5

Напишите программу, которая поместит + , –, или пробел в промежутках между цифрами 1, 2, …, 9 (в таком порядке) так, чтобы в результате получилось 100. Например: 1 + 2 + 34 — 5 + 67 — 8 + 9 = 100.

К сожалению, вы не тот, кто нуждается в этом посте.

Если вы потратили свое время на прочтение этой статьи (или любой другой о разработке программного обеспечения), вы, вероятно, достаточно хороши, чтобы решить эти и еще 5 задач в течение часа. Люди, которые думают, что это всё «глупости», как правило, не могут решить ничего.

Другие материалы по теме

27 сайтов с задачками для оттачивания навыков программирования
7 книг с задачами по программированию
Стандартные задачи на собеседовании




12 Комментарии

  1. Добрый день! Я не программист, просто в свободное время изучаю Python.
    Просьба к автору статьи посмотреть на мои решения
    (https://github.com/AlexandrZhytenko/reply-to-the-article).
    Алгоритм решения последней задачи не знал, поэтому искал в Google.
    Спасибо.

  2. С четвёртой задачей попотел — как же сравнить 8 и 60 или 555, что бы число 8 было больше, плюс записать всё это в массив. В итоге меня озарило приведение типов(писал на python) и сортировка строк а не integer.

    def bigger_number(a):
    a=[str(i) for i in a]
    a=sorted(a)
    return a[::-1]
    arr=[550,2,1,9]
    barr=bigger_number(arr)
    print(».join([i for i in barr]))