Python вопросы с собеседований
25K subscribers
513 photos
18 videos
17 files
411 links
Вопросы с собеседований по Python

@workakkk - админ

@machinelearning_interview - вопросы с собесдований по Ml

@pro_python_code - Python

@data_analysis_ml - анализ данных на Python

@itchannels_telegram - 🔥 главное в ит

РКН: clck.ru/3FmrFd
Download Telegram
Какие библиотеки установлены в питоне по-умолчанию?

Встроенные модули

Список встроенных модлей из стандартной библиотеки Питона смотрите в докментации: The Python Standard Library.

Из перечисленных встроенными являются collections, datetime, gc, json. Остальные необходимо устанавливать отдельно, например, через пакетный менеджер Питона pip.

Порядок импортов
Помимо этого, в соответствии с официальными рекомендациями PEP, порядок подключения библиотек следует использовать такой:

Стандартные библиотеки.
Используемые сторонние модули.
Локальные модули вашего приложения/библиотеки.
В некоторых источниках также советуют отделять несколько импортов из одного модуля, а импорты с общей приоритетностью сортировать в алфавитном порядке.

Например, вот так:

# Стандартные модули
from collections import defaultdict
import datetime
import gc
import json

# Сторонние модули
from clickhouse_driver import Client
import psycopg2
import tqdm

# Отдельно несколько строк с Торнадо
from tornado.web import Application, RequestHandler
from tornado.ioloop import IOLoop


Виртуальное окружение с зависимостями
Если в проекте много кода с разными зависимостями, то для выявления используемых библиотек следует использовать виртуальное окружение, например, модуль virtualenv. Виртуальное окружение позволяет инкапсулироваться от модулей, установленных в Питоне глобально, устанавливая библиотеки с нужными версиями в рамках конкретного проекта. По этой теме много статей как на английском, так и на русском. При запуске проекта в виртуальном окружении Вы увидите ошибки о недостающих библиотеках, которые нужно установить в локальном окружении проекта.

Однако виртуальные окружения существуют для использования модулей на месте, они не сохраняются в системах контроля версий. Для этого используется файл requirements.txt, в котором описываются нужные библиотеки и опционально их версии. Для быстрого создания этого файла можно заморозить текущие библиотеки из локального pip'a, а при создании нового окружения можно будет их легко установить из этого файла. Подробнее читайте в документации: PIP > User Guide > Requirements Files.

@python_job_interview
👍12🔥32
Что такое GIL?

GIL или Global Interpreter Lock — это мьютекс, используемый для ограничения доступа к объектам Python. Он синхронизирует потоки и предотвращает их одновременное выполнение.

↪️ Подробно про GIL

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍161🔥1
🖥 Что означает пространство имен?

Ответ

Пространство имен представляет собой систему имен, которая используется для обеспечения уникальности наименования всех объектов в программе, чтобы избежать возможных конфликтов. В Python эти пространства имен реализованы как словари с именем в качестве ключа и объектом в качестве значения. В результате разные пространства могут давать своим объектам одинаковые имена.

Ниже приведены три типа пространств имен в Python:

- Локальное пространство имен — включает локальные имена внутри функции. Локальное пространство имен временно создается во время вызова функции и очищается при возврате из нее.

- Глобальное пространство имен — состоит из имен различных импортированных пакетов/модулей, которые в настоящее время используются в проекте. Глобальное пространство имен создается при импорте пакета в скрипт, и оно доступно до тех пор, пока скрипт не закончит выполнение.

- Встроенное пространство имен — оно включает встроенные функции Python и встроенные имена для различных типов исключений.

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥21
🔥 Полезнейшая Подборка каналов

🖥 Python

@pythonl
@pro_python_code – погружение в python
@python_job_interview – подготовка к Python собеседованию
@python_testit тесты на python
@pythonlbooks - книги Python
@Django_pythonl django
@python_djangojobs - работа Python
@python_django_work

🖥 Machine learning
@ai_machinelearning_big_data – все о машинном обучении
@data_analysis_ml – все о анализе данных.
@machinelearning_ru – машинное обучении на русском от новичка до профессионала.
@machinelearning_interview – подготовка к собеседования Data Science
@datascienceiot – бесплатные книги Machine learning
@ArtificialIntelligencedl – канал о искусственном интеллекте
@neural – все о нейронных сетях
@machinee_learning – чат о машинном обучении
@datascienceml_jobs - работа ds, ml
@Machinelearning_Jobs

🖥 Java
@javatg - Java для програмистов
@javachats Java чат
@java_library - книги Java
@android_its Android разработка
@java_quizes - тесты Java
@Java_workit - работа Java
@progersit - шпаргалки ит

🖥 Javascript / front
@javascriptv - javascript изучение
@about_javascript - javascript продвинутый
@JavaScript_testit -тесты JS
@htmlcssjavas - web
@hashdev - web разработка

👣 Golang
@golang_interview - вопросы и ответы с собеседований по Go. Для всех уровней разработчиков.
@Golang_google - go для разработчиков
@golangtests - тесты и задачи GO
@golangl - чат Golang
@GolangJobsit - вакансии и работа GO
@golang_jobsgo - чат вакансий
@golang_books - книги Golang
@golang_speak - обсуждение задач Go

🖥 Linux
@linux_kal - чат kali linux
@linuxkalii - linux kali
@linux_read - книги linux

👷‍♂️ IT работа

@hr_itwork - ит-ваканнсии

🖥 SQL
@sqlhub - базы данных
@chat_sql - базы данных чат

🤡It memes
@memes_prog - ит-мемы

⚙️ Rust
@rust_code - язык программирования rust
@rust_chats - чат rust

#️⃣ c# c++
@csharp_ci - c# c++кодинг
@csharp_cplus чат

📓 Книги

@programming_books_it
@datascienceiot
@pythonlbooks
@golang_books
@frontendbooksit
@progersit
@linux_read
@java_library
@frontendbooksit

📢 English for coders

@english_forprogrammers - Английский для программистов

🖥 Github
@github_code
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81🔥1
В чем разница между модулем и пакетом в Python?

Ответ
Каждый программный файл Python представляет собой модуль, который импортирует другие модули как объекты. Таким образом, модуль — это способ структурирования вашей программы. Папка с программой на Python называется пакетом модулей.

↪️ Читать дальше

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92🔥1
Как изменить тип данных списка?

Чтобы преобразовать список в кортеж, мы используем функцию tuple().
Чтобы превратить его в множество — функцию set().
Для преобразования в словарь — dict().
Для превращения в строку — join().

@python_job_interview
👍142🔥2
🧑‍💻 Собеседование Senior Python Developer на $6000

↪️ Смотреть видео

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72👎1🔥1
🖥 Объясните использование функций help() и dir()

Ответ
В Python функция help() используется для отображения документации по модулям, классам, функциям, ключевым словам и так далее. Если help() не получает параметров, она запускает интерактивную справочную утилиту на консоли.

Функция dir() возвращает допустимый список атрибутов и методов объекта, к которому она вызывается. Поскольку функция предназначена для получения наиболее релевантных данных (вместо отображения полной информации), она ведет себя по-разному с разными объектами:

- Для модулей/библиотек функция dir() возвращает список всех атрибутов, содержащихся в этом модуле.

- Для объектов класса dir() вернет список всех допустимых атрибутов и базовых атрибутов.

- Когда ей не передаются никакие параметры, функция dir() возвращает список атрибутов в текущей области видимости.

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍121🔥1
Какой метод использовался до оператора «in» для проверки наличия ключа в словаре?

Ответ

Метод has_key().

Ниже приводится синтаксис для метода has_key():

dict.has_key(key)


Параметры
key – это ключ, который нужно искать в словаре.
Возвращаемое значение
Этот метод возвращает true, если данный ключ доступен в словаре, иначе он возвращает false.

Пример
В следующем примере показано использование метода has_key().

#!/usr/bin/python3

dict = {'Name': 'AndreyEx', 'Age': 18}

print ("Значение : %s" % dict.has_key('Age'))
print ("Значение : %s" % dict.has_key('Sex'))



Когда мы запускаем указанную выше программу, она дает следующий результат:

Значение : True
Значение : False


@python_job_interview
👍153🔥1
🖥 В чем смысл параметров_value, __value?

Поле класса с одним лидирующим подчеркиванием говорит о том, что параметр используется только внутри класса. При этом он доступен для обращения извне.

class Foo(object):
def __init__(self):
self._bar = 42

Foo()._bar
>>> 42


Современные IDE вроде PyCharm подсвечивают обращение к полю с подчеркиванием, но ошибки в процессе исполнения не будет.

Поля с двойным подчеркиванием доступны внутри класса, но недоступны извне. Это достигается хитрым приемом: интерпретатор назначает таким полям имена вида _<ClassName>__<fieldName>. Зная это правило, можно получить значение скрытого поля вне класса, но это смотрится очень уродливо.

class Foo(object):
def __init__(self):
self.__bar = 42


Foo().__bar
>>> AttributeError: 'Foo' object has no attribute '__bar'
Foo()._Foo__bar
>>> 42


@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍172🔥1
Все знают, что сегодня питон в моде. Но истинное принятие новой технологии подразумевает понимание ее недостатков. Что вы можете сказать по этому поводу?

Ответ

Какие в питоне есть ограничения:

- интерпретируемая природа питона снижает скорость исполнения программы
- его не выгодно использовать для мобильных устройств и браузеров
- будучи языком с динамической типизацией данных, он использует утиную типизацию; в связи с этим появляются ошибки исполнения (runtime errors);
- в нем слабо развиты возможности доступа к базам данных; поэтому питон не идеальный вариант для приложений с очень большими базами данных;
- низкие требования на входе, то есть свои силы в питоне может попробовать каждый; это иногда снижает качество кода;
- у питона индивидуально выраженный стиль.

@python_job_interview
👍16👎4🔥21
Как в питоне узнать, в какой мы сейчас директории?

 Ответ

>>> import os
>>> os.getcwd()
"C:\\Users\\lifei\\AppData\\Local\\Programs\\Python\\Python36-32"


@python_job_interview
👍18🔥32
🖥 Напишите функцию, которая будет принимать два списка чисел (вложенный и обычный) и проверять, все ли числа в подсписках вложенного принадлежат множеству чисел второго, обычного списка

Примечания:
1) пустой список считаем валидным подмножеством множества чисел второго списка
2) в каждом отдельном списке (как во вложенных, так и во втором, обычном списке) числа будут уникальными.

@python_job_interview
👍12🔥31👎1
Какой результат выводит данный код:

>>> def extendList(val, list=[]):
list.append(val)
return list
>>> list1 = extendList(10)
>>> list2 = extendList(123,[])
>>> list3 = extendList('a')
>>> list1, list2, list3
[10, ‘a’], [123], [10, ‘a’]


Ответ
Возможный, но неверный ответ: ([10], [123], [‘a’])

В функции есть аргумент list=[], который не запускается в нулевом значении при каждом вызове этой функции. Когда мы первый раз определяем функцию, она создает новый список. Затем, каждый раз, когда мы вызываем данную функцию без аргумента-списка, она использует один и тот же список. Питон исполняет выражения, которые имеют нулевые значения, при определении функции, а не при вызове функции.


@python_job_interview
👍18🔥3👎21🤔1
Как работать с числами, которые не входят в десятичную систему счисления?

Ответ

В питоне можно вводить бинарные, восьмеричные и шестнадцатеричные числа.

Бинарные. Это числа, составленные из 0 и 1. Для ввода в бинарном формате, используется префикс 0b или 0B:

>>> int(0b1010)
10


Число можно преобразовать в бинарный формат с помощью функции bin():

>>> bin(0xf)
‘0b1111’


Восьмеричные числа могут состоять из цифр от 0 до 7, также используется префикс 0o или 0O:

>>> oct(8)
‘0o10’


Шестнадцатеричные числа могут состоять из цифр от 0 до 15, также используется префикс 0x или 0X:

>>> hex(15)
‘0xf’


@python_job_interview
👍171🔥1
Что такое операторы присвоения в питоне?

Ответ

Все арифметические операторы можно комбинировать с символом присвоения.

>>> a = 7
>>> a += 1
>>> a
8

>>> a -= 1
>>> a
7

>>> a *= 2
>>> a
14

>>> a /= 2
>>> a
7.0

>>> a **= 2
>>> a
49.0

>>> a // =3
>>> a
16.0

>>> a %= 4
>>> a
0.0


@python_job_interview
👍21🌚31🔥1
Сколько аргументов может принять range()

Ответ
От одного до трех:

>>> list(range(5))
[0, 1, 2, 3, 4]
>>> list(range(-5))
[]
>>> list(range(2, 7))
[2, 3, 4, 5, 6]
>>> list(range(-3, 4))
[-3, -2, -1, 0, 1, 2, 3]
>>> list(range(2, 9, 2))
[2, 4, 6, 8]
>>> list(range(9, 2, -1))
[9, 8, 7, 6, 5, 4, 3]


@python_job_interview
👍17🔥41
Что плохого в следующем коде?

Ответ:
В Python нет объявлений переменных, поэтому он должен сам определить их область действия. Если внутри функции имеется обращение к переменной, то она считается локальной. Переменная count выше является глобальной, поэтому код выбрасывает ошибку.

@python_job_interview
👍315🔥4
Расскажите, какой в питоне механизм передачи параметров

Ответ

В питоне используется передача параметров по ссылке. Если изменить параметр внутри функции, то это отразится на выводе функции. Однако, если использовать в качестве параметров литералы (строки, числа, кортежа), то они передаются по значению (потому что они не изменяемые).

Рассмотрим следующий пример:

def foo(x):
x = 4

a = 3
foo(a)
print(a)
# 3

Функция вызывается, но изменения оказанные на переменную a больше не действую после возврата из функции, ведь a всё ещё равна 3. Поэтому может показаться, что используется передача по значению, но это не так. Python не копирует значения параметров при вызове функции. Если мы рассмотрим другую функцию:

def clearly_not_pass_by_value(my_list):
my_list[0] = 42

l = [1, 2, 3]
clearly_not_pass_by_value(l)
print(l)
# [42, 2, 3]


— то мы четко видим, что элемент исходного списка l был изменен после вызова функции.

При передачи по ссылке в момент вызова функции передаются адреса переменных, причем с адресами работают так, как если бы это была обычная переменная (поэтому не нужно дополнительно проводить разыменование, как это делается в Си). Такая модель подразумевает, что исходные переменные и параметры функции — это одни и те же объекты. Изменяя параметры в теле функции, вы изменяете их и в вызывающем контексте.

@python_job_interview
👍17🤔4👎2🔥21
🖥 Что делает питон объектно-ориентированным?

Ответ

Он следует парадигме объектно-ориентированного программирования, которая построена вокруг классов (classes) и их экземпляров (instances). Это позволяет реализовать следующие функции:
- сокрытие внутренней структуры данных
- абстракция
- наследование
- полиморфизм (способность выбирать правильный метод в зависимости от типа данных)
- ограничение доступа к данным

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍194🔥2🙏1