Подготовка к собеседованию на iOS Developer
Менторы
Специалисты своей области, которые смогут помочь вам
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
Каналы
Полезные Telegram каналы и чаты
Транскрипция видео:
друзья Всем привет Это у нас первая пилотная мог собеседование на наш канальчик да и у меня гость Представьте Всем привет Меня зовут Даурен Я живу в Астане Пытаюсь вкатиться с разработку но сейчас я короче набираю форму именно помог собесом чтобы когда уже начались боевые собеса когда все-таки меня HR пропустит на бой чтобы я как бы сразу максимально быстро залетел крутую команду соответственно опыт Да как бы никакого коммерческого опыта Я считаю что есть конечно какие-то свои проекты небольшие есть небольшой опыт опять же
00:00:02 - 00:01:36
грубо говоря в коммерческой команде но это не официально чтобы не подогнул где-то кнопки красил ребят вообще [музыка] вот и хорошо Ты работал уже в какой-то команде А почему ты считаешь что это нельзя записать в это сколько-то там вообще работал месяцев Слушая Ну сколько там это месяцок поработал но дело в том то что [музыка] Наверное это неправильно будет потому что там у нас я с Казахстана немножко восстание в принципе небольшое АйТи комьюнити А если она еще меньше и как бы все знают принципе где ты
00:00:50 - 00:02:24
работаешь И если как бы начнется именно есть грубо говоря возможность реально проверить человека то и где он работал просто через пару рукопожатие Если через одно короче и поэтому я упоминает Опыт есть получается опыт небольшая стажировка тоже но там как все официально я как бы согласился я там бесплатно упадут в основное приложение но это уже более-менее приложение я там немного кнопки листва вот Ну смотри Я бы на твоем месте и то и то записал потому что Для полноты резюме ну типа то что ты это было не подолгу какая
00:01:36 - 00:02:59
разница типа Запиши Что лучше где-то работал и стажировку чем просто стажировка какая разница знакомства не по знакомству типа какая разница Ты работал ты выполнял задачи с разработчика соответственно Ты можешь записать это себе в резюме тем более вот мы [музыка] на одном интервью Мы обсуждали как раз таки этот вопрос Женеве и пока где Как взять откуда опыт вот так что потом Ну хорошо Ну что тогда давай приступим к тех части Давай начнем еще не такого попроще вообще ты знаешь такой Solid Ну принципе
00:02:32 - 00:03:51
солит ну да немного знаю Немного читал где-то что-то сможешь рассказать все помнишь прям прям про весь тебя Ну скажи что знаешь Ну получается как бы есть вот принципы которые разработан не разработаны собрано это вот Солид и это аббревиатура [музыка] то что грубо говоря у одной сущности должна быть одна ответственность То есть если так смотреть то Допустим [музыка] контроллер это как раз таки собирает То есть если мы думаем контроллере таблицу это как бы так должно работать смотри а это мы в рамках какой
00:03:18 - 00:05:18
архитектуры сейчас рассказывал это ну можно есть как бы можно начать про архитектура говорить Не мы так чуть небольшой сделаем вот то есть ты говорил что я контроллер содержит много логики типа вот делегаты и таблицы там и отображение всего всего это в рамках какой архитектуры Ну можно смотреть как бы любой начинающий предлагает познакомиться весы как бы это модуль для контроллер но когда Если как бы тебя никто не контролирует и ты сам что-то делаешь то скорее всего это превращается в массиве контроллер когда
00:04:37 - 00:05:56
ты начинаешь контроллер собирает Все короче вплоть до Network слоя считаю что это нормально я так пролетел кстати со своим первым тестом заданием [смех] в целом Да как бы если если с координатором совсем немного знаком больше сами пить чем своими деньгам конечно ну и ввести как бы ну первое приложение если смотреть по грубо говоря по таймлайну Конечно все там первый на BBC были начиная там от мести контроллера Я потихоньку контроллеру переходя к VP вот такие вещи там много развитие можно крутить
00:05:24 - 00:06:46
так ну следующие посолим да да потом поговорим Окей следующее это Open Close то есть класса должны быть открыты для расширения И закрыты Ну если как бы так как в общем грубо говоря твоя там классы которые там отвечают Зато бизнес логику они максимально должны быть Вот закрыты для изменения [музыка] туда добавляться логика некая только путем расширения потому что затронув какой-нибудь очень критичный класс который там занимается у тебя какой-то очень серьезный бизнес логикой ты рисуешь вообще все свое приложение
00:06:21 - 00:07:59
положить либо как бы пять вариантов и просто берешь расширяешь где-то У себя этот класс Как тебе нужно допустим там какой-то там отдельно начинаешь безопасно и как бы об этом вот Лесковский [музыка] Московский для что-то там короче что там сейчас помню Короче он говорит Вроде бы о том что можно типа чайлдам то есть класс можно начало заменить и они типа даже нормально отрабатывать Ну если так своими словами вроде бы Правильно правильно ты можешь использовать подтипы там где можно использовать родительский
00:07:13 - 00:08:41
тип так интерфейс игры это короче о том что у нас не должно быть Ну короче мы протоколах клиентки должен короче быть зависимы от методов которые не спорь то есть допустим в нашем случае чего мы делаем там если мы оборачиваем что-то в протокол какой-то мы не должны там протокола какие-то методы там добавлять которые [музыка] имплементировать Когда подписывайся в общем это то что клиент должен быть зависимы от методов который не нужны Так что было в общем то что модуль верхнего уровня зависит модулей нижнего уровня и они
00:08:14 - 00:09:52
типа должны больше быть завязано опять же вот абстракция каких-то то есть там если мы говорим на примере если на таком что мы не должны там создавать переменную допустим там допустим человек да и там его какой-то мы должны грубо говоря не то что это типа подог именно да типа потом плясать от этого что мы уже конкретно завязались на кого-то собаку должен быть абстрактный Пэт и мы типа от него должны есть грубо говоря питомец и этот питомец может быть кошкой Воробьем собакой попугаем короче типа так своими словами
00:09:28 - 00:11:16
не должны зависеть грубо говоря Ну да примерно так есть глобальную тему это вообще ты можешь выделить главный я понял есть получается вот то что чем Мы закончили это абстракция инкапсуляция наследовал они и полиморфизм абстракция это грубо говоря Ну что вот как раз таки что я писал что должно быть какого-то конкретного да то есть отделение существенно существенно типа то есть мы возможностей которые как бы вообще там никогда не понадобится ты то есть понятно что допустим у объекта ручка Там миллион если так говорить с точки зрения
00:10:24 - 00:12:03
мира Да там у него там твердость пластика там насколько грубо говоря чернила абстракция ручки ручка пишет А как там Что там вот я вот иногда путаю может быть просто для меня часто пересекается инкапсуляция это о закрытии грубо говоря есть у нас допустим есть автомобиль состоит там из каких-то модулей есть я как водитель я там в принципе Как любители могу не разбираться в двигателе внутреннего сгорания чтобы нажимать на педаль газа тормоза переключать передачи и грубо говоря свойства автомобиля он
00:11:24 - 00:13:04
как бы в себе капсулирует некие свойства которые в принципе под капотом Работают но юзер об этом знать не обязательно Угу Ну да да так осталось наследования исследования полиморфизм Да унаследование это что грубо говоря мы можем описать что-то новую какую-то сущность на основании [музыка] на примерах там не знаю наверное все сталкивались ладно на жизненных примерах что мы можем привести что мы можем создать грубо говоря свои площади грубо говоря а потом типа шейп этот от этого шейпа будет наследовать
00:12:26 - 00:14:15
какой-нибудь там не знаю квадрат будет наследовать [музыка] что мы можем типа объект [музыка] разную реализацию то есть вот опять же вот грубо говоря подписываюсь под какой-нибудь там супер класс Да своя реализация допустим этого метода можем также как бы это же метод использовать но переписать под новым допустим что у нас понятно что шейп форму площадь грубо говоря можно высчитывать для квадрата можно рассчитывать для Круга короче там соответственно разные реализации вот у нас как бы называться
00:13:34 - 00:15:14
[музыка] Ну вот грубо говоря вот это вот функция она будет для всех одинаково реализация у него там разные для клуба для шарика и для там для квадратиков об этом полиморфизм на формула ки разные то есть для каждой фигуры да Хорошо хорошо давай тогда больше подойдем уже КТУ вообще ты знаешь как у нас устроена Память то есть управление выделение памяти под объекты освобождение и так далее Какой механизм Ну давай запутаться в терминах мы сейчас говорим про Нет мы сейчас говорим про другое про ирисы
00:14:41 - 00:16:25
OK В общем есть механизм RC который необходим для того чтобы автоматик референ скаутинг для того чтобы подсчитывать ссылки на объекты и соответственно после того как мы все ссылки на объекты пропадают Свифт знает что объект Удалить Короче памяти пора высвободить память получается там до какой-то версии был были только Strong и Вика не было вроде бы они сори там не было короче механизмов сайт Table и это приводило к тому что там короче несколько Ну грубо несколько объектов могли одновременно типа
00:15:43 - 00:17:23
обратиться для того чтобы их типа удалить первый грубо говоря Вик удалял второй типа тоже хотел удалить Но это подкапотные штуки короче для этого был сделан механизм сайт Table вроде бы уже 4 версии теперь получается у нас грубо говоря есть Вот сайт table [музыка] Ну механизм механизм удаления наверное надо хорошо когда удаляется объект вообще у нас но освобождается получается когда грубо говоря вообще на него нет ссылок Ну либо Ну короче я имею что Strong и Strong ссылок нету на него короче [музыка]
00:16:48 - 00:18:28
хорошо получается Ладно сейчас вот если затронул сайт Table можешь рассказать еще поподробнее когда она появляется что он содержится Ну то есть про не побольше В общем насколько я знаю там сайты сайты был появляется только да тогда когда мы грубо говоря Мы создали Вик ссылку на объект и тогда у нас появился сайт соответственно Там вся перенес все вот эти строки Это все типа у нас там короче какая-то хитрая хитрая штука с адресами То есть он грубо говоря не забирает так это да там какая-то штука хитрость с адресацией короче
00:17:52 - 00:19:33
происходит и тут получается это для как раз таки для того было чтобы не было двойных таких двойных одновременно очищаем его чтобы у нас короче уходит сайт Table [музыка] с точки зрения удаления на века А так когда Ну как я сказал что если у нас есть сайты был но уже стронг ссылок нет хорошо А что вообще отличие увык и анонс ссылок эконом Ну Вик это optional А ноут это Ну то есть он подразумевает под собой что там по-любому должно быть что-то что-то лежать объект должен быть то есть нет такого понятия что там можешь Может
00:18:47 - 00:20:30
что может и не быть Вик нам обеспечивает именно эту штуку но я лично вообще никогда не пользовался хотя там как бы вроде бы я читал что Apple говорит что типа если можно затяну Я полагаю что это из-за этого из-за [музыка] оптимизации ресурсов [музыка] [музыка] это короче по экономии ресурсов но это очень опасная штука для использования могут так как по мне из опыта столкнулся с крэшем и поэтому я больше не знаю да то есть я объекта там не было и соответственно [музыка] я начал видео ставить она теперь понятно
00:19:48 - 00:21:30
в чем отличие тогда ноунда и стронга если они оба знают что объект есть Ну она тоже грубо говоря ослабление объекта То есть если не будет больше стронг ссылок так Ну так мы что вы говорили когда еще когда освобождается память под объект вот объекта когда чего-то никогда не структуру Ну хорошо так я и говорю ты сказал что анон ты Strong ссылки они оба подразумевают собой наличие объекта но в чем от их отличие там не то что то есть не может быть различие наверное получается Strong это получается если мы сильно по
00:20:59 - 00:22:39
умолчанию если мы как бы помечаем что бесхозные грубо говоря и у нас нет ссылок то компилятор вроде Может это делать да то есть мы когда стронг ссылок нет на объект мы уже удаляем даже если там есть то же самое Вик Просто он под себя ждет под собой ждет поговорят если мы вызываем так уже горячее А смотри ты сказал что тебя крашусь приложения Да она тогда давай подумаем Зачем нужен на ноут В таких случаях может краш он не просто так нужен мы проверяем наличие объекта но по сути да типа анонс это слабая ссылка только
00:22:03 - 00:23:45
она нужна для того чтобы жестко провалидировать То есть я так понимаю тебя окрашилась на каком-то замыкании Да скорее всего Скорее всего то есть у тебя прилетает должен был объект должен был чтобы нормально работало приложение но не прилетает теста если мы поставим Wake у нас ну Нам нужен результат да то есть у нас должен быть сто процентов там нет никакой обработки канала у нас приложение работает ну не так как надо говорим у нас держится слабая ссылка на объект чтобы не было там Ну утечек памяти но при этом объект должен быть
00:23:03 - 00:24:26
Вот зачем оно нужен Окей ссылочками мы разобрались разобрались Ну давай поговорим о чем-то хотел до референсы Велли типы ничего такого едят Ну есть получается два типа до другой вот референсы референсы все что структуры и ему и соответственно там и соответственно там все вот эти вот коллекции коллекции тоже [музыка] референс это классы функции кожуры отличаются тем что они хранятся в разных [музыка] в разных в разных местах памяти грубо говоря одни хранятся кучи другие хранятся хип и стек других
00:23:46 - 00:25:36
типы хранятся в стыке классы И им же они хранятся в куче отличается тем что стек это статическая статическая память мы знаем насколько там необходимо поднять памяти подобное куча это когда память динамическая заранее не знаю сколько Ну что там еще могу сказать я могу сказать что дальше разгонять что есть интересные эти объекты как массивы классы структуры потом дойдем до коллекции наших Давай Но чем они вообще отличаются классные структуры китам механизм Ну структуры это ну класса это получается все что
00:25:00 - 00:26:31
это как раз таки наследование то есть короче у классов есть наследование структур наследования нет классы нужно обычно инициализировать у классов [музыка] структур в принципе там этого нет что еще у них у структур так как мы знаем сколько там они будут занимать память про то что где они хранятся я в принципе рассказал как вообще обращаются к классам Ну К объектам класса и как обращаться К объектам структуры [музыка] я немного не понял вопрос как обращаться ты хочешь Да вот обратиться к объекту входит вот сидишь пишешь код ты хочешь
00:25:54 - 00:27:35
обратиться к объекту класса или объекту структуры В чем отличие что под капотом этого происходит что как к чему обращается Ну если мы грубо говоря Обращаемся К объекту структуры то есть мы создаем объект структуры Это копия это не ссылка то есть грубо говоря это уже отдельная живущая копия допустим с чем мы работаем если мы говорим про классы это то есть там обращаясь К объекту класса изменяя этот объект мы непосредственно влияем на сам класс потому что ссылочный тип да А знаешь механизм такой копии он Райт
00:26:58 - 00:28:37
Да есть такой крутой механизм Я тоже не так давно знал это тоже как раз таки об экономии ресурсов оптимизация ресурсов допустим когда мы типа структуры начинаем копировать но не модифицируем они просто до того момента когда мы не начинаем модифицировать она становится самостоятельным объектом получается собственную ссылку и соответственно под нее отдельные выделяется ресурс в принципе [музыка] Сейчас подожди а мы прослушал вот мы когда Обращаемся К объекту структуры Допустим мы хотим скопировать структуру
00:27:54 - 00:29:22
Да что у нас тогда будет Вот у нас два экземпляра структуры есть отличие Там и так далее [музыка] я понял ну если я правильно понял то есть если мы не модифицируем то грубо говоря объект есть структура А мы создаем объект B и структуры и получается объект б пока мы модифицируем эту структуру она как бы содержит Просто ссылку нас структура после того как мы Типа начали модифицировать тогда она уже отдельно как бы система выделяет под нужды объекта отдельные ресурсы Ну например есть хорошо Так мы с тобой проговорили про
00:28:51 - 00:30:40
механическую райт Так давай с тобой чуть поговорим вообще про диспетчеризацию знаешь что такое Да немного Я читал это статическая динамическая диспетчеризация но есть такое Ну короче это типа забыл повторить [музыка] сейчас опозорить да нормально все короче мы чтобы И доежка понимала короче что первым вызывать что там то есть грубо говоря у чего-то там Есть конкретные статистические ссылки напрямую к ним Обращаемся по это быстрее работает ездить по сайту вид на stable [музыка] есть Ну короче о том что грубо говоря
00:29:51 - 00:31:27
статическое это все опять же быстрый доступ никакого там наследования полимерфизма и так далее напрямую обращение грубо говоря [музыка] они протокол есть [музыка] короче динамическая диспетчеризация это вот о том что класса Короче давай так хотя бы я просто короче приблизительно Помню про статическую ты сказал быстро но нет не наследует не полиморфизм ничего что тогда у динамического динамическая там как бы тоже вот я поправь меня есть получается массаж когда мышная тема происходит где там можно типа свидетель методы
00:30:53 - 00:32:51
вот я не помню какой Давай говорить о Virtual Table это как раз есть вот эти вот ссылки на адреса разных памяти да то есть там грубо говоря создается там Table который знает как на что ссылаться допустим у того же полиморфизма там допустим у нас есть функцию родительского класса основной а потом где ты реализуем классе и полиморщим получается другую у кого-то еще класса там ту же функцию через полиморфизм другой исполнение и соответственно [музыка] Здравствуйте содержит эти вот ссылки грубо говоря да и их отношения между
00:32:22 - 00:34:06
собой то есть что на что ссылается то есть куда мы грубо говоря даже смотреть если нет куда мы что мы должны реализовать есть полиморфизм случился это соответственно дольше работы насколько знаю дольше компилируется А если мы говорим типа простатит Все просто Никакое ссылки мы типа вызываем Вот это и знаем что типа вот этот метод сразу вызывается легче для системы в целом как то так короче тоже А когда вообще вирту ну Virtual Table у нас будет Вот мы говорили сын классы А когда классы Вот как раз таки да это когда мы создаем
00:33:27 - 00:35:07
допустим чай класс начинаем наследование [музыка] Да если получается также протокола вроде бы тоже прошел но если мы начинаем типа дефолтную реализацию протокола это делать то там уже типа статическая тема начинается там уже тоже не будет [музыка] насколько знаю мы можем еще и как бы руками отключать делать мы типа не можем его поймал вроде бы Короче типа что мы да что мы короче наследования у класса и тогда тоже как становится статической цивилизации Хотя как бы это класс какая у нас будет статическая
00:34:19 - 00:36:05
я не помню я не помню я короче не помню эту приставку что вот отключает Ну короче когда мы говорим что типа класс больше не имеет права наследовать это тогда как бы тоже врубается Ну хорошо А когда Ну вообще как тогда у нас вызвать массаж диспач там через всякие типа штуки Там оба GS обжегтев сишме и потом собачка ОБЖ такие штуки Да как бы на там главное там не запутаться когда мы допустим хотя эта штука короче это типа все что брантами работать собачку Как там вызвать [музыка] я слышу что ты читал я слышу
00:35:31 - 00:37:21
хорошо протоколы статическое нет нет Ну скорее всего Нет я не говорю про такого-то статистика я говорил если ты реализовываешь дефолтное дефолтная реализацию протокола будет делаешь то тогда он статистики начинает реализовывать протоколы то есть там не просто что он грубо говоря какую-то функцию прописали потом когда мы от этого протокол там Да еще то мы реализован типа такую функцию но по словам когда там классе но когда мы говорим что этот функция в этом протоколе имеет реализацию и тогда как
00:36:53 - 00:38:36
бы тоже вот я могу ошибаться либо ко всему протоколу либо только конкретным конкретно вот этой функции надо тоже наверно больше почитать про это интересный механизм может почитать потом еще раз я слышу что читал но надо будет еще получше ведь изучить но так хорошо Ладно так давай с тобой поговорим тогда чуть про коллекции которые мы с тобой затрагивали типа вот какие-то еще знаешь есть есть массивчики есть словари и забыл самое крутое И сколько букв вылетела массивы словари И множество Короче давай тогда поговорим по детальнее них
00:37:59 - 00:39:39
вообще просто что прорыв знаешь Ну получается массивы это упорядочный у них есть индексы массив то есть массив Конечно можно взять а не но если ты как индекс [музыка] Ну то есть это конкретно порядочная штука которую ты можешь типа дергать значение по индексу а словари это есть короче ключ есть значение ключ [музыка] можем как бы обращаться насколько знаю ключи это всегда типа короче Можем по ключу также находить по ключу она как бы упорядочен можно находить словарь упорядочен то есть там как бы
00:39:12 - 00:40:58
нет индексов если типа мы будем принтовать массив будем принтовать словарь то у нас всегда будет последовательность Что может быть ключом и значением у массива объекты можешь сделать ключом объект ключом нет то есть что может быть этим одним словом назовем как Ну примите его типа ну примитивы да это называется примитивный типа хорошо А что может быть тогда вэлью словаря все что хашируется какой протокол реализует хорошо был отлично хорошо Ну это получается не содержит повторяющийся объекты один тип тоже нет получается никаких
00:40:26 - 00:42:17
индексов все в рандомном порядке и тоже как бы все вылью должны быть должны [музыка] принципе да А по скорости кстати взять объектов Где быстрее всего из этих трех То есть ты хочешь достать какой-то объект где будет самое быстро [музыка] а почему [музыка] Ну потому что мы типа знаем объекта то есть грубо говоря если мы начнем искать Ну короче это о1 для Сета и он для массива допустим потому что типа массив это вот в худшем случае Короче нас это будет количество элементов массива индекса до нашего индекса переберет Если
00:41:51 - 00:43:46
как бы это будет последний самый индекс который нас интересует объект Это получается скорость поиска будет пока он все объекты Так мы можем обращаться в принципе да стружки вычитал хорошо мы поговорили про коллекции Ну давай ладно чуть отойдем в сторону юайки уже Да поговорим с тобой давай ноги контроллере Давай базовый вопрос лайфхак контроллера Ну да получается контроллер начинается если мы Ну и в виде dloss [музыка] и Увела Пир не САПИР дело первыми убил где сапиров потом [музыка] там где-то еще внутри сидит этот
00:43:00 - 00:44:59
[музыка] а можно ждем находится конкретно перед каким либо конкретно Между какими подозреваю что после он вызывается то есть грубо говоря мы там это там где пересчитать плюс он как бы мы можем вызывать там методами где вызывает надо просто вспоминать но ты сказал после и перед чем значит перед появлением получается сейчас появится значит между визит и Вилла Пир Да хорошо Да ты затронул затронула три метода наших Да вот это соснилось это значит надо Хороший вопрос [музыка] Я тоже про это подсчитывал Но я честно
00:44:28 - 00:46:42
не помню Скорее В чем отличие давай с базы пойдем layoutsa views что это [музыка] говорил вот это вот метод который между визит лоуд и было Пир ваялся говорил мы получается там получается просчитываются размеры хорошо принципе с перевода должна быть Ну да типа если если что-то если изменилось то Если нужен типа пересчет Ну давай подумаем мы его сами вызываем где-то там называется системно Но мы его прописываем Я прописывал вроде бы сам Ну вот хорошо случае если тип случае если Ну то есть мы там грубо
00:45:54 - 00:47:42
говоря что этом делала Я уже не помню ну короче я его точно прописывал руками то есть грубо говоря если будет менять размеры то мы должны типа мы должны вызвать перерасчет смотри сказал что ты это сделал руками значит это какое вообще обновление добровольное принудительная или там еще может похоже на принудительное Да это вопрос или я нет я вот честно я ты сделаешь это руками Вот мы сейчас с тобой обсуждали ты сказал что типа если мне надо пересчитать что-то я пишу layout-e не тот в какой-то момент значит
00:47:03 - 00:48:40
что это значит ручное ручное в скобочках принудительно обновление хорошо А что тогда сайт несла я Ну типа что [музыка] нужно читать [музыка] ниц layout короче [музыка] сериал значит что это Белая и черная Да это не принудительно Ну как сказать она типа мы говорим что давай-ка при удобной возможности обнови-ка ты мне вот как следующий раз будет удобно обновиться тогда обновит то есть типа Понял да что мы говорим с теми типа когда удобно Вот хорошо Так давай еще чуть-чуть катимся к контроллеру ты сказал есть
00:47:59 - 00:49:47
такой метод как лотвью вообще надо изменять этот метод то есть мы обычно С точки зрения разработки верстки Зачем нам нужен видит Зачем Давай попробуем Ну то есть вот Buy он вообще как бы по умолчанию если ты типа storyboard делать что его нужно трогать Да что типа у тебя есть борде грубо говоря настолько понял Что понял сам инициализированный когда мы типа верстаем кодом нас этого ничего нету и тогда мы в лот люди грубо говоря нашим будет ну и соответственно лоуде там мы грубо говоря Куда Куда что и так далее
00:49:24 - 00:50:57
[музыка] Ну как-то тогда что типа ловлю для того чтобы инициализировать Юху главную [музыка] Ну хорошо хорошо так Давай с тобой поговорим вообще Ты знаешь что такое вот notification Center и как он устроен Нет не знаю правду говорю да это прям не могу никак добраться А вообще продать фикации про этот паттерна вообще какие-то паттерны знаешь на чем с этого паттерны можно чуть более тут но паттерны проектирование а-ля вот сингл тон а-ля делегат да и кита может еще знаешь есть как бы синглтон проектирование ты называл один
00:50:35 - 00:52:28
протокол Ну я не знаю вот фасад это об этом новость фасада потом есть факторы которые ты вообще использовал типа ну Я использовал из этого только делегаты а координатор координатор типа туториал смотрел там прикручивал понятно что типа хорошо слышал но вот на паттерне обзоры обзоре построен как раз таки центр Да там два метода у него есть Какими методами можно знаешь Ну примерно Ну наверное я предположу транслировать и получать скорее всего подписаться подписаться Да ответ на Триггер короче на колокольчик
00:51:51 - 00:53:43
Ну хорошо хорошо центр Значит надо быть я потом тоже почитать так Ну давай такой тоже чем в отличие фрейм и баланс Ага ну короче фрейм это грубо говоря отношения к некой супер грубо говоря ее координаты Супер баунцы это ее внутренние координаты системы координат Всегда ли совпадает Да в какой-то момент Они будут совпадать но только один раз да как говорится можно ли их сделать так чтобы не совпадали Конечно можно то есть там получается Bounce это же то есть можете потом ответить допустим да этот
00:53:00 - 00:54:57
чтобы сделать грубо говоря соответственно Там как бы ее фрейм принципе такой квадратный остался но изменился если так своими словами рассказывать Ну в принципе да логично Хорошо хорошо вообще слышал про такую историю как responder Да немножко читал но это о том что грубо говоря как система понимает что обрабатывать что обрабатывать им как нажать и в принципе то есть при нажатии допустим запускается идет [музыка] потом начинает проходиться типа по иерархии вшек пока типа не найдет соответственно вызывается внутри методы
00:54:07 - 00:56:02
попал не попал Ты вообще типа грубо говоря [музыка] ну и соответственно Он выполняет какой-то если мы типа респондера нет никакого также обратно цепочки выключается и ничего не происходит Хорошо А что вообще хит-тест обрабатывает именно не знаешь он короче насколько я знаю он во-первых система понимает куда-то то есть и она обрабатывает и покупал этот Point в рамки координаты какой-либо View Да который дальше будет типа должна будет ответственно там за обработку ты по кнопке по кнопке ты попал не попал мы понимаем поэтому
00:55:24 - 00:57:02
внутри было типа или за пределами этой кнопки хорошо Хорошо ну давай смотри как бы решал ты тогда кейс с этим вот смотри у тебя есть какая-то полосочка вот Ну вот экран экран у тебя есть полосочка вот тут да каких-то иконочек У тебя есть такой типа прозрачная кнопочка которая типа слайдами двигается вот и тебе надо чтобы обрабатывалась нажать именно на иконку которая под этим под кружочком под бубликом этим прозрачным нашим как бы это делал так Ну там наверное там можно типа насколько знаю через
00:56:29 - 00:57:59
самому типа руками кастомить типа [музыка] ну короче через Next через NEX вроде как-то можно самому оставить насколько обработчик этого события типа последующее правильно понял что типа ты имеешь ввиду нажатия типа да насколько знаю я как бы я прям конкретно Это самый читал это что можно типа закостомить поведение что когда респондером будет типа то куда прям по иерархии прилетел допустим от следующего чтобы дальше передачу грубо говоря на что Как происходит передача чтобы обсуждали Так что через Next
00:57:20 - 00:58:56
но методы какие есть Ну по методам я точно не скажу Наверное мы называли его есть Next 6 букв есть 6 букв они не 677 [музыка] [смех] Да я просто этим я как бы не сталкивался с этим надо уметь думать ты здесь знаешь вот информацию имеешь на руках должен иметь сопоставить две картинки и получить единое логично так это мы поговорили с тобой про респандер Чейн Так давай мы с тобой тогда поговорим про архитектурки до который мы с тобой начинали с дороги в начале ты сказал что ты работал Мы упомянули даже проблемы То есть мы
00:58:38 - 01:00:22
сиди контроллер также что у нас есть ты говорил что работал ну да Так немножко касался опять же там через туторы там какую-то там маленький приложении собирал с mvp Да в принципе нормально вроде бы а Что касаемо вот вообще Если сравнивать в чем не главное отличие но там как бы все это опять же это вообще все они в моем понимании для того чтобы грубо говоря отойти от View контроллера вот эту бизнес логику разделить до грубо говоря контроллера именно [музыка] мы юзаем там байдинги работает у нас есть грубо говоря
01:00:03 - 01:02:05
как-то штука называется [музыка] штука где все эти банки происходят не помню как это как-то как называется обычно на всех называется вот ну как короче это все для того чтобы грубо говоря разнести вот бизнес логику от Вот это сущности которые там за все падает отвечает с точки зрения но ты Ну хорошо А вообще в каких ситуациях можно применять mbc То есть если мы знаем что он такой да висит что он такой плохой у него массивный контроллер есть проблема Ну слушай ну не как бы [музыка] сами пилимся приложу потому что как бы
01:01:18 - 01:02:57
понятно что Месси контроллер сидела в принципе не мешает тоже как-то это модульная реализовать да то есть там не знаю красиво это сделать реализацию там вынести контроллер и как-то более-менее попытаться красиво это сделать Ну просто проблема в том что типа чем больше у тебя будет функционал этим как бы больше даже делать Насколько я понял что у тебя контроллер будет разрастаться из-за этого чем больше узнал у тебя будет появляться Ну можно как бы где применять наверное какой-нибудь проектик или какой-нибудь
01:02:21 - 01:03:45
там заморачиваться и как бы вообще все равно там пока на архитек на архитектуру хорошо осмотрел одну возьмем нормальную коммерческую разработку большой бы проект делал бы себе поняли что нет Да скорее всего Ну скорее всего да нет какой-то вот тебе Ты работаешь на аутсорсе все пришел мужичок такой говорит мне надо сделать приложение там вот Там пять экранов допустим там просто какую-то информацию отображать небольшую может он даже чисто для себя хочет что-то сделать говорит кого там денежку Сколько за сколько ну За какое
01:03:06 - 01:04:24
количество времени вы мне это готовы сделать Там пять экранов Давайте две недели там ну либо месяц Ну допустим абстрактно говорю опять же я понял да давайте вот мы Вам месяц делаем этот и все как бы разойдемся с небольшое приложение мало экранов и надо еще в сроки успеть Ну маленькие сроки стоят Сначала мы будем делать но разбивать логику конечно это круто но все же это время затрагивать Ну затрагивает время естественно Тут приходит Как бы наверное в целом что Ну надо оценивать Во первых все понимать
01:03:50 - 01:05:07
что типа что мы делаем те же принципе соли да в принципе они не всегда типа там в помощь на самом деле то есть надо понимать надо какую-то грань Типа все равно иметь что сейчас допустим это делать или сейчас там было будет целесообразнее Там если он реально какой-то хочет делать протокола тем более все зависит от того сколько времени сколько в принципе за это готовы платить если готовы платить там тебя за то что ты все покроешь тест будет крутая там архитектура наверное люди что-то платят Если как бы тебе
01:04:31 - 01:05:50
говорят Копеечка хорошо так так так так так так давай с тобой теперь поговорим про Да немножко про сетевой слой поговорим вообще какие ты знаешь методы растопи гет пост Ну а чем не очень отличаются Ну гет мы тянем просто отдаем А по базе методов Бади Ну по телу [музыка] gett получается что мы там мы [музыка] самом запросе явно отличается то есть мы должны грубо говоря если нам через пост Обращаемся нас была какая-то там аутентификация там допустим пройдена да там должны будем отдать таким какой-нибудь свой там так далее чтобы
01:05:15 - 01:07:05
там что-то такие вещи вообще ничем Но это ладно какие-то инструменты для работы сети использовал вообще [музыка] слизывать знаю что если моя как бы более там она высока уровне я не трогал сейчас есть небольшой опыт проекты где хочу через сделать а так в основном [музыка] что-то там достать данные по ссылочке и так далее понял хорошо а с внутренним базами данными работал ну так как это в принципе не боевое интервью нет да как бы есть я знаю что есть кордата в принципе да что есть кур дата что в общем я курдату читал немного Ну
01:06:30 - 01:08:37
вообще да ни разу не юзал во-первых в принципе все свои вопросы решал там обычно Они решались либо там User default сам если это ну какая фигня вообще либо там файл куда-то я особо не вылазил говорят надо Ну не знаю сохранял этот картинки кашировав Как каширал кашировал придумать хорошо есть варианты хранения данных локально локально Ну получается самая простейшая корда то же самое ну можно [музыка] [музыка] Зачем нужен Ну короче тоже самое грубое дефолт если так подходить просто защищены короче типа
01:07:58 - 01:09:51
ну порой Ну да защищенный хорошо Ну хорошо ладно про хранение поговорили что у нас еще много по точке чем делся сиди работал получается грубо говоря есть низкоуровневые наши потоки jcd это как раз а фишка которая нативная фишка которую вот позволяет нам работать грубо говоря с потоками через очереди где мы создаем типа очереди вызываем либо там последовательно конкурентной очереди и соответственно вызывать тоски создавать таски соответственно поток и очереди Ну в общем тред это сам поток это то что есть конечно
01:09:19 - 01:11:20
какой-то крутой там определение тогда что там что-то системой Да там насколько знаю там Я не помню тоже сколько там этих потоков есть тоже цифра какая то есть надо грубо говоря очереди это вот то как мы грубо говоря в этот поток если можно так выразиться ставить задачи То есть это факту как менеджер типа да вот грубо говоря есть вот поток Вот как раз таки что позволяет типа обернуть потоки вот такой более интересно хорошо давай так хорошо поговорим вообще знаешь такое тоже диспетчер к этому dispatch Work item
01:10:35 - 01:12:25
[музыка] пробежимся по основным элементом есть хорошо какие вообще ну ты можешь выделить основные проблемы у многопоточности которые могут возникнуть Ну да если тут штуки что рельс кондишен да или дадлоки Live locke наверное еще какие-то проблемы об этих проблемах Все говорят дедлоки это когда один Ну короче одна очередь забивает ресурс другой очереди соответственно ждут освобождения грубо говоря друг друга соседей получается Если там мы на грубо говоря на моим потоке там синхронно вызовем что-то
01:11:42 - 01:13:32
Блок Мы так типа и соответственно еще как бы на ней вызываем задачу и соответственно в этот момент Они созданы типа и вот уже как бы по умолчанию мы потоку они друг друга залочут короче [музыка] когда одновременно обращаться начинают там к одному и тому же Одно и той же сущности с разных с разных потоков Да и меняют как бы Ну соответственно мы непредсказуемая короче поведение хорошо Это не приведет но бизнес логику поломается с точки зрения поведения я как бы с этим не сталкивался прям чтобы как это вообще как это реализовать
01:12:46 - 01:14:38
себя на проекте Ну я прочитал что это когда наоборот что потоки друг для друга бесконечно типа начинает высвобождать обратное Короче я пока не знаю как это реализовать не виделся хорошо А какие-то вообще знаешь методы синхронизации потоков методы методы синхронизации потока не мог бы много Я не пойму вопрос Ну вот Хорошо смотри у тебя задача возьмем конкретный кейс у тебя при заходе на главный экран приложение тебе должно подключиться 10 картинок Да допустим прилетает тебе должно показаться экран только тогда
01:14:00 - 01:15:48
когда загрузились эти 10 картинок [музыка] в группу собираешь задачи и после того как Типа все они внутри типа группы есть [музыка] есть короче но надо наверное я так не скажу тебе не скажешь да я имею ввиду Типа если я сейчас начну типа это возможно делать Может быть надо просто типа возобновить себя в память хорошо есть какой-то метод типа который говорит что Мы закончили Да хорошо Это первый способ какие есть еще способы синхронизации [музыка] в гцд да да [музыка] не знаю Ну допустим у тебя возникло ситуация Ну давай хорошо
01:15:03 - 01:17:03
возьмем кейс какой у нас есть проблема рейс Condition Да как можно [музыка] Ну там насколько знаю есть функционал что типа [музыка] чтобы к нему типа К объекту не могли обращаться потоков типа одновременно что-то это называется вроде simum Ford Ну да есть такая штука [музыка] [музыка] Ну явно У меня нет этого знания в голове это сто процентов могу сказать знаешь такое барьер я слышу Я слышал но я вообще такое Лог точнее она слог знаю что такое слип хорошо не смог это уже родители локоть хорошо скажи мне на каком вообще потоки
01:16:36 - 01:18:46
обрабатываются Ну весь юань всегда обрабатывается на Main потоки все что типа все что юзер нажимает кнопочки и так далее чтобы не задерживать обрабатывает это все главные потоки А что вообще отличие мои на Global есть короче вот грубо говоря Один наш Main все что допустим задачи Ну допустим тот же самый подтянуть эти картинки записки какой-нибудь это что-то отправляется в background тех кто пока не потянется а потом потянулась мы там вызываем возвращаем короче в моей ночи допустим картинки погрузились
01:18:00 - 01:19:47
В общем такие Global это короче все что ну там там вроде бы нет как конкретно Да что это типа там Сколь сколько там потоков Мы просто знаем что есть один Main и какие-то там короче globall мы типа на них можем создавать это все будет обрабатываться в сервис там есть штука такая приоритетами выставляя их там системе даем понять что это задача приоритетная потому что Юрий инициализировал допустим очень приоритет просто когда-то должны там это сделать как будешь свободен вот понял Понял чище такого Можно спросить там
01:19:15 - 01:21:00
[музыка] уже можно вопрос вот насколько вообще про них часто спрашивают и всегда спрашивают операция про операции но Operation который да про них редко спрашивают типа спрашиваю знаете ли в чем отличается сиди от Operation Кстати может есть это типа Наверное тогда что типа еще более верхнего уровня а ну что там какая-то Честно не знаю даже я поэтому и спрашиваю типа Ну опираешь да типа Надо хотя бы узнать чем их разница в основном спрашивают но это если сама вакансии не указано вряд ли и спросят Ну типа нет могут
01:20:14 - 01:21:57
спросить мне один раз просили типа знаешь какой способ чувак спрашивает от него лица говорил вот знаешь какие Какой новый способ ввели там недавно там это многопоточке говорю какой я помню вроде недавно читал просинговой такой Ну какой говорит Ну ладно хорошо Зачем спросил что я говорю начал про него толку ты на нем не пишешь Ну короче минимум надо там хотя бы знать до типа хотя бы знать что это такое китам приколы есть вот операции Я просто никогда типа не видел операции так часто используют Но их
01:21:19 - 01:22:41
прикол в том что у них есть там что-то делать с ним и так далее еще чуть более верхнего уровня чем же сидишка но по большому счету части Все наверное было бы ну давным-давно все было бы там если вкрат спрашивает было бы то есть это сейчас был бы какой-нибудь так Ну хорошо что ты мне скажи как тебе круто круто вообще любая где мне могут тыкать тыкнуть мордочкой в пробелы это супер что этот ну только рад если это тем более сохранится сохранится и там будет типа фидбэк чтобы я записывал Да я так что сейчас я для меня это
01:22:02 - 01:23:37
вообще круто то есть Спасибо во-первых до мог Собес в принципе как я сказал это всегда круто было вполне комфортно Даже хоть под запись нормально Ничего страшного и жду фидбек чтобы начать копать дальше хорошо сверху вниз так Мы начинали с тобой соли нормально Это норм так яви контроллер Ну да чуть можно еще подучить но не подучить чуть-чуть повторить там Да вот эту всю историю чтобы ну чтобы без наводок типа сам такой пошел так рассказывал Да контроллер норм потом Ну вот видишь лоялся тебя подловил
01:22:58 - 01:24:37
чуть-чуть да Потом архитектуркам тоже Можешь почитать поизучать потому что я как бы тоже ну со всеми архитектурами ты конечно можешь за всю Может ты можешь поработать но все же надо понимать хотя бы на каком-то базовом уровне в чем их отличие чтобы ты применял когда потом так что мы с тобой еще такого было примечательного же сиди Понятно почитать надо повторить углубить знания свои детишки операция Понятно тоже был так сейчас какой там был кейс вы думали вроде про диспетчеризацию диспетчеризацию повторить тоже надо я
01:23:51 - 01:25:18
вижу что помнишь что-то Помнишь Но что было четкая картина Да как эта штука работает вообще механизм и так далее так в принципе хорошо нормально я мог Вы хорошо прошел для боевого довел эти моменты под это подкорректировать вообще шик будет что согласился я тогда ты знаешь там человек большой что время уделил комфортно Надеюсь это кстати говорил Да смотреть как надо как надо отвечать короче планируется у тебя еще до iOS Да конечно с кем что тоже послушать Да да я же буду заливать на канальчик будете смотреть
01:24:38 - 01:26:06
будет пока Твоя телега да да ссылочки в описании [смех]
01:25:47 - 01:26:01