Middle за 1 год? Собеседование #3 frontend разработчика

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

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

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

    00:00:00 - 00:01:32

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

    00:00:50 - 00:02:20

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

    00:01:48 - 00:03:18

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

    00:03:00 - 00:04:50

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

    00:04:38 - 00:06:06

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

    00:05:34 - 00:07:12

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

    00:06:42 - 00:08:25

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

    00:07:44 - 00:09:17

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

    00:09:03 - 00:10:44

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

    00:11:42 - 00:13:21

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

    00:13:33 - 00:15:03

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

    00:14:59 - 00:16:40

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

    00:15:58 - 00:17:49

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

    00:18:02 - 00:19:37

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

    00:19:33 - 00:20:59

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

    00:20:53 - 00:22:46

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

    00:23:43 - 00:25:28

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

    00:26:30 - 00:28:05

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

    00:27:31 - 00:29:12

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

    00:28:44 - 00:30:22

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

    00:29:48 - 00:31:27

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

    00:31:20 - 00:33:00

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

    00:32:45 - 00:34:13

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

    00:33:55 - 00:35:30

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

    00:35:04 - 00:36:46

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

    00:36:11 - 00:37:42

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

    00:37:06 - 00:38:51

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

    00:38:38 - 00:40:08

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

    00:39:37 - 00:41:17

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

    00:41:36 - 00:43:16

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

    00:42:53 - 00:44:26

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

    00:43:42 - 00:45:19

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

    00:44:47 - 00:46:09

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

    00:45:30 - 00:45:45