Питона скрининга собеседования Вопросы для данных ученых
фото Мариус Масалар на Бессмысленно
Danascience требует междисциплинарного набора навыков, от обработки баз данных, для работы статистической модели, для настройки бизнеса и самого программирования. Чаще, чем не технические интервью для ученых-ученых на данных, оценивают больше знаний о конкретных аписах управления данными, таких как панды, ск.
Хотя я думаю, что знание более «прикладных» API – это то, что следует протестировать при найме данных-ученого, так и знания более традиционного программирования.
String Reversal & Palindreome
Вопросы разворота String могут предоставить некоторую информацию о том, насколько хорошо определенные кандидаты были связаны с текстом в Python и при обращении с основными операциями.
Вопрос 1:
Вопрос: Обратить вспять строку “” Фокс прыгает над ленивой собакой “
Отвечать:
a = "the fox jumps over the lazy dog" a[::-1] or ''.join(x for x in reversed(a)) [less efficient] or ''.join(a[-x] for x in range(1, len(a)+1)) [less efficient]
Оценка:
- Это больше вопроса разминки, чем все остальное, и хотя хорошо знать ярлык, особенно как оно обозначает некоторые знания о том, как Python предлагает строки (например, А [0: 7] для лисицы) не нужно для большинства целей данных-науки
Вопрос 2:
Вопрос:|: Идентичность всех слов, которые являются палиндромами в следующем предложении «LOL, это GAG, я не смеялся так много в течение длительного времени»
Отвечать:
def isPalindrome(word: str) -\> bool: if(word == word[::-1]): return True return False def getPalindromesFromStr(inputStr: str) -\> list: cleanStr = inputStr.replace(",","").lower() words = set(cleanStr.split(" ")) wPalindromes = [ word for word in words if isPalindrome(word) and word != "" ] return wPalindromes getPalindromesFromStr("Lol, this is a gag, I didn't laugh so much in a long time")
Оценка:
- Делает ли кандидат о уборке его/ее входов?
- Кандидат знает базовую или слово обработки в Python, таких как замена/разделение/ниже?
- Кандидат умеет использовать понимание списка?
- Как кандидат структура его/ее код?
Fizzzbuzz.
Fizzbuzz – это традиционный вопрос скрининга программирования, который позволяет тестировать, может ли кандидата может подумать с проблемой, которая не просто, если ищешь оператор. Подход, который они принимают, также могут пролить свет на их понимание языка.
Вопрос: Напишите программу, которая печатает номер от 1 до 50, для числа множества 2 печати Fizz вместо номера, для номеров, кратчайших 3 печать, для чисел, которые множественны как 2 и 3 FizzCuzz.
Отвечать:
def fizzbuzzfn(num) -\> str: mod\_2 = (num % 2 == 0) mod\_3 = (num % 3 == 0) if (mod\_2 or mod\_3): return (mod\_2 \* 'Fizz') + (mod\_3 \* 'Buzz') return str(num) print('\n'.join([fizzbuzzfn(x) for x in range(1,51)]))
Оценка:
- Знаете ли они оператора модуля и способны применить его?
- Они хранят результат операторов модуля в переменных для повторного использования?
- Они понимают, насколько верно/ложь взаимодействует со строкой?
- Они бомбардируют свой код с помощью утверждений?
- Они возвращают постоянный тип или смешивают как целое число, так и строку?
Первое дубликат слово
Первое нахождение дубликата слова позволяет идентично, если кандидаты знают базовые текстовые обработки в Python, а также могут обрабатывать некоторые основные структуры данных.
Вопрос 1
Вопрос: Учитывая строку найти первое дубликат слово, пример строки: «Это просто чудо, удивляйтесь, почему я имею в виду»
Отвечать:
string = "this is just a wonder, wonder why do I have this in mind" def firstduplicate(string: str) -\> str: import re cleanStr = re.sub("[^a-zA-Z -]", "", string) words = cleanStr.lower().split(" ") seen\_words = set() for word in words: if word in seen\_words: return word else: seen\_words.add(word) return None firstduplicate(string)
Оценка:
- У меня есть ограничение, с которыми мне нужно работать, например, с точки зрения памяти?
- Очищает строку от пунктуации? Заменить или регулировать Если использование Regexp заменить, я должен скомпилировать выражение Regexp или использовать его напрямую?
- Знает правильную структуру данных для проверки наличия.
- Это прекращает функцию, как только матч найден или?
Вопрос 2:
Вопрос: Что если мы хотели найти первое слово с более чем 2 дубликатами в строке?
Отвечать:
string = "this is just a wonder, wonder why do I have this in mind. This is all that matters." def first2timesduplicate(string: str) -\> str: import re cleanStr = re.sub("[^a-zA-Z -]", "", string) words = cleanStr.lower().split(" ") seen\_words = dict() for word in words: previous\_count = seen\_words.get(word, 0) seen\_words[word] = previous\_count + 1 if previous\_count \>= 2: return word return None first2timesduplicate(string)
Оценка:
- Необходима небольшая модификация, необходима для того, чтобы иметь возможность вместить это изменение, основной вытекает при использовании структуры данных словаря, а не набора. Счетчики также являются действительной структурой данных для этого использования.
- Немало трудно изменить предыдущую функцию, чтобы справиться с этим запросом на изменение, стоит проверять, что кандидат создает конкретный ключ правильно, принимая во внимание значения по умолчанию.
Быстрые огневые вопросы
Некоторые быстрые пожарные вопросы также могут попросить проверить общие знания языка Python.
Вопрос 1:
Вопрос: Повторить сумму для любого количества переменных, например, сумма (1,2,3,4,5 ..)
Отвечать
def sum(\*args): val = 0 for arg in args: val += arg return val
Оценка:
- Быстрый интервью Вопрос, чтобы проверить знание переменных аргументов и как настроить одну из самых основных функций.
Вопрос 2:
Вопросы вокруг серии FIBONACCI – это классика интервью программирования, а кандидаты должны в целом, по крайней мере, знакомы с ними. Они позволяют проверить рекурсивное мышление.
Вопрос: Последовательности Фибоначчи определяются как следует следующие:
F\_0 = 0 ; F\_1 = 1 F\_n = F\_{-1} + F\_{-2}
Напишите функцию, которая дает сумму всех чисел фибоначчи от 0 до n.
Отвечать:
def fibonacci(n: int) -\> int: # fib series don't exist \< 0 # might want to throw an error or a null # for that if n \<= 0: return 0 if n == 1: return 1 else: return fibonacci(n-1) + fibonacci(n-2) def naiveFibSum(n: int) -\> int: return sum([fibonacci(x) for x in range(0, n+1)]) def sumFib(n: int) -\> int: return fibonacci(n + 2) -1
Оценка:
- Во-первых, кандидат может думать рекурсивно?
- Кандидат только думает о наивном решении суммы серии FIBONACCI или он понимает, что он также может обобщить до более эффективного способа?
Заворачивать
Эти вопросы предназначены для того, чтобы быть первым скринингом для ученых данных и должны сочетаться со статистическими типовыми типами вопросов манипуляций. Они предназначены для быстрого взгляда на то, у кандидата есть основные минимальные знания, чтобы пройти через полное интервью.
Более современные программированные вопросы для Python будут иметь тенденцию покрывать использование генераторов, декораторов, циска или эффективного использования библиотек, таких как Pandas/Numpy.
Больше от меня на Хакерская аналитика :
- Вопросы собеседования SQL для начинающих данных ученого – гистограмма
- Станьте Pro в Пандах, библиотеку манипулирования данных Python
- Анализ электронной коммерции: данные-структуры и приложения
- Настройка воздушного потока на Azure и подключение к MS SQL Server
- 3 Простые правила для создания моделей машинного обучения, которые добавляют значение
Оригинал: “https://dev.to/julienkervizic/python-screening-interview-question-for-datascientists-30g4”