Василий Савчук. Часть 2. Собеседования: разбор вопросов от тимлида

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

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

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

    00:00:08 - 00:01:26

  • что Тема вам зашла вот сегодня тоже разберем пару таких вопросов на которые Ну по крайней мере на Один падает что-то 90 процентов кандидатов вот не знаю может даже больше 9 из 10 Мне кажется да такая примерно у меня по крайней мере Василий может быть другая так что пишите ваши вопросы ваши вопросы в чат вот до этого Напишите как нас видно до нас как нас слышно качество должно быть 1080 Ну и слышно нас должно быть хорошо для этого Василий Давай поздороваемся Привет привет скажи что-нибудь чтобы тебя слышали Всем

    00:00:47 - 00:02:08

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

    00:01:29 - 00:03:02

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

    00:02:15 - 00:04:00

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

    00:03:08 - 00:04:41

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

    00:03:57 - 00:05:41

  • вот здесь еще хочу услышать что стек это очень быстрое так скажем структура для того чтобы выделить памяти для хранения нужна всего лишь одна процессорная так скажем единица центрального процессора Вот для него это очень быстро просто переключить адрес у себя да и эта операция еще и кэшируется она привязана Кешу процессор поэтому это очень быстро происходит также Я хочу услышать вообще для чего стек что в нем хранится чаще всего чаще всего а он предназначен для хранения value type of и ссылок на

    00:04:53 - 00:06:21

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

    00:05:39 - 00:07:03

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

    00:06:23 - 00:07:59

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

    00:07:14 - 00:09:04

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

    00:08:14 - 00:09:50

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

    00:09:05 - 00:11:04

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

    00:10:33 - 00:11:36

  • должны храниться соответственно Здесь нам приходит на помощь куча Давай знаешь что давай развернем немного эту тему со стеком и кучи с тем что ну с той стороны с чем мы связываемся с чем мы работаем с чем мы можем столкнуться именно в ходе работы у нас получается Мы же самостоятельно [музыка] сейчас как сказать примеры накидаем чем можно отнести к стеку что под капотом это стека что под капотом эта куча вот в чем вопрос Если понял твой вопрос то все мы каждый день работы я и на виднейший контроллером вот

    00:11:06 - 00:12:44

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

    00:11:58 - 00:13:31

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

    00:12:49 - 00:14:21

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

    00:13:58 - 00:15:18

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

    00:14:38 - 00:16:08

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

    00:15:33 - 00:16:59

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

    00:16:19 - 00:17:38

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

    00:17:03 - 00:18:24

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

    00:17:55 - 00:19:35

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

    00:18:47 - 00:20:09

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

    00:19:38 - 00:21:00

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

    00:20:18 - 00:21:54

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

    00:21:09 - 00:22:35

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

    00:21:56 - 00:23:35

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

    00:22:50 - 00:24:19

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

    00:23:37 - 00:25:08

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

    00:24:26 - 00:25:53

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

    00:25:17 - 00:26:51

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

    00:26:05 - 00:27:24

  • подставить файл он автоматически применить ко всем То есть вы в этом классе никакой метод собирать уже не сможете а вот в целом вот вот на эти вещи я могу поговорить сеньорами более глубже да А если Middle скажет что профайла расскажет Это здорово отлично А вот табличная диспетчеризация здесь уже такая сеньорами Я могу поговорить Уже более глубже например во-первых таблично диспетчеризация разруливается если мы говорим про вирту Table она как раз используется в наследовании видны используется Когда Вы начинаете

    00:26:52 - 00:28:22

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

    00:27:39 - 00:29:02

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

    00:28:26 - 00:29:59

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

    00:29:20 - 00:30:48

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

    00:30:07 - 00:31:45

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

    00:31:19 - 00:32:54

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

    00:32:09 - 00:33:36

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

    00:33:02 - 00:34:33

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

    00:33:49 - 00:35:10

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

    00:34:33 - 00:35:59

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

    00:35:25 - 00:36:44

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

    00:36:09 - 00:37:38

  • разрастается спрашиваю как можно его это обойти и чаще всего я хочу услышать что можно какие-то менеджеры по создавать Network Manager там databassin Manager и так далее архитектура Я спрашиваю всех какую джуниоров но у Junior Я спрашиваю С какими именно он работал и если он говорит только весы мы можем эту тему висит раскрутить если человека работал Уже семь Веном то мы можем именно эту тему раскрутить Я уже не начинаю про другие темы спрашивать интересовался нет что знает Вот А у мидлов Я уже спрашиваю как плюс

    00:37:01 - 00:38:26

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

    00:37:44 - 00:39:14

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

    00:38:36 - 00:40:03

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

    00:39:22 - 00:40:47

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

    00:40:04 - 00:41:29

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

    00:40:45 - 00:42:00

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

    00:41:23 - 00:43:05

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

    00:42:13 - 00:43:31

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

    00:43:00 - 00:44:38

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

    00:43:51 - 00:45:22

  • все меньше и меньше вакансий где вот про проекты пишут да Когда у нас проекте Меньше стал замечать А если вижу то это Event такой на стероидах это vmc координаторы плюс опять же какие-то вставки из чисто архитектуры там например worker добавляет интеракторы добавлять мы знаем из-за гипер архитектуры это из вайпера если кто-то с ним работал то есть таких Монстриков так скажем Но вот чтобы чисто я все меньше и меньше вижу например в компании 2GIS там Ну я какие-то проекты делал тоже используя только мы видим но сейчас стал

    00:44:37 - 00:46:03

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

    00:45:23 - 00:46:44

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

    00:46:03 - 00:47:21

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

    00:46:42 - 00:48:06

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

    00:47:27 - 00:48:51

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

    00:48:09 - 00:49:23

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

    00:48:47 - 00:50:08

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

    00:49:30 - 00:50:54

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

    00:50:15 - 00:51:40

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

    00:50:57 - 00:52:17

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

    00:51:37 - 00:52:44

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

    00:52:18 - 00:53:28

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

    00:52:57 - 00:54:16

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

    00:53:36 - 00:55:10

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

    00:54:23 - 00:55:55

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

    00:55:11 - 00:56:30

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

    00:55:56 - 00:57:27

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

    00:56:45 - 00:58:14

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

    00:57:33 - 00:59:10

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

    00:58:27 - 00:59:52

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

    00:59:09 - 01:00:38

  • что он волнует многих и в каждой компании свой соответственно стек можешь рассказать про свой вот если вы нанимаете жена то кого Какой минимум должен знать а ну скажу так в последнее время дженеров разработчиков не нанимали Но я могу подумать сейчас что нужно знать наверное Окей Свифт если возьмем если возьмем Swift то знание каких-то базовых вещей там массивы Да как работают что такое в целом а РЦ Как себя ведет Я считаю это нужно потому что если там Arc есть большие пробелы то будет сложно написать хороший

    00:59:58 - 01:01:37

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

    01:00:55 - 01:02:33

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

    01:01:52 - 01:03:28

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

    01:02:48 - 01:03:53

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

    01:03:20 - 01:04:33

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

    01:03:57 - 01:05:36

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

    01:04:54 - 01:06:21

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

    01:05:38 - 01:07:07

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

    01:06:30 - 01:07:58

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

    01:07:19 - 01:08:42

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

    01:08:01 - 01:09:40

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

    01:08:59 - 01:10:31

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

    01:09:45 - 01:10:58

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

    01:10:23 - 01:11:48

  • интересное интервью завтра будет интересное интервью Всем спасибо большое Всем пока и зависли мы на моменте завис я точнее ушел я завис на моменте окончания сессии и [музыка]

    01:11:05 - 01:11:41

Менторы

Специалисты своей области, которые смогут помочь вам

  • Нигма Нурия
    Нигма Нурия

    Middle .Net Developer

  • Сущенко Татьяна
    Сущенко Татьяна

    Senior Product Manager

  • Гудков Денис
    Гудков Денис

    Middle Python Developer

  • Курочкин Константин
    Курочкин Константин

    Ведущий программист

  • Гудман Макс
    Гудман Макс

    Backend Software Engineer (PHP)

  • Гребенкин Антон
    Гребенкин Антон

    Senior .NET/C# developer

  • Ахназаров Фёдор
    Ахназаров Фёдор

    Middle DevOps Engineer | Tbilisi, Georgia

  • Шорохов Дмитрий
    Шорохов Дмитрий

    Middle C# .NET

  • Жуков Александр
    Жуков Александр

    Senior PHP-разработчик

  • Мазикин Павел
    Мазикин Павел

    Middle python developer

© 2024 HireGuru. Сделано в Санкт-Петербурге с hireguru.ru