Подготовка к собеседованию на Java 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 каналы и чаты
Транскрипция видео:
Всем привет Сегодня у нас новое собеседование да как всегда соответственно сегодня с нами джуниоржа в разработчик ТЭК поздоровайся Всем привет отлично Ну и сегодня соответственно мы будем тебя собеседовать посмотрим проверим твои скиллы соответственно Давай начнем наверное самого такого базового Просто я видел твое резюме ты не так давно работаешь получается да с ноября Если не ошибаюсь Вот может и рассказать о своем опыте как познакомился джавой я видел что ты не только там разработчики скорее такой
00:00:00 - 00:01:12
Full stag разработчик может быть да Окей как программирование универе на случай Java Я понял что это мой язык потому что Java и работает тоже поджала И почему сказал что насчет иногда нам приходилось делать я вынужден немножко то есть минимальные знания понял Можешь ли ты рассказать условно своей какой-то последней задачки либо задачки которые больше всего запомнилась в работе Что ты вышел после работы сказал класс я это сделал это очень круто Да это была безопасность мне приходилось делать авторизацию и
00:00:36 - 00:02:04
аутентификацию через Spin Security Talking через OK но мне было сначала сложно Я не понимал потом что-то сделал потом это сказал что это сейчас что-то не читабельно твой код немножко Так я еще сделал их чище понял скажи пожалуйста на текущем месте Ты сейчас как бы как тройни Или как Джова Джуниор ты говоришь ментор есть но последнее было то что у меня было стажировка и меня были ментора и командники благодаря имя и с благодарности сообщаю что я теперь начинается должность это круто Очень Давай тогда наверное
00:01:38 - 00:03:18
потихонечку перейдем уже непосредственно спрашивать как всегда стандартные ситуации скоро потом соответственно коллекции Ну и так Давай начнем с таких несложных вопросов Можешь ли ты рассказать вот есть абстрактный класс Да есть интерфейс может быть Где где ты их использовал и в чем разница Согласно классы обычно использую Когда нужно группировать данные общую группу сделаете Например я один раз мне нужно было возвращать данный через авторизацию либо же это просто строка мясо либо же какой-то объект и просто как обжиг класс который
00:02:34 - 00:04:01
можно просто один интерфейс который И вот так я использую интерфейс так на класс использовал это когда я что-то планирую какой-то функционал Я хочу чтобы он был уже не меняем точнее уже по дефолту был и тут момент и в целом есть то что я бы использовал в целом отличие это то что интерфейс [музыка] Кроме того что несколько раз им комментирован еще не может быть полей и там под фокус только методы которые без реализации в абстрактном классе там есть поля и методы которые уже реализации имеют Слушай а вот ты сказал что в интерфейсе
00:03:21 - 00:05:13
не может быть методах реализации Ну как бы изначально да А есть какая-то возможность там задать реализацию в интерфейсах может быть помнишь может быть знаешь такой функции вначале не было но наверное с 8 Java есть такое дефолтный термин ключевое слово которое через него можно создавать когда допустим наследуемся от абстрактного класса частенько нам приходится реализовывать такие методы типа знаешь у них может и рассказать условно для чего они нужны Да таком просто коротко и в целом Может быть как
00:04:22 - 00:05:44
они примерно устроены там внутри что какая базовая реализация этих методов может быть Ну вот а это [музыка] два метода есть у всех объекта потому что он прописан в самом же классе которые супер класс всех объектов и Зачем он нужен очень часто Нам нужно сравнивать объекты И для этого есть как он устроит то что он сравнивает значение полей и в то же время если все это удовлетворяет то она считается равным и это такое число который сгенерировано при помощи суммирования умножения на определенных константу и Шкоды полей и есть такая
00:05:11 - 00:07:01
вещь то что всегда когда что-то одно определяет то и другое нужно и почему это то что у них то что если объекты равны то значит их школа должна быть но если [музыка] что-то еще было ну смотри я в целом понял подскажи пожалуйста вот и сказал что да что если объекты не равны то хэш коды могут быть равны А с чем это связано потому что внутри себя вроде бы и не только поля значений сравнивать Но их Шкоды вроде себя сравнивает и оно должно быть только при этом Смотри я конкретно Ну и коллс не всегда
00:06:09 - 00:07:54
Даже скорее не так-то и часто не очень часто видел реализации используется Вот Но что хочу сказать Я скорее о другом Что такое коллизия слышал Да коллизия можно сказать да это Ну то что я слышал это Например в кошматах Когда в бакетах он работает очень связан со шкодом и когда хэшкот алгоритм плохо разработан бывает такие случаи что все объект подают два или один пакет и не работает Как он должен то есть эффективность снижается Хорошо а ты не слышал про с этими согласен да Абсолютно верно ты не слышал
00:07:10 - 00:08:57
ли ты про коллизию просто обычно крышку тебе без использования мап и вот то есть смотри допустим сказал что у нас могут быть например два разных объекта и ты сказал что у разных объектов коды могут быть равны как это происходит Почему это случается возможно потому что у них константы которые самого начала может быть значение полей объекты разные может быть это Константа которая обычно там ставится не простое число тоже написан правильно то есть хэшкот правильный поля разные там подсказку небольшую что
00:08:04 - 00:09:41
возвращает хешкот какой тип данных сколько влазит помнишь примерный примерно я точно примерно 2 степени может быть Окей хорошо а вот такой вопрос Смотри вот Представь Ну и там получается короче вот минус 2 миллиардов двух миллиардов правильно сказал всего получается 4 миллиарда от разных значений правильно А вот людей на земле сейчас 8 миллиардов Вот если сейчас я у каждого человека мы все разные Да возьму хэшку каждому достанется уникальных [музыка] Ну да это я к тебе к чему подвожу что в такое
00:09:13 - 00:10:42
тоже случается как раз в хешкоде это называется краска лизией просто обычная коллизиях и Шкода Вот то есть просто разные объекты Но может так произойти что Случайно у них окажется случайно код написан правильно в объектах разные поля но так может произойти что соответственно [музыка] круто круто что еще что-то узнали Так может ли ты рассказать что базовым уровне так обустройстве памятик что это такое да это две память которые Ну часто используется я считал что есть еще больше И еще такие детали как
00:10:11 - 00:11:55
объект такой и где находится и тут думаю что это Взял для того чтобы сделать более эффективное работать Потому что когда работаешь с маленьким количеством быстрее чем сразу же с объектом не разделяет полными данными и может быть связано еще то что работа и где будет работать коллектор в куче То есть если по счетчик который считает ссылки на них 0 то он будет очищать их из кучи Круто Круто Слушай вот ты сказал интересную штуку про стринг пул и Ты не поверишь но я специально для тебя выписал Следующий
00:11:17 - 00:12:55
вопрос про строчки как раз ты затронул эту тему Так что давай сейчас я наверное расшарю экран это будет такая Задачка условно Визуальная так так давай только увеличим вот как так смотри у нас создание 5 строчек [музыка] соответственно строка 2 строка 300 4 строка 5 и потом Они сравниваются между собой Вот можете сказать Вот так вот через равно где будет труп где будет Фолз может какие-то ошибки будут я не знаю например да постараюсь этот оператор Он сравнивает становится ссылки и так первое с 11 это через кавычки и она
00:12:20 - 00:14:09
находится Но это объект и она находится в Стрим поле и когда мы гуляем через кавычка Но если такое же значение если он просто ссылка создает новый и думаю первый будет когда мы через именно через неё оператор Он игнорирует сравнение просто создает Объект который нужен другие и тут что-то новое слово Интернете Так попробуй подумать там Если ты не знаешь но может быть это Ну то же самое как через кавычки там может это какая-то внутренняя резятся то же самое и может быть там интернет пол если есть слайдется
00:13:19 - 00:15:04
это догадки так ты Ты абсолютно здесь прав твои догадки оказались правдивыми действительно действительно интернете независимо от того там через нее string или как создана она принудительно сначала ищет в поле А после этого уже создает если [музыка] Мне кажется оно не равно оно высота бег создает Мне кажется на самом деле string value of здесь как раз будет как во втором поэтому здесь не совсем прав но принципе ничего страшного пойдем Давай дальше Вот ну круто слушай его мне я сразу этой задачкой проверил у тебя дали нам
00:14:22 - 00:15:44
большое количество вопросов Так что я доволен хорошо Так давай немножечко Я услышал что ты знаешь немножко проходишь мапу Давай в общем я спрошу у тебя такой вопрос Смотри Вот у нас есть интерфейс интерфейс лист интерфейс с например Кто у них родитель Да чего они имплементируются А знаешь ли ты какой метод есть Да там вроде бы это рейд и трейдеры вот Ага OK Ну в целом Да я не буду спрашивать я думаю давай ладно быстро спрошу Расскажи прям буквально в двух трех словах Да разницу реле стареньких листа просто одним словом сказать
00:15:11 - 00:17:02
основан на массивах лист посылается друг на друга если коротко знаешь что такое большое нотации Да можешь ли Давай Допустим что мы спросим вот и поиск Какая сложность неправильно сказал а это будет линейно Окей окей круто Можешь ли ты это уже затрагивал эту тему касаемо хэш Сета хэшмапы вот знаешь ли ты вот твой первый вопрос как связаны между собой мэп и сет [музыка] Вы имеете Ну например можно можно себя создает объект и значение которым передает он ставит ключ он ставит там есть обжиг который
00:16:41 - 00:19:00
Да Слушай а вот такой момент смотри есть такая штука называется она есть И что это такое Мне кажется это так сказать нагруженность может быть сайта там сколько уже добавлен элементов и чем больше элементов объектов это может больше капец идти добавлены элементов или что-то другое давайте начнем немножко Что такое попасть Как ты думаешь как считаешь это может быть так сказать число которое зависит от количества общего Вектор чем больше там тем больше когда сети это мои догадки хорошо давай я немножко
00:18:33 - 00:20:25
помогу тебе догадываться к опасности задается изначально при создании реалиста при создании допустим кошмапы это по умолчанию что создается Что такое может быть это общее количество которое дается количество чего Да тут ты прав соответственно к опасности это просто Изначально и значение Да сколько создался допустим ячеек для реалиста либо бакетов для хэштета например [музыка] вот такая штука так соответственно хорошо а слышал ли Ты что такое про такой параметр как лот фактор например Ну да Это вроде бы Когда
00:19:30 - 00:21:03
например Бакет и 16 создается и вроде бы когда много уже объектов и может не помещается эти слишком говорить но дальше [музыка] Я сказал применение но сама есть что насколько лист и божеств нагружен уже Ну соответственно Да по этой поэтому параметру определяется загруженность допустим сайта Да вот так что Окей слушай Сейчас пойдут такие может быть где-то вопросы потруднее Может ли произойти такая ситуация Допустим хашмаки что мы потеряем объект то есть условно Я в кошмаку добавил объект допустим эта машина потом я пытаюсь
00:20:24 - 00:22:17
машину найти в этой хэшмакинули хэште не важно Пытаюсь ее найти не могу найти думаю да если переопределить после добавления метод прям как мы переопределим код После добавления но ты близок близок да то есть кодом тут есть но давай подумаем все-таки правильно формулируем что надо сделать но у меня только 1 определение приходит но я не знаю смотри переопределение то есть идея изначально неплохая да то есть что-то нужно сделать хэш-кодом я с тобой согласен Но мы же не можем переопределить на ходу да то есть
00:21:43 - 00:23:04
вот мы запихали объект потом переопределили метод и так сделать не можем Да у нас уже есть объект соответственно ничего самим классом сделать не можем Но соответственно смотри Давай немножко разовью твою мысль что ты догадался ответы я тебе рассказал ты сказал про школу так При каких условиях что должно случиться чтобы потерялся Ну как создается сами кладется в хэш Пап это то что генерится код этого объекта из этого вычисляется индекс какой баке то он пойдет и там сохраняется и зависимости от сколько там объекта добавляется
00:22:37 - 00:24:15
и каком случае может потеряться Ну если изменится кэш-код который выделяется супер Да это правильно совпал и не можно найти Да и что и как как его можно поменять то есть ты правда абсолютно если появлялся хэш код то объект Мы можем потерять А как изменить вот нас объект [музыка] Ну если переопределить на ходу нельзя то может быть значение поменять вот значение может быть поменять полей Да и полей Да если ты поменяешь смотри помягчение полей будет другой уже Мы пойдем искать его в мапе и не найдем правильно Вот и все И тогда
00:23:37 - 00:25:11
вопрос Вопрос такой да завершить эту тему тогда какие какие объекты каких классов нужно класть в кий чтобы мы не потеряли какие классы нормально класть которые нельзя потерять Какие лучше не класть в ключ [музыка] кажется это который имеет одно поле string либо же Объект обертки который только одно значение может такие сказал верно нормально но вот обобщил неверно Да вот смотри если я могу объект какого-то класса взять и изменить то объект потеряется строку я изменить не могу Именно поэтому я положить какие классы
00:24:40 - 00:26:36
должен туда статичные Ну условно говоря да Ну не совсем статичные Да тут как бы ну по сути сейчас короче называется это таким крутым словом ему table неизменяемые блин да но я тебе в целом понял да то есть вижу что слово то не вспомнил но суть Типа мы с тобой развиваем принципе я вижу что в общем В общем хорошо ладно что ты знаешь много по точности вообще может смотри я пока не знаю твой уровень Поэтому пока просто спрашиваю можно сказать в целом с чем заработал что ты делал сам что ты делал может быть на работе многопоточностью
00:25:38 - 00:27:05
я могу как-то защищать Я сам так потоки создавать иногда приходилось защищать может какие-то методы точность может быть то что сохранились добавлять Окей Ну давай поговорим тогда очень хронозе что это такое Как это работает вообще какой принцип работы синхронайза и для чего это надо а бывает часто что у нас например какой-то может быть запись есть и у нас есть многопоточка которая несколько но сразу в одно и то же время пытаются изменить эти данные и тут может быть ошибка и мы можем чтобы только
00:26:27 - 00:27:54
произойдет и благодарность мы по очереди допускаем к нашему ресурсу я так это понимаю Окей Ну соответственно синхронизируем работу с этим ресурсом Окей А вот смотри мы нашли напишем так синхрона если там круглых скобочка что-то еще пишем Вот для чего мы это пишем что этих скобочках что это такое вообще для чего Ну я на самом деле там в методах есть такое просто термин сохранять можно самому писать скобках я не писал Но я попытаюсь догадаться может быть это такое количество которое допустимо к этому ресурсу в одно и то же время может
00:27:24 - 00:28:58
быть нет Я с тобой не согласен для такого там для определения количество семафоры и так далее поэтому почитать соответственно здесь я говорил о мониторе знаю что такое монитор что у каждого объекта существует Что такое слышал когда-нибудь Нет ну хорошо тогда тогда Почитай можешь прям сразу там все записать куда-то почитать про мониторы каждого объекта вот просить штуки Окей слышал когда-нибудь про такие вещи как рейс Condition Deadlock может быть очень то что возможно когда много многопоточности объекты так
00:28:14 - 00:29:37
сказать может быть работать слишком долго либо же вообще останавливается и другие потоки идут И тем самым засоряют память и в целом ему даже работоспособным быть Здесь все-таки тоже неправда по поводу дедлока бедлок это по сути Когда у нас есть какие-то ресурсы Да и мы пытаемся обоими потоками получить к ним доступ и обоими потоками блокируем доступ другого потока 2 потока получается блокируют друг друга то есть один не отдает по сути даже такая приводили пример условно 6 философов сидят за столом у них на
00:29:13 - 00:30:39
столе лежит 6 вилок для того чтобы поесть еду им нужно Каждому по Две вилки и вот одновременно они запускаются и все хватает правую вилку и все находится таком дедлоке они ожидают левую вилку якобы не существует потому что все забрали по одной по сути говорят соответственно Ну как бы можешь тему многопоточности изучить подробнее она в целом у всех западает это нормально В чем-то вот Ну окей я понял понял Давай наверное перейдем к Spring Goo тоже можно сказать свой уровень типа что делал там не знаю базовые контроллеры
00:30:02 - 00:31:07
может быть какие-то может быть что-то потруднее ты говоришь Ты работал Security расскажи просто в целом свой опыт именно со спрингом ну и соответственно я продолжу там вопросиками [музыка] вот что дело может быть тоже скажи там немножко Вот об этом какие-то контроллеры сервисы да писала контроллеры сервисы авторизации и продать сертификации принимал там запросы и проверял валентность если все-таки ставил токены и очищал их закрывал доступ другим нужно зарегистрироваться Я в основном Окей понял Хорошо Я думаю что
00:30:38 - 00:32:23
начнем со Spring вопроса Ты вот когда создавал всякие сервисы контроллеры и так далее у них у всех у всех бинов которые есть у них есть свой стол может сказать о том какие существуют скопы Да в общем-то такие основные вроде бы есть три дефолт на который это синглтон Prototype И третье было я не смог вспомнить еще можно брать самим создавать дефолт насколько это он который при создании создательный объект и уже последующем только вызывает его ссылается на него когда мы изменяем полный и он при создании не
00:32:13 - 00:33:57
вызывает имеющиеся и не проверяет имеет создает новый согласен да единственно что смотри Их существует не три больше там есть потом httpsion соответственно requestion и в целом Окей самое главное те которых я спрашивал Использовал ли ты когда-нибудь например условный Просто может а [музыка] прям на практика Так сказать осознанно я не использовал [музыка] из примера не смогу сейчас я например привести Ну это хорошо это ничего страшного так хорошо Скажи пожалуйста вот я сделал класс на джавелись просто написал Там классный
00:33:16 - 00:35:07
паблик класс Я не знаю условно Kitchen Service будет так никаких аннотации не поставил ничего не сделал вопрос как сделать так чтобы у меня создался да сингл тон Бин при запуске какими нужно нотации поставить может быть что мне нужно сделать вообще чтобы чтобы этот класс Да этот класс отвечал нужно и при запуске [музыка] вроде все смотри чтобы создать Ты же правильно Я думаю ты в проектах использовал наверное Spring Boot правильно или спринг обычно Окей смотри еще у нас есть такая штука что ты можешь условно написать компанию
00:34:20 - 00:36:05
написал на классику но при этом ничего не создалось Знаешь ли ты почему это может происходить это связано с такими основными аннотациями условно основными аннотациями может быть имейте ввиду что мы вообще не создали там не написали аннотацию я именно говорил да да об этом говорил что мы можем допустим указать указать компании скан другой папки например вообще да либо написать что мы сканируем папку [музыка] ага но в таком случае можно вы аннотация compantscan в скобках указать package чтобы он не только свой обычно работает
00:35:38 - 00:37:23
внутри pkg и можно указав ссылаться на другой пока чтобы он тоже сделал так отлично давай перейдем дальше Следующий вопрос Смотри какая ситуация мы с тобой обсуждали до этого интерфейсы вот я сделал такую штуку у меня есть интерфейс я от него я его имплементирую Да в двух классах и соответственно на обоих и прописал компонент компания И потом я делаю еще один класс какой-то и внедряю зависимость и пишу интерфейс просто внедряю интерфейс таком случае какой Какую из двух реализаций возьмет спринг и как эту проблему решить Может
00:36:44 - 00:38:14
быть Обычно когда мы через интерфейс делаем Он подошел то берет если один создан он его берет но когда уже несколько не кажется конечно Мне кажется нужно будет в аннотация там инъект либо же может быть написать какой именно указать название Может быть так ну слушай мысль по сути правильная мы можем соответственно указать либо выбрать тот конкретный условному никнейму выбрать нужный нам класс либо использовать может быть это создает ставится вы имплементированном классе это будет считаться как дефолтные
00:37:30 - 00:39:28
которые берет Интерфейс Да да то есть если у нас много разных реализаций можно один поставить Праймари он будет использоваться Окей Сейчас наверное такой посложнее вопрос после этого перейдем к базам данных и потихонечку там будем смотреть так соответственно знаешь ли ты что такое прокси в принципе и примеры этого прокси просто у меня были нет это просто что-то такое Это просто Приятно приятно а вот аннотацию транзакшнаул используешь но использовал может быть используешь да антоциана типа ну она Я использовал
00:38:52 - 00:40:27
работе с BD и Обычно когда я не постам создаю репост а именно при изменении апдейты И вот оно обычный метод он делает и Ну еще кое-что то что синтаксис наверное то что ты можешь просто взять поработать и тебе не обязательно делать сейф он за тебя сделает такие только знания соответственно если какая-то ошибка произойдет во время выполнения места которые поменьше если сильно то может это ошибка будет то что несколько потоков попытались заменить Хотя нет он это и защищает Ну а чего вообще защищает транзакшна Для чего
00:39:54 - 00:41:44
нужен для чего защищает многопоточных от того чтобы несколько потоков изменили один тот же ресурс в одно и то же время Слушай тут не совсем с тобой согласен да Точнее не согласен Давай вернемся к тому что А что такое транзакция просто А вот если база данных переходить запроса [музыка] хорошо когда в банке говорят я совершил транзакцию деньги перевел там тоже Почему именно транзакция почему-то не перевод Почему в BD это не подключение именно транзакции транзакция на все включает какую-то очень одну
00:40:55 - 00:42:27
важную штуку [музыка] вот я так скажу смотри если бы не было транзакций эти приведу пример Да вот с банком с тем же Если бы не было таких понятий как транзакция то случится такая ситуация я отправил деньги Да кому-то в этот момент произошла какая-то ошибка на сервере деньги с моей карточки сняли а другому не зачислили то есть момент у меня первым действием сняли деньги с моей карточки потом ошибка все поломалась и все а транзакция она защищает от этого вот таким образом [музыка] Мне кажется более-менее
00:41:53 - 00:43:21
было может быть то что сначала придется проверка то что возможно такое опираться и успешном проверки уже реальный запрос выполнять может быть Слушай ну как бы то что догадываешься Круто Вот Но это неправильный ответ вот ничего страшного просто как бы поизучать что такое транзакции что такое транзакшна в целом Да тоже можете себе записать пока что в целом это Окей вот так давай увидимся дальше соответственно А знаешь ли ты вот базы данных вот конкретно вопрос Какой у меня что такое слышал может быть это тоже связано
00:42:43 - 00:44:20
с транзакцией Просто вдруг мы выйдем на правильный ответ ничего страшного вообще нет Давайте да полноценный перейдем глазом данных какие-то вообще использовал работать А что там делал какие-то селекторы разные Не только но и операции были сложные Вот можно сказать так основные виды Джона В чем разница может так в целом описать Ну и на имеется ввиду когда мы двойним другой Table так сказать так чтобы были видны значение которые есть там и там Left это тот который в начале который не тот который видны
00:43:34 - 00:45:20
это тот который делаем и значение должно быть точнее только там есть и нету в нашем Table которым если там вроде бы все есть и можно значит что значение которые только есть тут либо же там то есть нет что там и там есть [музыка] А знаешь ли ты что такое операция групп Да но группирует по определенному полю Ну давай допустим вот задачку задам у меня условно есть табличка она условно говоря давай я напишу тебе наверное в чат Да она на самом деле очень простая там есть несколько полей буквально это поле ID
00:45:01 - 00:46:46
поле ID есть поле Сити город по сути говоря и есть условно говоря Марк оценка то есть город и оценка вот вопрос как мне найти Как мне найти среднюю оценку этот условно говоря подошел экзамен вот у нас есть эти пользователи город его оценка Как мне найти среднюю оценку всех учеников из Бишкека можно просто среднюю не общую да да среднюю Если так то думаю можно там сумму Марк и деленное на Count Mark и группа Сити Слушай интересное решение выкрутился Да можно сказать но на самом деле для среднего учения используются
00:46:07 - 00:48:08
просто пишешь и пишем Марк но в целом Окей я вижу что идея у тебя как это сделать есть Так что в целом Окей Нет проблем немножко интересно подошел так что такое индекс знаешь для чего они нужны Ну есть база знаний но Окей я скажу индекс не обязательно можно игнорировать Но почему она не существует то что при большом колесе данных в нашем BT она начинает тормозить и мы можем использовать структуру созданную несколько типов весь индексации и можем относиться использовать это как работает как справочник начали книги там может быть и
00:47:28 - 00:49:17
когда мы не ищем что-то когда сделать мне по всем проходимцы полям А мы сразу же идем к той области где она может храниться и там уже ищем тем самым увеличивается эффективность в разы на базу понять Какие понятия есть [музыка] у тебя написано что ты знаешь что такое Ты знаешь что такое соли Расскажи что такое Солид и может быть если ты вспомнишь или если знаешь или если применял расскажи Да туалет первый singlesponsibility очень для меня важный правил потому что будет если страдаю все это были освоил
00:48:25 - 00:50:02
это то что класс либо же метод должен иметь он должен только одну задачу вот если коротко и [музыка] Можете пожалуйста Напомнить конечно Open Close Prince Это то что он должен быть открыт к функционал должен быть открыт к дополнением но закрыт к изменению то есть написано очень много вроде бы стоил путается Это ласков был там сложно было что-то было вроде Глазков [музыка] Я всегда затрудняюсь ответить и допустим что я не знаю ничего страшного Это такое один из самых Ну из пяти принципов самый сложный
00:49:27 - 00:51:15
наверное для понимания поэтому вообще не проблема Давай дальше тогда она подразумевает что лучше много маленьких фокусированных интерфейсов чем один обобщенный большой Интерфейс [музыка] Это то что зависимость должны зависеть А можешь пример привести последнего такой Явный спрингал буквально мы с тобой даже обсуждали это то что весь день из-за этого то что мы часто используем создался Spring что автоматизировать часть это то что когда мы зависим от чего-то мы создаем какой-то класс и нам сказать пример это то что бины вот это
00:50:49 - 00:52:25
есть мы не создаем то есть вручную делаем через конструкторы сеттеры мы просто делаем через аннотацию там товар либо же инъект и когда мы создаем и либо же используем этот Бин Для нас Для нас он сам внедряет эти бинов тут ты говоришь про депозиции injection а там другая штука немного но в том смысле если сейчас не можешь помнить что страшного Хочешь пойдем дальше хочешь подумать ну думаю что мне нужно читать Ничего страшного Давай наверное тогда я поспрашиваю тебя протестирование Расскажи как ты пишешь тесты какие они
00:52:02 - 00:53:44
что-то используешь для тестов Может какие сценарии покрываешь Да ну тесты я научился Вот время недавно и я использую и макиту доставка писал и покрывал юнитов и интеграционный а знаешь чем отличается условно например мог от спая и отстала я не могу дать определение потому что не знаю двух остальных [музыка] делать заглушки для зависимости OK А вот каких сценарий проверяешь ты всегда смотришь только на позитивные какие-то или какие-то еще может быть знаешь нет но конечно же позитивно смотрю и нужно но я
00:53:09 - 00:55:03
смотрю еще отрицательное то что например есть ожидаемые ошибки которые выбросить в определенных случаях это проверяю вот а проверяешь немножко ты под завис можешь пожалуйста повторить буквально там свой ответ последнюю минуту хорошо положительные и ожидаемый ошибки понял Смотри делаете такую проверку такие ограниченные тесты Например у тебя есть метод который говорит что если стро меньше чем 5 символов то это плохая строка и вот ты проверил условно что ты вел на 6 символ что вел 4 символа это все позитивные какие-то сценарии
00:54:30 - 00:56:01
различные там 4 может быть не позитивные там хочешь выбрасывается например негативный допустим негативный может быть естественно допустим и так далее А вот граничный да это когда ты используешь и ты вел строку размером 5 вот делаешь это такие тесты пытался не писать [музыка] Я имею что допустим у тебя Ну вот есть тесты позитивные негативные есть такие слова граничные посередине условно говоря Вот чуть больше допустим программа уже поломается а чуть меньше она будет работать прекрасно и вот границу нужно тоже проверять писали
00:55:35 - 00:56:47
когда-нибудь такие тесты [музыка] Нет не писал такие Окей хорошо Можешь ли так Вот коротко последний на вопрос задам вот что-то использовал или gradle при сборке проектов Я всегда использовал А может ли ты рассказать Какие основные там теги есть вот в том файле так общее устройство [музыка] там где описывается имя которое будет [музыка] версия для версия еще [музыка] Да пока ему только это сказать мед плагин с еще есть может быть помнишь такое Да вот этот плагинс Окей Ну я в целом понял окей Так ну и Давай последний вопрос
00:56:22 - 00:58:23
наверное Может ли рассказать о тех командах которые в гите пользовался и вообще часто пользуешься там в консоли или в основном все делаешь в идее Как ты Что делаешь В общем как я себя консоли Ну да я использую Какие команды используешь консоли есть это сокращенное историю комитов [музыка] часто используемые Окей Вот ты сказал все-таки у меня есть еще один вопрос последний ты сказал про про мерж и про rebase в чем их мерч она такое более такой безопасное и оно только одну Я знаю это то что объединяет ветки само которое последние
00:58:07 - 00:59:58
двух веток одно в определенной из них но история из этих она сохраняется как отдельное ребейс оно то самое может Соединить две ветки но вроде бы она уничтожает там одну ветку Да который между другое но одно целое и вроде бы советую короче делать Что при репрессии сложно обратно сделать Ну вот тут может тоже прочитать тут может уже прочитать потом Да после нашего собеседования соответственно конкретно Ну если очень просто то меж берет и все изменения которых нет в одной ветке просто в один коммент пихает и как и дополнительный
00:59:32 - 01:01:00
коммит сверху добавляя а rebase он берет все те комменты которых не хватило и пытается их добавляет самое начало и на их основе уже пытается как бы ту нашу новую ветку добавляет изменений берет уже существующие комит и ставит их начало а мерж создает новый комит который пихает все все в чем есть отличие Да и делает Только бы сверху разные подход у них соответственно давай так по обратной связи я тебе напишу соответственно в ближайшие дни также это появится видео в конце видео тоже будет обратная связь
01:00:19 - 01:01:39
какая-то я скажу что хорошо что плохо но могу так коротко пока очень сказать Да отлично для тебя просто что мне понравилось Мне понравилось понравился твой корм Мне понравилось как и ты что-то знаешь в нем да И как ты мыслишь в том что ты не знаешь Вот это было хорошо Core был хорош по коллекциям Я тоже сильно каких-то Ну у меня минусов сильно нет Все отлично Мне понравилось в целом по многопоточности есть просадки да то есть многопоточность прямо на таком Ну на самом самом базовом уровне многопоточность нужно нужно
01:00:59 - 01:02:08
качать Короче так поэтому наклона точности по спринт по спрингу тоже знаешь вот ну то есть понятно что у тебя опыта не очень много на базовом уровне опять же какие-то базы ты понимаешь это круто это классно но вот если касаться там чего-нибудь посложнее то есть но это как раз на твоем уровне то есть вот ты знаешь принято нужно условно начальном тебе сейчас уровне это нормально Вот если много по точку нужно улучшать то Спрингс достаточно уровне это классно Ну как бы для тебя но для развития дальше там
01:01:34 - 01:02:42
изучать транзак Что такое прокси Ну естественно просто углубляться документацию спринга например по базам данных У тебя есть опыт там каких-то написание скриптов ты можешь вот прям сходу до предложить какую-то реализацию даже предложить там может быть не совсем правильную Да там с этим делением но суть будет такая то есть идея точно правильная соответственно То есть забыл Просто когда там или не знал что такое обг есть да соответственно и просто придумал свою собственную реализацию почему бы нет но очень мне не
01:02:07 - 01:03:15
хватило теории то есть теории по сути не было по базам данных то есть транзакции что такое самые такие базовые вещи Ну то есть которые нужно знать условная версия версии баз данных какие они существуют Ну в общем такие вот вещи Вот то есть теория теория баз данных прямо теория теория по солиду опять же на твоем уровне все окей потестированию нормально по моей Ну короче все остальные вещи а тестирование мэйвен гид загито мне только не очень понравилось про маршари Бейс Да и мне почему-то казалось что ты сможешь
01:02:42 - 01:04:04
ответить на это вот а так в целом Слушай мне понравилось Я считаю что это такое крепкое крепкое джуновское собеседование вот то есть ты видишь что подтянуть много по точку до теория баз данных меня немножко подстроил но в целом а так всё Круто Спасибо что пришёл Давай тогда тоже что-то узнала Так что давай тогда пока читай канал смотреть
01:03:22 - 01:04:30