Кодинг задача
- Задача написать валидатор пароля по определенным параметрам:
- Только символы английского алфавита, цифры и _.#%
- Минимум одна цифра
- Минимум один спецсимвол из _ # %
- Длина не меньше 8
- Минимум одна заглавная буква
- Не является палиндромом
import re
def is_valid_password(password: str) -> bool:
# 1) Только символы английского алфавита, цифры и _.#%
if not re.fullmatch(r"[A-Za-z0-9_.#%]+", password):
return False
# 2) Минимум одна цифра
if not re.search(r"d", password):
return False
# 3) Минимум один спецсимвол из _ # %
if not re.search(r"[_.#%]", password):
return False
# 4) Длина не меньше 8
if len(password) < 8:
return False
# 5) Минимум одна заглавная буква
if not re.search(r"[A-Z]", password):
return False
# 6) Не является палиндромом
if password.lower() == password[::-1].lower():
return False
return True
if __name__ == "__main__":
test = [
"asdfghj", # слишком короткий, нет цифр, нет спец
"Asdfghjk", # нет цифр, нет спец
"Asdfghjk#", # нет цифр
"Asdfghjk#2", # OK
"Asdf#232#fdsA", # палиндром по буквам («asdf232#fdsa» vs обрат)
"1234567_.", # нет букв
" Asdf#3", # содержит пробел
"asdfghjk", # нет заглавных, нет цифр, нет спец
"asdfgnHJ#34" # OK
]
for t in test:
print(f"For {t!r} -> {is_valid_password(t)}")
Вопросы после кодинга
- Расскажи о проекте, с чем работал
- Устройство хешмапы
- Что такое индексы в постгресе, что под капотом, какие + и —
- Работал ли с брокерами сообщений, зачем они нужны и в чем отличие RabbitMQ от Kafka
- Что такое итератор и генератор. Какие методы нужны, чтобы реализовать генератор. В чем плюс генератора в отличии от других последовательностей?
Вопрос от тимлида
- Ситуация: ты видишь, что сервис стал работать медленней, твои действия по увеличению произодительности сервиса