Самые популярные вопросы на собеседовании: «В чем разница между списком и кортежем?»
С этого дня решил попробовать новую рубрику — вопросы с собеседований. В ней буду рассказывать о популярных вопросах и ответах на них. Такая минимальная посильная нагрузка, которая со временем поможет увереннее чувствовать себя в самый важный момент перед будущим тимлидом :)
И начнём с одного из самых простых, но самых частых вопросов с собеседований по Python/Data science. Его важно знать даже просто для себя.
Вот несколько отличительных черт кортежей и списков:
— Список можно изменить после создания. Кортеж — нельзя.
— Список упорядочен. Он представляет собой упорядоченные последовательности объектов часто одного и того же типа. Например, все имена пользователей упорядочены по дате создания:
— У кортежа есть структура. В каждом индексе могут сосуществовать различные типы данных. Например, такая запись базы данных в памяти:
#собеседование
С этого дня решил попробовать новую рубрику — вопросы с собеседований. В ней буду рассказывать о популярных вопросах и ответах на них. Такая минимальная посильная нагрузка, которая со временем поможет увереннее чувствовать себя в самый важный момент перед будущим тимлидом :)
И начнём с одного из самых простых, но самых частых вопросов с собеседований по Python/Data science. Его важно знать даже просто для себя.
Вот несколько отличительных черт кортежей и списков:
— Список можно изменить после создания. Кортеж — нельзя.
— Список упорядочен. Он представляет собой упорядоченные последовательности объектов часто одного и того же типа. Например, все имена пользователей упорядочены по дате создания:
["Seth", "Ema", "Eli"].— У кортежа есть структура. В каждом индексе могут сосуществовать различные типы данных. Например, такая запись базы данных в памяти:
(2, "Ema", "2020–04–16") # id, name, created_at.#собеседование
👍62👎9
Самые популярные вопросы на собеседовании: «Как выполняется обработка исключений в Python?»
Это база, но всё равно новички часто плавают в исключениях или используют их не в полной мере. Давайте разбираться, как делать это правильно.
Для обработки исключений Python предоставляет конструкцию из трех слов:
Синтаксис выглядит примерно так:
Например, код:
Выдаст:
Здесь блок
#собеседование
Это база, но всё равно новички часто плавают в исключениях или используют их не в полной мере. Давайте разбираться, как делать это правильно.
Для обработки исключений Python предоставляет конструкцию из трех слов:
try, except и finally.Синтаксис выглядит примерно так:
try: # пробуем этоexcept: # если try не сработал, пробуем этоfinally: # в любом случае делаем этоНапример, код:
try: val = 1 + 'A'except: val = 10finally: print('complete')print(val)Выдаст:
#=> complete#=> 10Здесь блок
try терпит неудачу, ведь мы не можем складывать целые числа со строками. Блок except устанавливает val = 10, а затем блок finally выводит complete.#собеседование
🔥23👍11💩2
Самые популярные вопросы на собеседовании: «В чем разница между is и ==?»
Это вопрос с подвохом, и начинающие разработчики часто не видят разницы. И… привет, баги! Так что давайте разбираться, в чём же разница.
Если просто, то
Если проверим равенство, то все объекты будут равны:
А вот если мы проверим их идентичность, то получается следующее:
Несмотря на одинаковое содержимое, сами списки представлены разными объектами в памяти, поэтому оператор
Это всё, что нужно знать про
#собеседование
Это вопрос с подвохом, и начинающие разработчики часто не видят разницы. И… привет, баги! Так что давайте разбираться, в чём же разница.
Если просто, то
is проверяет идентичность, а == проверяет равенство. Чтобы лучше понять, создадим 2 списка, а переменной b присвоим значение списка a:a = [1,2,3]b = ac = [1,2,3]Если проверим равенство, то все объекты будут равны:
print(a == b) #=> Trueprint(a == c) #=> TrueА вот если мы проверим их идентичность, то получается следующее:
print(a is b) #=> Trueprint(a is c) #=> FalseНесмотря на одинаковое содержимое, сами списки представлены разными объектами в памяти, поэтому оператор
is для одинаковых списков возвращает False. Проверить очень просто — у объектов будут разные идентификаторы:print(id(a)) #=> 4369567560print(id(b)) #=> 4369567560print(id(c)) #=> 4369567624Это всё, что нужно знать про
is и == на базовом уровне. Но есть несколько лайфхаков и нюансов, которые помогут использовать эти операторы на полную катушку. О них расскажу чуть позже.#собеседование
👍62🔥2🥰2💯2🐳1
Самые популярные вопросы на собеседовании: « В чем разница между remove, del и pop?»
Тип данных
1.
2.
3.
#собеседование
Тип данных
List в Python помогает сохранять разные типы данных в определенной связанной последовательности. И есть несколько методов для удаления элементов из списка. Вот в чём их основное различие:1.
remove() удаляет первое совпадающее значение:li = ['a','b','c','d']li.remove('b')print(li)#=> ['a', 'c', 'd']2.
del удаляет элемент по его индексу:li = ['a','b','c','d']del li[0]print(li)#=> ['b', 'c', 'd']3.
pop() удаляет элемент по индексу и возвращает этот элемент:li = ['a','b','c','d']print(li.pop(2))print(li)#=> 'c'#=> ['a', 'b', 'd']#собеседование
👍54
Самые популярные вопросы на собеседовании: «Что такое декоратор?»
Этот вопрос, пожалуй, встречается на каждом собеседовании. Вообще декораторы — тема большая и как-нибудь обязательно найду хороший материал, чтобы раскрыть её шире. Но а пока давайте базово разберёмся в этом вопросе.
Если вкратце, декоратор позволяет добавить новую функциональность к существующей функции. Это делается так. Функция передаётся декоратору, а он выполняет и существующий и дополнительный код. Для примера напишем декоратор, который записывает в журнал вызовы другой функции.
Напишем функцию декоратора
В качестве аргумента он принимает функцию
Напишем другие функции, к которым позже добавим декоратор:
Теперь добавим декоратор к эти двум функциям:
Теперь легко добавить ведение журнала в любую функцию, которую мы пишем. Достаточно написать перед ней
#собеседование
Этот вопрос, пожалуй, встречается на каждом собеседовании. Вообще декораторы — тема большая и как-нибудь обязательно найду хороший материал, чтобы раскрыть её шире. Но а пока давайте базово разберёмся в этом вопросе.
Если вкратце, декоратор позволяет добавить новую функциональность к существующей функции. Это делается так. Функция передаётся декоратору, а он выполняет и существующий и дополнительный код. Для примера напишем декоратор, который записывает в журнал вызовы другой функции.
Напишем функцию декоратора
В качестве аргумента он принимает функцию
func. Декоратор определяет функцию log_function_called, которая вызывает func() и выполняет код print(f'{func} called.'). А затем возвращает определенную им функцию:def logging(func): def log_function_called(): print(f'{func} called.') func()return log_function_calledНапишем другие функции, к которым позже добавим декоратор:
def my_name(): print('chris')def friends_name(): print('naruto')my_name() #=> chrisfriends_name() #=> narutoТеперь добавим декоратор к эти двум функциям:
@loggingdef my_name(): print('chris')@loggingdef friends_name(): print('naruto')my_name()#=> <function my_name at 0x10fca5a60> called.#=> chrisfriends_name()#=> <function friends_name at 0x10fca5f28> called.#=> narutoТеперь легко добавить ведение журнала в любую функцию, которую мы пишем. Достаточно написать перед ней
@logging.#собеседование
👍26👎1🔥1💩1
Самые популярные вопросы на собеседовании: «Как перевести строку в верхний/нижний регистр?»
Это очень простой вопрос, но и на них иногда «спотыкаются», особенно новички. Для ответа на этот вопрос можно использовать строковые методы
#собеседование
Это очень простой вопрос, но и на них иногда «спотыкаются», особенно новички. Для ответа на этот вопрос можно использовать строковые методы
upper() и lower():small_word = 'potatocake'big_word = 'FISHCAKE'small_word.upper()#=> 'POTATOCAKE'big_word.lower()#=> 'fishcake'#собеседование
👍19🔥3👎1👏1
Самые популярные вопросы на собеседовании: «Объясните функцию range»
Range генерирует список целых чисел. Её можно использовать тремя способами. Функция принимает от одного до трёх аргументов.
#собеседование
Range генерирует список целых чисел. Её можно использовать тремя способами. Функция принимает от одного до трёх аргументов.
range(stop) — генерирует целые числа от 0 до целого числа stop:[i for i in range(10)]#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]range(start, stop) — генерирует целые числа от start до stop:[i for i in range(2,10)]#=> [2, 3, 4, 5, 6, 7, 8, 9]range(start, stop, step) — генерирует целые числа от start до stop с интервалами step:list(range(2,10,2))#=> [2, 4, 6, 8]#собеседование
👍38👎5🔥1💩1
Самые популярные вопросы на собеседовании: «В чём разница между func и func()?»
Это совсем несложный вопрос, но многих новичков он ставит в ступор. На самом деле вопрос нужен только для того, чтобы проверить ваше понимание, что все функции в Python также являются объектами:
#собеседование
Это совсем несложный вопрос, но многих новичков он ставит в ступор. На самом деле вопрос нужен только для того, чтобы проверить ваше понимание, что все функции в Python также являются объектами:
def func(): print('Im a function')func#=> function __main__.func>func() #=> Im a functionfunc — это представляющий функцию объект, который можно назначить переменной или передать другой функции. А вот функция func() уже вызывает функцию и возвращает результат. Вот и всё :)#собеседование
👍24❤1
Самые популярные вопросы на собеседовании: «Как работает функция map?»
Обычно, когда нужно обработать и преобразовывать все элементы в итерируемом объекте, первое, что напрашивается, это цикл
Но у
1. Поскольку
2. Второе преимущество использования
То есть
Например, здесь к каждому элементу в списке мы добавляем число 3.
#собеседование
Обычно, когда нужно обработать и преобразовывать все элементы в итерируемом объекте, первое, что напрашивается, это цикл
for.Но у
for есть несколько недостатков, которых можно избежать, используя map():1. Поскольку
map() написан на C и сильно оптимизирован, его внутренний подразумеваемый цикл более эффективен, чем обычный цикл for.2. Второе преимущество использования
map() — потребление памяти. С помощью for вам нужно сохранить весь список. А map() вы получаете элементы по запросу, и только один элемент находится в памяти в данный момент.То есть
map() полезен, когда вам нужно применить функцию преобразования к каждому элементу в коллекции или в массиве и преобразовать их в новый массив. Она возвращает объект (итератор), который перебирает значения, применяя функцию к каждому элементу. В случае необходимости объект можно преобразовать в список:def add_three(x): return x + 3li = [1,2,3]list(map(add_three, li))#=> [4, 5, 6]Например, здесь к каждому элементу в списке мы добавляем число 3.
#собеседование
👍41🔥1
Самые популярные вопросы на собеседовании: «Объясните, как работает функция reduce»
Возвращается 11, то есть сумма 1+2+3+5.
#собеседование
reduce принимает функцию и последовательность — и проходит по этой последовательности. На каждой итерации в функцию передаются как текущий элемент, так и выходные данные предыдущего элемента. В конце концов, возвращается одно значение:from functools import reducedef add_three(x,y): return x + yli = [1,2,3,5]reduce(add_three, li)#=> 11Возвращается 11, то есть сумма 1+2+3+5.
#собеседование
👍29❤2
Самые популярные вопросы на собеседовании: «В чем разница между pass, continue и break?»
Иногда бывает нужно просто ничего не делать. Но Python не позволяет создавать класс, функцию или оператор
Код в примере ниже выдаст ошибку, если внутри
#собеседование
Иногда бывает нужно просто ничего не делать. Но Python не позволяет создавать класс, функцию или оператор
if без кода внутри. Здесь нам помогает заглушка pass — она как раз и означает «ничего не делать».Код в примере ниже выдаст ошибку, если внутри
i > 3 не будет кода, поэтому мы используем pass:a = [1,2,3,4,5]for i in a: if i > 3: pass print(i)#=> 1#=> 2#=> 3#=> 4#=> 5continue отправляет вас к следующему элементу в цикле, останавливая выполнение для текущего элемента. Так print(i) никогда не получает значения i < 3:for i in a: if i < 3: continue print(i)#=> 3#=> 4#=> 5break же полностью прерывает цикл, и последовательность больше не повторяется. В нашем примере на цифре 3 цикл прерывается, а этот и следующие элементы не печатаются:for i in a: if i == 3: break print(i) #=> 1#=> 2#собеседование
👍36❤3💩3
101 вопрос, на который должен ответить Python-разработчик
Периодически на этом канале я разбираю вопросы, которые часто встречаются на собеседованиях. Так вот, у нас на сайте вышла подборка с 101 (!) вопросом, на которые должен знать ответы любой специалист.
Попробуйте ответить на все: https://tproger.ru/articles/101-vopros-python-razrabotchiku/
#собеседование
Периодически на этом канале я разбираю вопросы, которые часто встречаются на собеседованиях. Так вот, у нас на сайте вышла подборка с 101 (!) вопросом, на которые должен знать ответы любой специалист.
Попробуйте ответить на все: https://tproger.ru/articles/101-vopros-python-razrabotchiku/
#собеседование
👍13🔥5👎3🤔2
Помните 101 вопрос, на который должен ответить Python-разработчик?
Так вот вам 101 ответ! А если быть точным, то 99. Не знаю, почему автор упустил 2 ответа, но это и не важно, всё равно это отличная работа.
Если с вопросами вы могли только проверить только факт, знаете вы ответ или нет. То здесь уже можно проверить, насколько вы правы, а если ошиблись — узнать правильный ответ.
#собеседование
Так вот вам 101 ответ! А если быть точным, то 99. Не знаю, почему автор упустил 2 ответа, но это и не важно, всё равно это отличная работа.
Если с вопросами вы могли только проверить только факт, знаете вы ответ или нет. То здесь уже можно проверить, насколько вы правы, а если ошиблись — узнать правильный ответ.
#собеседование
👍16🔥4❤3💩2
Выполняем тестовое задание на джуниора Python-разработчика с зарплатой 70 000 рублей
В видео разобрали тестовое с приложением для конвертации PDF-файлов в MP3 и конвертатором криптовалют с веб-интерфейсом на Django.
Хорошая практика, так ещё и на задачах из реального тестового задания: https://youtu.be/Q0lHb-FCATk
#видео #django #собеседование
В видео разобрали тестовое с приложением для конвертации PDF-файлов в MP3 и конвертатором криптовалют с веб-интерфейсом на Django.
Хорошая практика, так ещё и на задачах из реального тестового задания: https://youtu.be/Q0lHb-FCATk
#видео #django #собеседование
YouTube
Выполняем тестовое задание на Junior Python разработчика с зарплатой 70000р | PDF в MP3
⚡️ Практика Python ⚡️
В данном видео разбираемся в выполнении части тестового задания на Junior Python разработчика с зарплатой 70 тысяч рублей. Напишем программу на Python для конвертации PDF файлов в mp3 файл как на русском так и на английском языках, с…
В данном видео разбираемся в выполнении части тестового задания на Junior Python разработчика с зарплатой 70 тысяч рублей. Напишем программу на Python для конвертации PDF файлов в mp3 файл как на русском так и на английском языках, с…
😁10🤡6👍4💩1👌1
Как работает функция filter?
Вроде бы всё просто, функция делает буквально то, о чём говорит её название, — фильтрует элементы в последовательности. Но давайте разбираться, как именно она это делает.
Основная фишка функции
Например:
Мы получим:
Для базового использования этого понимания должно хватить. Но у
#собеседование
Вроде бы всё просто, функция делает буквально то, о чём говорит её название, — фильтрует элементы в последовательности. Но давайте разбираться, как именно она это делает.
Основная фишка функции
filter в том, что каждый элемент передается функции, которая включает его в последовательность, если по условию получает True, и отбрасывает в случае False.Например:
def add_three(x): if x % 2 == 0: return True else: return Falseli = [1,2,3,4,5,6,7,8][i for i in filter(add_three, li)]Мы получим:
#=> [2, 4, 6, 8}Для базового использования этого понимания должно хватить. Но у
filter также есть несколько особенностей использования, которые важно учитывать при продвинутой разработке. О них подробнее можно почитать в статье.#собеседование
👍5
@pyainter_bot | ИИ-тренер по Python
Разработчики, которые доводят свои пет-проекты до ума, существуют... Один из них создал питонического тренера в Telegram для собеседований. Среди фичей:
— Система начисления очков;
— Множество разделов (Основы Python, ООП, Базы данных, Тестирование и проч.);
— Режим «злого учителя»: бот гоняет вас на слабые темы;
Проект опенсорсный. Если вам захотелось выставить свою LLM и задать ей свои промты, дерзайте.
Репозиторий проекта
#инструмент #собеседование
@zen_of_python
Разработчики, которые доводят свои пет-проекты до ума, существуют... Один из них создал питонического тренера в Telegram для собеседований. Среди фичей:
— Система начисления очков;
— Множество разделов (Основы Python, ООП, Базы данных, Тестирование и проч.);
— Режим «злого учителя»: бот гоняет вас на слабые темы;
Проект опенсорсный. Если вам захотелось выставить свою LLM и задать ей свои промты, дерзайте.
Репозиторий проекта
#инструмент #собеседование
@zen_of_python
❤🔥5👎2❤1