10 легких задач по Python и SQL, которые оказались сложными :/

от автора

Пролог

Сейчас IT — очень востребованная сфера: спрос на специалистов огромный, в индустрию ежедневно «входят» новые джуны. А это значит, что и конкуренция за место под солнцем среди начинающих программистов/аналитиков накаливается с каждым днем.

Что же делать в такой ситуации? Правильно — использовать любую возможность, чтобы немного подкачаться. Так как информации масса и в голове возникает мешанина, хороший способ — порешать несложные задачки и поразбирать вопросы. Это удобно — пока едешь в метро, можно решить пару-тройку задачек и немного привести в порядок свои знания. 

Мы уже больше года выкладываем в своих соцсетях (ВКонтакте, Телеграм, Инстаграм) задачи разной сложности по программированию и смежным темам: Python, SQL, Data Science, Git, аналитике и другим темам. Для этого у нас даже есть специальная рубрика — GROK IT. Узнать ее можно по нашей фирменной утке 🙂

Так вот, за все это время мы неоднократно сталкивались с такими мыслями, когда планировали очередную задачу: «Ну нет, это слишком легко, люди от нас просто отпишутся за такие плевые задачи». Однако, все оказалось иначе.

Мы собрали для Вас 10 интересных мини-задачек по Python и SQL, которые кажутся очень простыми, но подавляющее большинство опрошенных дали неправильные ответы. Вот такая вот статистика ¯\_(ツ)_/¯

Пару слов о нас 🙂 Мы команда IT Resume и мы пилим крутую платформу для подготовки к техническим собеседованиям и развитию своих навыков. Скоро будет первый релиз, так что ждем вас в гости 😉

А пока подписывайтесь на наши соцсети, туда мы постим интересный и полезный контент по программированию, Data Science и аналитике. 

На любой вкус: ВКонтактеТелеграмИнстаграм

Итак, давайте наконец перейдем к задачам. Погнали 🙂

Задача 1. Метод extend в Python

Формулировка: 

# Дан список l. Что выведет код?     l = [1, 2, 3] l.extend('abc') print(l)

Варианты ответов:

[1, 2, 3, 'abc'] [1, 2, 3] Error [1, 2, 3, 'a', 'b', 'c']

Правильных голосов: 36%, неправильных — 64%.

Мы были очень удивлены — казалось бы, extend — стандартный списковый метод в Python. Ан нет — у подавляющего большинства он вызвал затруднение.

Правильный ответ:

[1, 2, 3, 'a', 'b', 'c']

Подробный разбор задачи здесь.

Кстати, еще больше задач мы публикуем в наших закрытых чатах ВКонтакте и Телеграме. Будем рады видеть вас там и решать задачки вместе! 🙂

Задача 2. Кортеж с одним элементом

Формулировка:

# Что выведет код?   for i in (3): print(i)

Варианты ответов:

1, 2, 3 3 (3) Error

Правильных голосов: 33%, неправильных — 67%.

В целом, мы предполагали, что многие попадутся в эту ловушку. Но в итоге на нее попались даже больше людей, чем мы думали — сотни человек!

Правильный ответ:

Error

Подробный разбор задачи здесь.

Задача 3. Фигурные скобки в f-строках

Формулировка:

# Что выведет код?   print(f'Curly brackets: {}')

Варианты ответов:

Curly brackets: {} Curly brackets:  Ошибку Ни один из вариантов

Правильных ответов — 22%, неправильных — 78%.

Здесь мы тоже думали, честно говоря, что ответ прям очевиден: f-строки это же ведь совсем базовый Python. Но мы снова были не правы.

Правильный ответ

Ошибку

Подробный разбор задачи здесь.

Задача 4. DELETE + CTE в SQL

Формулировка:

-- Дана таблица Demo.  -- Как изменится таблица после выполнения запроса в PostgreSQL?   WITH temp_tab AS ( DELETE FROM Demo ) INSERT INTO Demo SELECT * FROM temp_tab 

Варианты ответов:

Никак, т.к. INSERT вставит удаленные строки Никак, т.к. запрос не выполнится Станет пустой, т.к. DELETE ничего не возвращает и вставлять нечего Никак, т.е. INSERT нельзя использовать с CTE

Правильных ответов: 28%, неправильных — 72%.

В отличие от предыдущих задач, тут мы предполагали, что людей ожидает некая засада 🙂 Все-таки не все знают про CTE, RETURNING и так далее. Собственно, так и получилось. Но зато многие теперь познакомились с новой конструкцией SQL.

Правильный ответ

Никак, т.к. запрос не выполнится.

Подробный разбор задачи здесь.

Кстати, вот здесь мы подробно объясняем, как и зачем использовать Common Table Expressions. В том числе и про DELETE.

Задача 5. Хитрый оператор AND в Python

Формулировка:

# Что выведет код?   print(50 and 100)

Варианты ответов:

50 100 50 100 Ни один из этих вариантов

Правильных ответов — 13%, неправильных — 87%.

Статистика говорит сама за себя. Это тот случай, когда вдруг забываешь, в какой руке держать вилку. Вроде все очевидно — 2 числа и оператор AND. А что получится в итоге — не понимаешь. И никто почти не понимает.

Правильный ответ

100

Подробный разбор задачи здесь.

Задача 6. Shrug face и escape-последовательности в Python

Формулировка:

# Что выведет код?   print('¯\\_(ツ)_//¯')

Варианты ответов:

'¯\\_(ツ)_//¯' '¯\_(ツ)_//¯' '¯\\_(ツ)_/¯' Ничего из перечисленного

Правильных ответов — 28%, неправильных — 72%.

Конечно, эту задачку мы разместили смеха ради, потому что все любят каомодзи 🙂 Но на самом деле такая ситуация встретилась у нас при разработке платформы — мы хотели передавать shrug face в качестве строки и наткнулись на интересные эффекты экранирования. Так что вполне себе бизнесовая задачка!

Правильный ответ

 ‘¯\_(ツ)_//¯’

Подробный разбор задачи здесь.

Задача 7. Удаление таблицы SQL

Формулировка:

Какой запрос отработает без ошибок в PostgreSQL?

Варианты ответов:

DELETE * FROM Demo; DELETE FROM Demo; TRUNCATE TABLE Demo; TRUNCATE * FROM Demo;

Правильных ответов — 28%, неправильных — 72%.

Это еще один вопрос из серии «Какой рукой я держу вилку?». Из-за того, что некоторые операции делаешь на автомате, не зацикливаешься — а как же правильно, и такие задачи могут ввести в ступор. Да и чего уж там — многие в целом не знают, как удалять таблицу и в чем разница между DELETE и TRUNCATE. 

Правильный ответ

DELETE FROM Demo. Неочевидно, но проверьте 🙂

Подробный разбор задачи здесь.

Задача 8. Добавление элементов в set

Формулировка:

# Что выведет код?   set1 = {1, 2, 3} set2 = set1.add(4)  print(set2)

Варианты ответов:

{1, 2, 3, 4} True None Error

Правильных ответов: 16%, неправильных — 84%.

Стандартные методы списков, множеств, словарей и т.д. в Python устроены, пожалуй, не до конца очевидно. В том плане, что какие-то методы возвращают значения, какие-то не возвращают ничего. Каждый раз в этом путаешься и метод add — яркий пример.

Правильный ответ

None

Подробный разбор задачи здесь.

Кстати, недавно мы делали подборку 5 методов множеств, которые обязательно нужно знать. Не забудьте проверить себя 😉

Задача 9. Комбинирование условий сравнения в Python

Формулировка:

# Что выведет код?   print(11 > 0 is True)

Варианты ответов:

True False Error

Правильных ответов — 10%, неправильных — 90%.

Ну это задача совсем неочевидная. Python хоть и проповедует прозрачность, но эта конструкция прям совсем не прозрачная, как нам кажется (:

Правильный ответ

False

Подробный разбор задачи здесь.

Задача 10. Импорт библиотек по PEP8

Формулировка:

# Сколько правил PEP8 нарушено при таком импорте библиотек?  import face_recognition import sys, os import mymodule # пользовательский скрипт from subprocess import Popen, PIPE

Варианты ответов:

1 2 3 4

Правильных ответов — 25%, неправильных — 75%.

Одно дело писать код, а другое — писать код правильно. И делают это далеко не все, хотя по факту это очень важно: через год читать грязный код просто невозможно — порой проще его просто переписать. PEP8 в Python, пожалуй, базовое руководство по этому поводу. Но оказывается, почти никто его не знает 🙂

Правильный ответ

3

Подробный разбор задачи здесь.

К слову, по этому поводу мы весной делали целый Style Guide кода на Python — очень рекомендуем посмотреть 🙂

Почти эпилог

Согласитесь, все эти 10 задачек кажутся очень легкими на первый взгляд. Но когда начинаешь разбираться чуть глубже, понимаешь, что зачастую твои знания не так уж и крепки 🙂 Даже матерый профи может оплошать на некоторых заданиях — не потому что с ним что-то не так, а потому что некоторые вещи настолько уже доведены до автоматизма, что даже не зацикливаешься на мелочах. 

Кстати, в чатах ВКонтакте и Телеграме мы стараемся подробно отвечать на все решения, которые вы присылаете, так что с радостью ждем вас! 🙂 И впереди у нас еще много задачек по программированию, Data Science и аналитике.

Эпилог

А в качестве заключения, вот вам еще одна задачка по Python. Посмотрим, сможете ли Вы ее решить 😉

Формулировка:

Дан Pandas-датафрейм df, заполненный числами:   +----------+----------+----------+ |   col1   |   col2   |   col3   | +----------+----------+----------+

Напишите код, чтобы найти максимальное абсолютное значение корреляции каждого столбца с другими столбцами. Результат должен был представлен в виде списка.

Присылайте свои решения в чаты — там и узнаете правильный ответ! Будем ждать 😉


P.S. Если для кого-то эти задачки показались слишком легкими или «нежизненными», то мы на это и не претендуем 🙂 Наши задачки помогают людям немного прокачивать свое знание тонкостей языка в игровой форме и обращать внимание на мелочи, которые в повседневной суровой жизни выпадают из виду. Выкатывать целые комбайны в продакшен мы не учим, но le bon Dieu est dans le détail, как говорится 😉

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Сколько правильных ответов Вы дали?

28.09% 0-325
23.6% 4-621
29.21% 7-826
19.1% 9-1017

Проголосовали 89 пользователей. Воздержались 32 пользователя.

ссылка на оригинал статьи https://habr.com/ru/articles/581596/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *