Пробное Middle C# собеседование (мок-интервью). Часть 1

Подготовка к собеседованию на C# Developer

Транскрипция видео:

  • Привет Алексей привет Алексей Добро пожаловать на собеседование на пробное собеседование и расскажи пожалуйста как ты реализует исключений ну я как бы обычно и стандартные исключения если требуется какая-то особая логика то уже более специфичные ошибки выявляем но если требуется какой-то оде логи то как я ГТО прочитал ше использовать и использовать уже общее обработчик для всех ошибок А как думаешь почему лучше использовать Exception X обычный он же когда ты используешь специфические эксепшн он проходит

    00:00:00 - 00:01:19

  • сначала в один эксепшн заходит потом в другой эксепшн заходит а ну и потом в конце обычно пишут общий Exception и вот он в конце уже в него заходит Ну то есть как бы на производительности отражается как бы и Ну если это не требуется то зачем Угу О'кей а специфически Exception создавал приходилось Для чего Ну специфически создавал пришёл к выводу что как бы ну оно мне не надо Ну для моих под проектов это не нужно а на работе это как-то не требуется Никогда потому что стандартных хватает если там у тебя допустим Ну

    00:00:39 - 00:01:42

  • параметры пришли неправильные или там какое-то переполнение произошло то Ну для этого есть стандартный acception зачем зачем изобретать свои велосипеды и усложнять лишний рар можно грубо говоря анонимный Exception сделать просто выбросить Т этот как он там и в него там своё сообщение передать степ бросить В чём разница между thow и thow Exception Ну если просто thow то мы выбрасываем весь сстк то есть ну полную полную историю событий просто мы из своего там кетча пробрасывается [музыка] грубо говоря де а зачем нам может

    00:01:11 - 00:02:28

  • понадобится делать свой Ну для конечных потребителей для того чтобы опять же скрыть детали реализации моей библиотеки допустим какой-то моего там глубинного кода как я там хожу в базы данных или ещё куда я хожу чтобы не было видно Ну и для того чтобы переопределить собственно Ну там если там допустим у меня просто там обычно обрабатывается и вместо цифры пришла буква И я хочу Это пр пави переда использовал только вот для это супер супер спасибо А какие принципы и практики ты используешь для обеспечения

    00:02:03 - 00:03:18

  • безопасности приложений Блин я если честно никакие не использую наверное Ну только потому что на практике вся для так я не очень понял вопро что я использую Да вот как раз хотел уточнить для безопасности своих приложений что используешь для обеспечения безос В каком смысле в очень общем то есть в абсолютно любом может быть какие-то пароли там вместо пароле ши может ещё что-то Заров пото эти приложени котом к которым подключаются внешние пользователи Обычно я работаю с внутренними приложениями ну

    00:02:45 - 00:04:22

  • которые внутри организации используется Ну и как свои проекты тоже такие жевал Ну так вообще как бы с коду могу сказать что мы должны использовать сервер авторизации отдельной который там токены будет предоставлять опять же исключения не логировать полный ло слить пароли наверно Естественно что данные пользователь в логи ни в коем случае нельзя отправлять О'кей Окей смотри по первому вопросу про обработку исключений всё отлично рассказал меня немножко смущает что ты предлагаешь использовать всегда обработку общего исключения

    00:03:37 - 00:04:53

  • ловить общие эксепшн Как раз-таки наоборот как мне кажется да рекомендации ведущих собаководов - это разделять эксепшн и на каждый реагировать по-своему то есть вот эти вот разные кечи для разных типов эксепшн писать потому что в теории сечас Я понимаю что многие пользуются эсп просто Либо для того чтобы пробросить наверх либо для того чтобы Загирова и пробросить наверх либо просто Загирова и ничего не сделать вот но по факту это как бы механизм который должен служить для отката каких-нибудь там

    00:04:15 - 00:05:16

  • вещей которые уже сделаны то есть Мы записали что-то в базу данных потом у нас произошёл эп мы отловили этот такие Окей у нас уже есть данные записанные в базу данных Давайте их удалим чтобы ус база в конном состоянии оставалась вот поэтому в зависимости от того что произошло в системе у нас должен быть различный набор каких-то Вот таких возвращающихся от того что мы хотим сделать самое простое - Это как обычно вот выбросить исключение Даше и Загирова это чтобы человек при посмотре глазами вло и то что нужно откатить Но кажется что

    00:04:45 - 00:05:56

  • автоматизировать можно всё что угодно было бы желание вот то что человек может сделать руками то и запрограммировать тоже можно вот про проброс исключений Да отлично рассказал про то что мы пробрасывается [музыка] вот что там ещё было вроде ничего проли блок не затронули Но это мелоч и кажется что ты и так это знаешь вот что касается принципов Практик обеспечения безопасности здесь можно рассказать да про hps про общение между микросервисами как они общаются там с помощью токенов не токенов как

    00:05:32 - 00:06:56

  • обеспечивается безопасность ты рассказал про то что у нас есть Ну не есть амы можем взять ции обязательно да какой-то выделенный на самом деле не всегда он обязательно выделенный и не всегда он обязательно нужен но это такой один из стандартных подходов Да вот плюс всякие предотвращения утечки конфиденциальных данных мы можем разделять на разные слои скажем так на разные зоны свои данные то есть обычно данные которые связаны с бухгалтерией они хранятся в какой-то своей отдельной сетке к которой у других

    00:06:23 - 00:07:33

  • приложений нет доступа либо там какой-то очень-очень узкий такой проход там какая-то демилитаризованная зона так называемая дмз Да в которую одно приложение какое-то стучится забирает данные или наоборот отдаёт туда данные вот там можно много всего рассказать про SQL инъекции про другие атаки про хранение данных как они у нас различаются про логи мне очень классно понравилось что ты сказал что мы в логи не должны записывать ничего лишнего и пользователю не выдавать полный ТЧ стек да обычно хорошая практика можно

    00:06:58 - 00:08:05

  • посмотреть тоже в интернете когда ты заходишь на сайт у тебя что-то там падает тебе говорят у тебя ошибка номер там X8 34 Z D5 И всё И что произошло тебе неизвестно Но с другой стороны Ты можешь именно с этой ошибкой пойти в Саппорт и они тебе скажут да мы чиним Вот Но при этом никакой внутренней информации они тебе не выдают это тоже приятно полезно иметь в целом пока Прям вообще ВС супер Давай пойдём Дальше расскажи пожалуйста Как ты работаешь с асинхронными операциями обычно работая Если ты про сейчас уже можеш не применять

    00:07:31 - 00:09:01

  • поправили нет как если мы говорим чтобы не было проблем с возвращением е поток Окей Ты про конфигурировать Да да да вот У потому что я т сейчас смотрел со вопрос я са почитал Погугли и Блин ну я его я вообще ни разу не использовал Ну никогда у меня не было никаких проблем просто я старый код как бы не работал со старым кодом А с тем ко с которым я сейчас работаю там и нет то есть себе настолько старый Интересно сст так конечно конечно То есть если у нас метод помечен атрибут ключевым словом ан то потом он

    00:08:20 - 00:09:48

  • разворачивается здоровенный взро ставить машину причём даже если там нетвейв то он всё равно разворачивается Поэтому нам не нужно писать Эй методы там где нам это не нужно если у нас нет то не надо Окей А для чего вообще вот используется асинхронность зачем эти асин кое-то придумали лиш без них Ну асинхронность это как асинхронность - это не многопоточность асинхронность асинхронный асинхронный код может выполняться в том же потоке в котором он был вызван либо идти в пул потоков и выполняться в каком-то потоке из Пула то

    00:09:13 - 00:10:20

  • есть а нам позволяет не создавать новые потоки Когда нам это не нужно при этом если допустим у нас какая-то длительная операция происходит то Ну то есть мы сделали равно сходить в базу данных получить мы можем не делать сразу мы можем сделать какой-то код дополнительный А уже получить там где нам нужно то есть это нам не заблокирует приложение пока мы там делаем что-то после того как мы обратились к базу вызываем метод который возвращает та и мы не обязаны сразу делать то есть не обязаны сразу делать

    00:09:47 - 00:10:49

  • мы можем потом сделать это мы можем вернуть этот та в переменную нашу и подождать этот Та уже там где нам нужно использовать перемен ты сказал ещё что асинхронность - это не многопоточность можешь в двух словах сказать да В чём разница Ну потому что асинхронный метод у нас может в том же потоке выполняться Угу Ну у нас он не обязывает в новом потоке выполняться Ну ничто ни что его не обязывает он если там есть потоки свободные он может см потоке выполниться А может в этом потоке выполниться Угу Понял Понял спасибо Так

    00:10:18 - 00:11:24

  • про это тогда поговорили Давай обратную связь про него дам про машину состояние рассказал отлично про то что у нас config уже можно не использовать почитал перед этим Да после того к видео посмотрел тоже супер и последний момент здесь был - это разделение многопоточности и асинхронность вот здесь мне кажется основное отличие у них не в том что один поток или не один поток а в том что это два противоположных подхода первый подход - это мы увеличиваем нагрузку на процессор чтобы побыстрее что-то посчитать в многопоточного варианте Да

    00:10:54 - 00:12:05

  • мы создаём много потоков и они в параллель что-то там у нас сами считают вот потом результат объединяем с точки зрения асинхронность мы как раз-таки наоборот освобождаем процессор процессорное время вот это вот поток управления процессором доходим до точки где мы говорим что вот мы сейчас начинаем например читать с диска или там пошли в базу данных куда-то коннектом Да вот в другой на другой компьютер на другой сервер и ждём от него ответа и чтобы процессор не простаивать пока ждёт этот ответ мы говорим О'кей ты иди пока

    00:11:29 - 00:12:32

  • поработай с другими задачами вот когда ко мне потом придёт обратно ответ тогда уже я продолжу выполнение своё то есть мы его освобождаем в одном случае а в другом наоборот нагружая

    00:12:00 - 00:12:22