in

Задачи для лайвкодинга на Python: что просят написать на собеседованиях?

Джокер в твоей колоде

Отдел закадров часто устраивает лайвкодинг на собеседованиях. Это один из самых сложных этапов при приёме на работу: учитывая и без того немаленький стресс соискателя, необходимо быстро написать функцию, цикл или придумать имя переменной. Сейчас мы рассмотрим, какие задачи ставят компании перед кандидатом для лайвкодинга.

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

Для новичков, кто смотрит в сторону онлайн-обучения, рекомендуем сначала изучить тотальный обзор курсов разработчиков для Python — https://kursy-online.ru/luchshie-kursy-programmirovaniya-python/. Подберите комфортную дату начала обучения в группе, а также проверьте, чтобы в интервалах между уроками вы успевали делать не только домашнее задание, но и повседневные дела. Предстоит долгий и трудный путь.

Попроще

Начнем с самых простых истин. Эти задачки вы должны отскакивать от вас, как мяч от защитников Манчестер Юнайтед в недавнем матче с Ливерпулем. Начнем с избитой задачки на написание программы для отображения календаря:

#Python program to display calendar

import calendar  
# Get the month and year from the users
year = int(input("Enter the year: "))  
month = int(input("Enter the month: "))  
  
# Displaying the calendar for the given year and month
print(calendar.month(year,month))  

Также вас могут попросить наглядно продемонстрировать работу интерпретатора с арифметическими операциями:

# Read the input numbers from users
num1 = input('Enter the first number: ')
num2 = input('Enter the second number: ')

# Converting and adding two numbers using int() & float() functions
sum = int(num1) + int(num2)

# Subtracting the two numbers  
sub = int(num1) - int(num2)  

# Multiplying two numbers  
mul = float(num1) * float(num2)  

#Dividing two numbers  
div = float(num1) / float(num2) 


# Displaying the results of arithmetic operations
print('The sum of {0} and {1} is {2}'.format(num1, num2, sum))
print('The subtration of {0} and {1} is {2}'.format(num1, num2, sub))
print('The multiplication of {0} and {1} is {2}'.format(num1, num2, mul))  
print('The division of {0} and {1} is {2}'.format(num1, num2, div))

Дальше пройдемся по числам. Пишем скрипт для проверки, является ли число нечетным или четным:

#Python program to check if a number is odd or even

#To get the input from user
num1 = input("Enter a number: ") 

#Checking whether the entered number is odd or even
if (int(num1) % 2) == 0:  
   print("{0} is Even number".format(num1))  
else:  
   print("{0} is Odd number".format(num1))  

А здесь мы ищем максимум двух чисел:

#To read the input value from the user 
num1 = input('Enter the first number: ')
num2 = input('Enter the second number: ')

#Finding the maximum value using Python max() funtion
maximum = max(int(num1), int(num2))

#Displaying the maximum number
print("The maximum number is: ",maximum)

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

# Function to check prime number  
def PrimeChecking(num):  
    # Condition to check given number is more than 1  
    if num > 1:  
        # For look to iterate over the given number  
        for i in range(2, int(num/2) + 1):  
            # Condition to check if the given number is divisible  
            if (num % i) == 0:  
                #If divisible by any number it's not a prime number
                print("The number ",num, "is not a prime number")  
                break  
        # Else print it as a prime number  
        else:  
            print("The number ",num, "is a prime number")  
    # If the given number is 1  
    else:  
        print("The number ",num, "is not a prime number")  
# Input function to take the number from user  
num = int(input("Enter a number to check prime or not: "))  
# To print the result, whether a given number is prime or not  
PrimeChecking(num)

Как можно найти факториал числа без использования конструкции if-else? Это можно сделать через встроенную функцию math.factorial(), которая возвращает факториал заданного числа:

# Python program to find factorial of a given number

#importing the math function
import math

#Defining the factorial() function to find factorial
def factorial(num):
    return(math.factorial(num))


# Input function to get the number from user
num = int(input('Please enter a number to find the factorial: '))

#Printing the factorial of the given number
print("The factorial of the given number", num, "is",
    factorial(num))

После чисел перейдем к тексту. Тоже довольно тривиальная и часто встречающаяся задачка. Нужно найти все гласные в конкретной строке:

#Python Program to Find Vowels From a String
#defining a function

def get_vowels(String):
    return [each for each in String if each in "aeiou"]
get_string1 = "hello" # ['e', 'o']
get_string2 = "python is fun" # ['o', 'i', 'u']
get_string3 = "coding compiler" # ['o', 'i', 'o', 'i', 'e']
get_string4 = "12345xyz" # []


#Let's print vowels from the given strigns
#Vowels from first string
print("The Vowels Are:  ",get_vowels(get_string1))

#Vowels from second string
print("The Vowels Are:  ",get_vowels(get_string2))

#Vowels from third string
print("The Vowels Are:  ",get_vowels(get_string3))

#Vowels from fourth string
print("The Vowels Are:  ",get_vowels(get_string4))

А теперь пройдемся по геометрии. Как вычислить площадь треугольника. Наглядно:

# Python Program to find the area of a triangle

# Get the 3 sides of a triangle from the user
s1 = float(input('Enter first side value: '))
s2 = float(input('Enter second side value:'))
s3 = float(input('Enter third-side value:'))

#Calculating the semi-perimeter of a triangle
sp = (s1 + s2 + s3) / 2

#Calculating the area of a triangle
area = (sp*(sp-s1)*(sp-2)*(sp-s3)) ** 0.5

#Printing the area of the triangle
print('The area of the triangle is: ', area)

Также могут попросить написать программу  для отображения таблицы умножения с помощью цикла for. Это тоже несложно:

#Python program to display multiplication table

#Get the number from the user for multipication table
tab_number = int(input ("Enter the number of your choice to print the multiplication table: "))      

#For loop to iterate the multiplication 10 times and print the table   
print ("The Multiplication Table of: ", tab_number)    
for count in range(1, 11):      
   print (tab_number, 'x', count, '=', tab_number * count)

Программа Python для демонстрации неявного преобразования типов:

#Implicit type casting example
get_num1 = 199 #int
get_num2 = 1.25 #float
get_num3 = get_num1 + get_num2 #int+float=?

print("Datatype of get_num1:",type(get_num1))
print("Datatype of get_num2:",type(get_num2))

print("The value of get_num3 is:",get_num3) 
print("Datatype of get_num3:",type(get_num3)) 

#Implicit conversion - Python always converts smaller data types to larger data types to avoid the loss of data.

Посложнее

Пакет пространства имён — собой совокупность различных частей, где каждая часть вносит подпакет в родительский пакет. Это полезно, когда вы хотите выпустить связанные библиотеки в виде отдельных загрузок. Знаете как его создать?

Package-1/namespace/__init__.py
Package-1/namespace/module1/__init__.py
Package-2/namespace/__init__.py
Package-2/namespace/module2/__init__.py
the end-user can import namespace.module1 and import namespace.module2.

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

>>> class MyClass:
...     i = 3
...
>>> MyClass.i
3 

#This creates a class-level i variable, but this is distinct from any instance-level i variable, so you could have

>>> m = MyClass()
>>> m.i = 4
>>> MyClass.i, m.i
>>> (3, 4)

Добавим немного ООП и функций

Как вызвать суперконструктор в Python? Существует несколько способов вызова методов суперкласса (включая конструктор). Вот один из самых простых:

class A(object):
 def __init__(self):
   print("world")

class B(A):
 def __init__(self):
   print("hello")
   super().__init__()

Зачем нужен __slots__ в Python? Это специальный атрибут, который позволяет явно указать, какие атрибуты экземпляра ожидаются от экземпляров вашего объекта, с ожидаемыми результатами:

class Base:
    __slots__ = 'foo', 'bar'

class Right(Base):
    __slots__ = 'baz', 

class Wrong(Base):
    __slots__ = 'foo', 'bar', 'baz'        # redundant foo and bar

Скорее всего вас попросят продемонстрировать умение работать с лямбда-функциями. Python поддерживает стиль программирования, называемый функциональным программированием, когда вы можете передавать функции другим функциям, чтобы они выполняли определенные действия. Пример:

def filterfunc(x):
return x % 3 == 0
mult3 = filter(filterfunc, [1, 2, 3, 4, 5, 6, 7, 8, 9])

Как определить имя функции внутри функции без использования трассировки? Предположим у нас есть функция foo. При выполнении foo.bar() есть ли способ узнать имя бара? Или еще лучше, имя foo.bar?

#foo.py  
def bar():
    print "my name is", __myname__ # <== how do I calculate this at runtime?

Способ есть:

import inspect

def foo():
   print(inspect.stack()[0][3])
   print(inspect.stack()[1][3])  # will give the caller of foos name, if something called foo

foo()

#output:

foo
<module_caller_of_foo>

Списки

Как пройти список в обратном порядке в Python? Поскольку enumerate() возвращает генератор, а генераторы нельзя обратить вспять, вам нужно сначала преобразовать его в список.

#Use the built-in reversed() function:

>>> a = ["foo", "bar", "baz"]
>>> for i in reversed(a):
...     print(i)
... 
baz
bar
foo

#To also access the original index, use enumerate() on your list before passing it to reversed():

>>> for i, e in reversed(list(enumerate(a))):
...     print(i, e)
... 

2 baz
1 bar
0 foo

Попробуйте случайным образом выбрать элемент из списка foo = [‘а’, ‘б’, ‘с’, ‘г’, ‘е’]

Use random.choice():

import random

foo = ['a', 'b', 'c', 'd', 'e']
print(random.choice(foo))

Как удалить элемент из списка по индексу в Python?

>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> del a[-1]
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8]

#Also supports slices:

>>> del a[2:4]
>>> a
[0, 1, 4, 5, 6, 7, 8, 9]

Это лишь малая часть того, что просят написать на собеседованиях. Будем считать это небольшой шпаргалкой.

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

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