Савельева Анастасия (Барнаул) собеседование python разработчик

  Рет қаралды 3,987

Андрей += Пронин

Андрей += Пронин

4 ай бұрын

t.me/KZbinPronin
Чат для общения python разработчиков и им сочуствующих. Свободное общение, тестовые и вопросы с собесов и прочее. Заходите, там вам рады.
Поддержать канал: www.tinkoff.ru/rm/pronin.andr...
Обычно денежка идёт на книжки про питончик. Но иногда на светлое и тёмное.
Если Тиньков не даёт перечислить, стукните в личку телеги andpronin, придумаем что нибудь
Виш лист
Хорошие книги по Питончику, которые могу рекомендовать (и хочу купить с вашей помощью).
Изучаем Python. Двухтомник. Марк Лутц. Очень подробно и структурно (Хочу дождаться 6го издания.. )
• Изучаем Python с Марко...
Читаем и разбираем ее тут
Куплено (огромное спасибо зрителям)
Знакомство с Python | Бейдер Дэн (2023) - выглядит приятно для новичка
Чистый Python. Тонкости программирования для профи | Бейдер Дэн (2022) - хорошо для продолжения
Высоконагруженные приложения. Программирование, масштабирование, поддержка | Клеппман Мартин
Python. К вершинам мастерства | Рамальо Лучано - 2е издание - сложно для новичка, но интересно
Паттерны разработки на Python: TDD, DDD и событийно-ориентированная архитектура -- хорошо про то, когда какой фреймворк применять
Видимо, дальше появтся еще нескромные желания. Но пока - так
Моя тележка andpronin -- стучите, если что.
Мой канал про обучению python с нуля и до мидла Андрей+=Пронин
/ @pypronin
Я в других сетях
🔗Вконтакте: CaptPronin
🔗Дзен: zen.yandex.ru/id/5fbd33919412...
#python #питон #программирование #Андрей_Пронин #собеседование #

Пікірлер: 48
@MGIMOmsk
@MGIMOmsk 4 ай бұрын
Очень полезный фидбэк. Спасибо!
@Korlaa
@Korlaa 4 ай бұрын
Спасибо за мок-собес! И задача интересная была. Интересна судьба собеседуемых, насколько быстро они потом устраиваются в итоге
@dmitriyb2438
@dmitriyb2438 3 ай бұрын
хотелось бы звук чуть получше, при монтаже можно выровнять
@Chel1k7
@Chel1k7 4 ай бұрын
вообще то в питоне можно перевести в int число даже у которого 1000 символов
@vladimirdo
@vladimirdo 4 ай бұрын
Жиза
@mikeofs1304
@mikeofs1304 4 ай бұрын
Причем даже если принять , полагаемую Олегом историю , что питоновский int этот как например в шарпах 4 байта, то его идея с накоплением в словаре сумм по разрядам, может запросто опять упереться в переполнение, если входной массив будет больше нескольких сот миллионов например
@sniiick
@sniiick 4 ай бұрын
@mikeofs1304 ​идея не в накоплении сумм в словаре, а в записи поразрядно в словарь, где ключи - разряды. Причем двигать разряды можно сразу при переходе через базу, а не накапливать суммы чтобы потом высчитать какие разряды мы должны далее подвинуть и насколько. Я вижу решение через рекурсию и divmod. Насчет длины инта, он то конечно UInt, но ValueError: Exceeds the limit (4300 digits) for integer string conversion
@user-zm2fm5mr9d
@user-zm2fm5mr9d 4 ай бұрын
я тоже не понял, у меня всё посчитало нормально
@igorz5804
@igorz5804 4 ай бұрын
Ну да, вроде же всё так. Сделал паузу, не смотрел дальше поставленного условия. Перепроверил себя. В python 2 у инта был потолок в sys.maxint, в python 3 это убрали. Лимита нет (по доке). Т.е. кастанули из строки в инт и сложили. Всё.
@user-lk6is8iz9i
@user-lk6is8iz9i 4 ай бұрын
def foo(lst: list[str]) -> str: a = list(map(int, lst)) return f'your sum in list = {sum(a)}' print(foo([])) программирую 2 месяца, подскажите где ошибка ПОЖАЛУЙСТА
@user-xl5qw5si5f
@user-xl5qw5si5f 4 ай бұрын
Суть задачи в том, чтобы придумать алгоритм без перевода в int
@user-yx1xm1uw3k
@user-yx1xm1uw3k 4 ай бұрын
в целом твой код отработает, но он вернет сумму в типе int т.к ты находишь сумму элементов в списке, где элементами являются целые числа, если на выходе должна получиться строка, переведи в строковой тип.
@user-vj9uu6xd2b
@user-vj9uu6xd2b 4 ай бұрын
Может этот вопрос задают часто, но как попасть к вам на мок собеседование?
@slizverg23
@slizverg23 4 ай бұрын
Отучиться в Яндекс-практикуме для начала)
@7IdE
@7IdE 4 ай бұрын
На самом деле было больно смотреть - перемотал большую часть видоса. Софтовая часть - прям слишком размыта. На 15 минут растянуто, но при этом полезной информации там на минуту максимум. Написание кода - это тоже был провал. Dict? dict(100)? i для итерации по элементам? dict1? PEP8? Спросить про отрицательные числа/с плавающей точкой? И решение этой задачи в принципе нужно было начинать с фразы "в Питоне нет переполнения типов и 100 символов - не приговор". Да и все вот эти фразы "как нас учили", "ой, я не знаю" и тд - за это отдельный минус. Ну и также скорость печати тоже далеко не на высоте. И все это приведет к написанию неподдерживаемого неоптимального кода. Тут не просто алгосы решать нужно, а в целом просто писать код / решать задачки на Питоне. Мб на стажировку и устроит кого-то, но не думаю, что выше.
@nebesnistalker
@nebesnistalker 25 күн бұрын
Харизматичная девушка)
@TheLineHit
@TheLineHit 6 күн бұрын
import random def func(lst: list) -> int: return sum(list(map(int, lst))) arr_numbers = list(map(str, [random.randint(10**10, 10**15) for i in range(20)])) print(func(arr_numbers))
@kaluginpeter
@kaluginpeter 4 ай бұрын
В течении первых 10-15 секунд на ум пришло проитерироваться за линию и все посчитать. def count_sum(arr: list) -> str: count: int = 0 for obj in arr: top: int = 0 for char in obj: top = top * 10 + int(char) count += top ans: str = '' while count: ans = str(count % 10) + ans count //= 10 return ans Speed O(N) Memory O(N) Если не переводить число в строку, то память константа выходит. Но и по желанию, можно и через хеш таблицу реализовать, но тогда, если не требуется переводить число в строку, то память уже будет O(K), где K - это количество цифр в данной системе счисления. Учусь в Яндекс Практикуме на питон разработчика, но активно делаю упор на алгосы
@alexz7537
@alexz7537 3 ай бұрын
Разве у тебя не O(N**2) будет по скорости? Цикл в цикле.
@mans66_
@mans66_ Ай бұрын
звук ужасный, слушать и смотреть из за этого не возможно и не хочется
@MrKorwin1
@MrKorwin1 4 ай бұрын
def same_func(value:list[str]) -> str: result ='' naum = 0 for i in range(len(value[0])-1,-1,-1): for j in value: naum += int(j[i]) if naum > 9: result += str(naum)[1] naum = 1 else: result += str(naum) naum = 0 return(result[::-1])
@mikeofs1304
@mikeofs1304 4 ай бұрын
Тут такое дело, в пехоне строки иммутабельны, так что по памяти эт овсе будет очень грустно. Незря интервьюер предложил словарь, ох незря.
@indawl
@indawl 4 ай бұрын
1. кто сказал что строки с числами имеют одинаковую длину? 2. почему в уме только 1? допустим в value 9 чисел 99, 9*9 = 81, т.е. в уме должно быть 8 3. зачем реверсить строку, если можно добавлять не в конец, а в начало 4. куда делось последнее число в уме? 9+9 != 8
@indawl
@indawl 4 ай бұрын
@@mikeofs1304 бред, словарь для решения этой задачи, вот что действительно грустно.
@mikeofs1304
@mikeofs1304 4 ай бұрын
@@indawlаргументов конечно не будет))) Олег , я так понимаю , по вашему то же бредит? аааааааааа, " допустим в value 9 чисел 99, 9*9 = 81, т.е. в уме должно быть 8" - е если будет двадцать пять миллионов чисел 99999, чо делать будешь ?
@indawl
@indawl 4 ай бұрын
@@mikeofs1304 1. представь что там не 100 символов а 1000000000000000, словарь явно плох будет при таком раскладе 2. Олег не бредит, он предложил один из вариантов в лоб и хотел посмотреть как она будет развивать эту мысль 3. при чем тут "если будет двадцать пять миллионов чисел 99999"? я привел вариант, что один в уме некорректное решение, а делать я буду divmod от 10. 4. "в пехоне строки иммутабельны, так что по памяти эт овсе будет очень грустно." а бред я говорил про это, с чего должно быть все плохо с памятью? с памятью будет получше чем если использовать словарь.
@sniiick
@sniiick 4 ай бұрын
def sum_strs(input_list): res = {} def _mod_sum(_tmp, _j, _pos): if _tmp: s = divmod(_tmp + int(_j), 10) res[_pos] = s[1] if s[0]: _mod_sum(res.get(_pos + 1, 0), s[0], _pos + 1) else: res[_pos] = int(_j) for i in input_list: length = len(i) for idx, j in enumerate(i): pos = length - idx _mod_sum(res.get(pos, 0), j, pos) return ''.join(str(v) for k, v in sorted(res.items(), reverse=True))
@beskrovniibv
@beskrovniibv 4 ай бұрын
class BigInt: def __init__(self, value: str): self.value = value self.integer = list(reversed([int(c) for c in value])) def __add__(self, other): result = [] l = max(len(self.integer), len(other.integer)) for c in range(l): op1 = self.integer[c] if c < len(self.integer) else 0 op2 = other.integer[c] if c < len(other.integer) else 0 result.append(op1 + op2) f0 = 0 for c in range(len(result)): f = 1 if result[c] > 9 else 0 result[c] = (result[c] + f0) % 10 f0 = f return BigInt(''.join(str(value) for value in reversed(result))) def __str__(self): return self.value def main(): r = BigInt('0') for s in input().split(): r = r + BigInt(s) print(type(r), r)
@user-yd4wd9bb6q
@user-yd4wd9bb6q 2 ай бұрын
Добрый день! Для пар чисел 99 и 101, 56 и 56, 500 и 500 - ответы некорректные
@beskrovniibv
@beskrovniibv 2 ай бұрын
@@user-yd4wd9bb6q писал во время трансляции, спасибо за замечания, действительно часть случаев упустил в решении class BigInt: def __init__(self, value: str): self.value = value self.integer = list(reversed([int(c) for c in value])) def __add__(self, other): result = [] l = max(len(self.integer), len(other.integer)) for c in range(l): op1 = self.integer[c] if c < len(self.integer) else 0 op2 = other.integer[c] if c < len(other.integer) else 0 result.append(op1 + op2) f0 = 0 for c in range(len(result)): f = 1 if result[c] + f0 > 9 else 0 result[c] = (result[c] + f0) % 10 f0 = f if f0: result.append(f0) return BigInt(''.join(str(value) for value in reversed(result))) def __str__(self): return self.value
@Aleksey_Podkorytov
@Aleksey_Podkorytov 4 ай бұрын
Она просто нулевый чел
@vlad-code
@vlad-code 4 ай бұрын
def sum_list(input_:list[str]) -> str: dict_count = {} result = '' for num in input_: index = 0 for digit in num[::-1]: if index not in dict_count: dict_count[index] = 0 dict_count[index] += int(digit) index += 1 size = len(dict_count) for i in range(size): if i
@srg5419
@srg5419 4 ай бұрын
def my_sum(nums:list[str]) -> str: result_dict = dict() result_string = '' for num in nums: index = 0 for symbol in num[::-1]: if symbol == '_': continue if index not in result_dict: result_dict[index] = 0 result_dict[index] += int(symbol) index += 1 for index in result_dict: value_string = str(result_dict[index]) if result_dict[index] > 9: if index + 1 in result_dict: result_string += value_string[-1::] result_dict[index + 1] += int(value_string[:-1:]) else: result_string += value_string[::-1] else: result_string += value_string return result_string[::-1] if __name__ == "__main__": result = my_sum(['13613', '13613']) assert result == '27226', f'{result = }' result = my_sum(['10_000_001', '10000002', '10000003', '10000004']) assert result == '40000010', f'{result = }' result = my_sum(['99999', '1', '0', '0']) assert result == '100000', f'{result = }' result = my_sum(['999','999','999','999','999','999','999','999','999']) assert result == '8991', f'{result = }'
@marat_shaydulin
@marat_shaydulin 3 ай бұрын
def sum_str_nums(nums): nums = [list(num) for num in nums] ans = [] while nums: nxt = [] sm = 0 for num in nums: sm += int(num.pop()) if num: nxt.append(num) sm, d = divmod(sm, 10) ans.append(str(d)) if sm: nxt.append(list(str(sm))) nums = nxt ans.reverse() return "".join(ans)
@user-ye1tr8fn6b
@user-ye1tr8fn6b 4 ай бұрын
input = ["1000001","1000002","1000006","5000",] def sum_input (input) -> str: while True: sum_str = '' result = '' add = "0" max1 = max(len(input[-1]), len(input[-2])) k1 = ''.join(reversed(input[-1].rjust(max1, '0'))) k2 = ''.join(reversed(input[-2].rjust(max1, '0'))) for a,b in zip( k1, k2 ): sum_str = str(int(a) + int(b)+ int(add)) if len(sum_str) == 2: add = "1" sum_str = sum_str[1] else: add = "0" result += sum_str result = ''.join(reversed(result)) input.pop() input.pop() input.append(result) if len(input)== 1: return input print(sum_input(input)) # Олег спасибо за интересное интервью и задачи смотрю с удовольствием ( для того чтобы решить понадобилось около часа + дебагер) задача на самом деле сложная
@sniiick
@sniiick 4 ай бұрын
делать эту задачу через конкатенацию будет ОЧЕНЬ дорого по памяти, учитывая что по условию числа могут быть любого размера
@user-ye1tr8fn6b
@user-ye1tr8fn6b 4 ай бұрын
возможно) это то что в голову пришло первым. Я думаю там есть задел для улучшения .@@sniiick
@user-zx9gc6mw5i
@user-zx9gc6mw5i 4 ай бұрын
num_list = ['10000001', '10000003', '10000005', '10000001'] res = '40000010' res_dict = {1: 0, 2: 1, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 4} def some_foo(num_list): my_dict = {} total = 0 for i in range(1, len(num_list[0])+1): for q in num_list: total += int(q[len(q)-i]) my_dict[i] = str(total % 10) total //= 10 result = '' for i in my_dict.values(): res += i new_res = result[::-1] return my_dict, new_res
@ratmirtrusov251
@ratmirtrusov251 4 ай бұрын
lst_input = ['10200000012', '20800000203', '69000003004'] # result = '100000003219' def summ_big_data(lst_in: list) -> str: result = dict() for i in lst_in: for j in range(1, len(i) + 1): num = i[-1 * j] if result.get(j) == None: result[j] = '0' blFlag = False if (int(result[j]) + int(num)) >= 10: result[j] = str((int(result[j]) + int(num)) - 10) blFlag = True else: result[j] = str(int(result[j]) + int(num)) r = j + 1 while blFlag: if result.get(r) == None: result[r] = '0' else: if (int(result[r]) + 1) >= 10: result[r] = str((int(result[r]) + 1) - 10) r += 1 else: result[r] = str((int(result[r]) + 1)) blFlag = False return ''.join(result.values())[::-1] if __name__ == '__main__': my_summ = summ_big_data(lst_input) print(my_summ, ' type', type(my_summ))
@user-sw8lh4on7r
@user-sw8lh4on7r 4 ай бұрын
def some_func(arr): pre_res = {} for elem in arr: key1 = 1 for el in elem[::-1]: if key1 in pre_res: pre_res[key1] += int(el) * key1 else: pre_res[key1] = int(el) * key1 key1 *= 10 return sum(pre_res.values()) print(some_func(['1293812932189371238', '2190741212139812478', '21893712498712079421389612381'])) # ответ 21893712502196633565718796097 print(sum([1293812932189371238, 2190741212139812478, 21893712498712079421389612381])) # ответ 21893712502196633565718796097
Normal vs Smokers !! 😱😱😱
00:12
Tibo InShape
Рет қаралды 116 МЛН
Giving 1000 Phones Away
00:18
MrBeast
Рет қаралды 24 МЛН
Как быстро замутить ЭлектроСамокат
00:59
ЖЕЛЕЗНЫЙ КОРОЛЬ
Рет қаралды 6 МЛН
Маленькая и средняя фанта
00:56
Multi DO Smile Russian
Рет қаралды 5 МЛН
Собеседование Middle C++
1:01:50
Ambushed Raccoon
Рет қаралды 26 М.
Пришёл Intern - оказался JUNIOR Strong / Интервью на позицию DevOps Engineer / Мок собес  / 1
1:36:38
SENIOR PYTHON on JUNIOR interview
15:54
BELOV
Рет қаралды 5 М.
Middle за 1 год? Собеседование #3 frontend разработчика
45:52
FRONTENDIYA - Веб разработка
Рет қаралды 15 М.
Normal vs Smokers !! 😱😱😱
00:12
Tibo InShape
Рет қаралды 116 МЛН