Job interview на вакансию Golang Developer middle // Курс «Golang Developer. Professional»

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

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

  • Итак давайте начинать всех Рад приветствовать на вебинаре курса сегодня тема нашего вебинара это Джок интервью на вакансию голыми девелопер Middle Сегодня у нас будет небольшой демонстрационное интервью проводить его буду я Меня зовут Венгер Олег Я этих Литва Вита у меня семь лет опыта разработки ранее работал в таких компаниях как Круг Озон вот сейчас являюсь также преподавателем курса со мной сегодня Денис уступает роли кандидата Денис представишься расскажите Всем привет уже пятый год в общем-то

    00:00:00 - 00:01:30

  • образование бакалавр информационной безопасности но получилось так что больше меня стало интересовать Разработка и влился в общем в неё и сначала и планирую перейти очень круто Поехали дальше какой у нас маршрут нашего вебинара начнем мы со знакомства что мы только что сделаем дальше поговорим про отпуск вообще что это такое и после этого начнем собеседование само собеседование у нас будет поделено на три некоторых логических блока Первое это теория потом мы решаем задачку посмотрим на практику и следующее

    00:00:52 - 00:02:15

  • подведение итогов собеседования После этого мы немного пройдемся по курсу и программе обучения и оставшееся время оставим на ваши вопросы ко мне или Денису если они вас будут задаем все вопросы Однако ответы на вопросы будем давать только в конце собеседования Итак небольшая информация Давайте поближе познакомимся с задумывался как компания которая позволяет обучаться у опытных специалистов высокого уровня в различных областях it каждого из которых собственно вот обучает Как эффективно преподавать

    00:01:35 - 00:02:52

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

    00:02:22 - 00:03:37

  • разработаны на основе того что требуется на данный момент кадровом рынке основных топовых компаний [музыка] обучение специалистов происходит разные трейдов очень много это и программирование инфраструктура и тестирование с аналитикой также есть курсы управления информационные безопасности немного о цифрах на данный момент вот все более 130 курсов для Junior Middle и специалистов более 600 преподавателей является [музыка] действующим преподавателями всего с основания от Прошло уже шесть лет и за это время было более 20 тысяч

    00:03:00 - 00:04:35

  • выпускников всего 430 уже больше 430 тысяч специалистов в нашем сообществе читает материалы учатся и общаются на наших площадках Напишите пожалуйста если один вы уже учились два если не учились но что-то слышали и три если вообще впервые узнали про вот пришли первые ответы Итак начинаем наш интервью на вакансию blende девелопер Middle сейчас я прекращу на время Давайте оставим так собственно Денис готов да Давай начнем Итак первый вопрос почему ты вообще выбрал потому что у тебя четыре года си Шарпа Зачем тебе

    00:03:55 - 00:05:41

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

    00:05:12 - 00:06:48

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

    00:06:09 - 00:07:48

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

    00:07:19 - 00:08:55

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

    00:08:11 - 00:09:48

  • канал Почему у него если нет буфера Расскажи пожалуйста как работает следующая ситуация представим У нас есть некоторые каналы есть читает этого канала что произойдет значение в канале если канала нет буфера Ну грустин один заблокируется до того момента пока из этого канала не считает вторая грудина и когда до того момента пока не будет попытки этого чтения И когда это случится то первая рутина напрямую запишет стек второй да да Круто Это единственный такой не Самый наверное очевидный момент что одна грудина может писать стек

    00:09:25 - 00:10:49

  • другой рутины круто смотри Давай проведем такой небольшой блиц коротенькие вопросы Что будет если мы попробуем закрыть закрытый канал будет паника если мы Попробуем записать что-то закрытый канал если читать из закрытого канала принципе ничего мы считаем духовное значение типа который лежит канале будет короче второе значение будет сигнализировать о том что канал уже закрыт могли отличить именно какой-то реальность значение У нас есть мы пытаемся его что-то записать все без проблем запишется А если мы пытаемся читать Из толкового

    00:10:21 - 00:11:57

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

    00:11:24 - 00:12:51

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

    00:12:22 - 00:13:38

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

    00:13:00 - 00:14:24

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

    00:13:47 - 00:15:09

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

    00:14:39 - 00:16:07

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

    00:15:30 - 00:16:51

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

    00:16:09 - 00:17:37

  • накладные расходы [музыка] больше про многозадачность то я не помню какой версии давно использовалась Кооперативная задача когда рутина как бы сами давали сигнал что можно меня свечнуть поставить другую выполнение и там уже сам планировщик а можешь рассказать вообще какие сущности есть в планировщике для работы с бурунтинами Вот одна из сущности там он имеет какое-то количество грудины и ставит их на выполнение постепенно есть также глобальная Ну наверное сначала про локальный если нет вообще локального чуть потока грудин

    00:17:03 - 00:18:40

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

    00:18:23 - 00:19:47

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

    00:19:18 - 00:20:50

  • Он работает в общем он работает при сетевых чтобы не опрашивать по моему систему потому что это системный вызов это всегда дорого по-моему как-то В общем внутри runtime Go это проверяет готовы ли груди дальше выполняться закончился вот этот сетевой вызов Там прям отдельный поток для него выделен в котором как раз крутится Да все так и вот как раз таки случается на поле рам тебя не целый трек паркуется только гурутина вот отдается там есть две ситуации возможно передачу Ну ладно не будем дальше Скажи пожалуйста про

    00:20:20 - 00:22:04

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

    00:21:14 - 00:22:57

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

    00:22:13 - 00:23:35

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

    00:23:02 - 00:24:26

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

    00:24:14 - 00:25:44

  • то есть мы видим что у нас в нашу функцию Run передается слайс задач собственно который нам нужно выполнить максимальное количество параллельных задач Мы выполняем N и максимальное количество ошибок которые можно выполнить при выполнении задачи это м сама задача у нас это некая функция которая возвращает нам как раз вот нужно учесть что задание могут выполнять разные время списка задач может быть больше или меньше то есть целом у нас может быть такое 105 можно сразу вообще из допущения мы считаем что значение

    00:25:00 - 00:26:25

  • всегда больше однозначно и граничный случай если задача работает без ошибок выполняется все задачи если в первых выполненных задач происходит Мы уже выполнили задач в наших потоках и получили сразу мы начинаем говорить что все мы завершаем в этот момент когда мы проверили ошибок в этот момент у нас уже N наших вот этих вот грудинок уже переваривают эти задачи поэтому максимальная собственно число выполненных задач будет N + N Вот это из допущений Денис Понятно ли Тебе задание понятно что надо сделать Да понятно

    00:25:43 - 00:27:09

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

    00:26:35 - 00:28:07

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

    00:28:17 - 00:29:53

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

    00:29:58 - 00:31:33

  • и вот здесь как раз нам то есть мы здесь увеличиваем просто наш Скаут на один случай если таск верну какую-то ошибку сваркерами вроде бы все теперь нам нужно как-то им давать на выполнение наши таски до того момента пока мы не превысиммет ошибок принципе нам нужен еще один цикл здесь мы должны проверить что у нас перед тем как отдавать таз в работу у нас принципе не произошло еще и ошибок опять пользуемся томиком чтобы предотвратить дата рейса нам придется привести м32 Потому что нельзя сравнить 732 и обычный

    00:31:26 - 00:32:54

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

    00:33:15 - 00:34:33

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

    00:34:07 - 00:35:45

  • двух циклах и защитил R scount а томиком а потом на 56 строке это используешь его без атомика просто напрямую не будет здесь уже нет потому что после закрытия канала и вызова говорит у нас принципе не осталось уже никаких параллельно работающих с оркерами и в принципе мы к этой переменной Обращаемся только вот из главных груди смотри еще такой вопрос чуть выше на 33 строчке А если мы это сделаем примеру тени Если разница грудини наверное как раз может быть происходишь счетчик может увеличиться не на то количество

    00:36:31 - 00:38:18

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

    00:37:31 - 00:38:49

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

    00:38:14 - 00:39:51

  • где мы как раз отдаем доски на выполнение поставить Селект И если мы получили сигнал от контекста Мы открываем работу цикла и вот Идем дальше хорошо круто на самом деле целом у меня наверное вопросы закончились вот мы можем постепенно переходить к введению итогов что я хочу сразу отметить о самой задаче очень круто что ты все свои мысли транслируешь голосом потому что одна из частых ошибок на собеседованиях кандидат просто начинает молча писать код Это неправильно потому что интервьюер хочет услышать увидеть как раз таки

    00:39:21 - 00:41:06

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

    00:40:16 - 00:41:34

  • простое лаконичное вот так же как ты сказал можно решать не через atomica через miltex это наверное тоже на мой взгляд не было бы ошибкой все было бы хорошо плюс одно из решений Бывает такое что запускают не nworker который разгребают рутины а просто напросто контролирует что всегда будет запущена не больше ngrutin через какой-нибудь симофор Вот и просто запускают каждую задачу просто видят что Если семафор занят то есть уже запущена и они еще не завершились ждем вот как только одна задача вернулась

    00:40:55 - 00:42:03

  • через канал сообщила освободилась мы начинаем добавлять новую рутины новую задачу это тоже одно из альтернативных решений вот по поводу теории в теории Мне тоже все понравилось в целом ты классно рассказал про гурутины как они работают рассказал про runtime Для чего нужен Как работает это на самом деле тоже важная штука потому что на многих собеседованиях спрашивают данную тему Что интересно как работает Почему гурутины такие классные можем запускать и чем там отличается от потоков для потоков есть отдельные

    00:41:29 - 00:42:50

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

    00:42:10 - 00:43:27

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

    00:42:52 - 00:44:09

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

    00:43:32 - 00:44:56

  • вот нюанса когда одного рутина пишет стать другой рутины Обычно никто не лезет и еще очень частой ошибкой бывает как раз таки ответ что не буферизированный канал это канал с буфером один когда мы создаем канал и Передаем как раз таки размер буфера единичку некоторые интервьюеры прям так и спрашивают чем отличие между каналом не буферизированным и каналом с буфером один интерфейсы тоже классно рассказал сейчас некоторые интервьюеры начинают также спрашивают помимо интерфейсов еще дженерики Вот потому что

    00:44:18 - 00:45:35

  • реализация дженериков стоит условно рядом с реализацией интерфейсов Вот это тоже могут иногда спросить но практика показывает что Обычно никто на это не смотрит и больше спрашивают именно общее понимание интерфейсов зачем они нужны круто что знаешь про солят вот это что как раз таки интерфейса это буковка dependen 7 вершин также еще могут спросить про букву I наш интерфейс greation о теории Мне тоже все понравилось если бы это было реально собеседование Я бы считал эту секцию пройденную успешную

    00:44:58 - 00:46:18

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

    00:45:38 - 00:46:55

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

    00:46:16 - 00:47:49

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

    00:47:38 - 00:48:45

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

    00:48:12 - 00:49:18

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

    00:48:44 - 00:50:19

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

    00:49:36 - 00:51:04

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

    00:50:24 - 00:51:49

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

    00:51:08 - 00:52:24

  • курсом смотрим на язык на его синтаксис какие-то практики смотрим базовые программы и знакомимся с некоторыми типами в год модуль 2 это уже более продвинутый модуль смотрим на то Как устроена конкурентность в Вот это смотрим на город и на канал и примитивный синхронизации как например сегодня Денис продемонстрировал один из примитивов это Fate группы когда ему необходимо было синхронизировать дождаться их выполнения плюс смотрим Какие еще дополнительные примитивы из того же пакета Синг а Томик дальше

    00:51:46 - 00:53:02

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

    00:52:24 - 00:53:35

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

    00:53:00 - 00:54:21

  • посмотрим на парадигму микросервисы И монолиты в чем разница зачем когда что можно использовать после просмотра напиши ранее брокеры сообщений на токер немного по сути две лекции масштабная Тема и она рассказывается в двух лекциях после этого посмотрим как нам мониторить наши микро сервисы на go в дополнение мониторинг У нас есть рейтинг знаете что это такое и последняя лекция это некоторые системы дизайн там вообще рассказывается про практики того с чего начинать проектирование систем и немного про то

    00:53:45 - 00:54:59

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

    00:54:25 - 00:55:41

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

    00:55:03 - 00:56:15

  • не только в России но и в мире можете почитать про опыт каждого также у вас будет возможность пообщаться с тем преподавателями лично и на самих вебинарах и уже после вебинаров в чате чате группы собственно также у нас есть различные прямые трансляции Вот и также показывается дальнейшей наше мероприятие и записи прошлых мероприятий есть именно отвечаем на вопросы отвечать только сейчас я еще отправлю опрос Сейчас минутку я отправил ссылку на опрос Пройдите пожалуйста нам важно получить ваш потому

    00:55:40 - 00:57:01

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

    00:56:58 - 00:58:28

  • одного и того же типа потому что когда вы декларируете вы пишете а дальше как раз таки название типа квадратные скобки значит 32 и в этот слайс им 32 вы не сможете положить элемент вот это вот про как раз таки с про то что или нет слайсы стоят из элементов разных типов не может быть так например второй элемент слайси не очень понятно Вы можете как раз таки обратиться к элементу слайси по индексу То есть вы пишете ваше название дальше квадратные скобки и Обращайтесь к элементу Да Алексей вы все правильно писали

    00:57:43 - 00:59:10

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

    00:58:30 - 00:59:53

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

    00:59:16 - 01:00:37

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

    00:59:59 - 01:01:24

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

    01:00:41 - 01:02:09

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

    01:01:26 - 01:03:01

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

    01:02:21 - 01:03:32

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

    01:02:57 - 01:04:15

  • так если еще какие-нибудь вопросы Денис может быть у тебя есть какие-то вопросы Да вроде бы нет хорошо и того можем наверное потихоньку заканчивать небольшая информация еще о курсе то что Старт обучения У нас нового потока это 28 сентября поэтому у вас еще есть возможность записаться на него как раз таки по той ссылке что я вам скинул [музыка] Вы можете записаться на курс пройти вступительный тест Вот и уже попасть на само обучение ближайший поток 28 сентября а также у нас будет еще один открытый урок 12 сентября вести его

    01:03:38 - 01:05:14

  • также буду я он о работе поэтому Всем спасибо Кто пришел увидимся на следующих открытых уроках

    01:04:56 - 01:05:14