Собеседование Java Junior | Никита В. vs. Максим Добрынин | Jetbulb

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

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

  • друзья Всем привет Вы на канале jetball с вами Макс Добрынин и сегодня мы с вами будем говорить про собеседование О каком собеседовании да На позицию Junior Java Developer ведь к нам сегодня пришел очередной гость и мы с вами вместе будем допрашивать и узнавать Какие же у него есть сведения о той самой Java И разумеется технология которую эту же джаву окружают но как всегда в наших традициях друзья я вас прошу подписывайтесь на канал и ставьте колокольчик чтобы не пропустить все самое интересное что здесь у нас с вами

    00:00:10 - 00:01:09

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

    00:00:40 - 00:01:44

  • хорошим технарем Именно поэтому он поступил в технический университет там он познакомился с высшей математикой с алгоритмами со структурами данных именно это побудило его начать изучение языка программирования Python Однако на pythony он не остановился и решил переключиться на Java поскольку с его точки зрения это куда более интересный язык в настоящее время Никита ощущает себя Junior разработчиком в языке программирования Java соответственно он старается изучать без практики он старается изучать шаблоны проектирования

    00:01:12 - 00:02:10

  • которые массово используются при разработке при применении языка программирования Java в том числе это его не останавливает ведь он также уделяет внимание спрингу Spring Core Spring All Spring mvc Spring rest и просто спрингбут который мы все так с вами любим и вот это все он делает уже на протяжении пяти месяцев всё это в настоящее время помогает ему реализовывать несложные веб-проекты с применением javas применением с применением баланс данных ну что ж довольно слов и знакомств пора бы нам передвинуться к

    00:01:41 - 00:02:48

  • нашему собеседованию на позицию Junior Java develper поехали друзья [музыка] Никита я тебя Приветствую на наших собеседованиях Как твои дела Ну хорошо я сегодня настроился на собеседование думаю более-менее готов OK Но тогда мы с тобой будем это все проверять готовился или просто настраивался ну и готовился Хорошо тогда мы сегодня с тобой пойдем и попробуем что такое Java собеседование Из каких частей это главный вопрос а у нас будет не классическая священника как она часто проходит а скорее мы пойдем сразу по разным

    00:02:14 - 00:03:40

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

    00:02:58 - 00:04:34

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

    00:03:46 - 00:05:16

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

    00:04:49 - 00:06:16

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

    00:05:42 - 00:07:18

  • будет супер супер Отлично Скажи а почему вот закрывать ресурс так обязательно в чем проблема зачем это вообще нужно Ну не Закрыл да и не закрыл Бог потому что резона Хорошо хорошо давай тогда двинемся Дальше можешь рассказать разницу между gdk и jr это она [музыка] жилье компилятора и набор стандартных класса для разработки и зона скажи вот мы разработчики всегда используем ЖК для того чтобы локального себя запускать Java приложение протестировать как оно работает но когда вот я перехожу допустим на какие-то там

    00:06:36 - 00:08:11

  • юниксовые машины чтобы развернуть конечно итоге все приложения мне предлагает скачать только jr камни предлагают и это сразу Блин как же я буду запускать приложение если мнение ЖК не предоставляет только и тот вопрос Следующий Можно ли запустить все таки java-приложения имея просто jr Ну да можно но только не будет возможности его разрабатывать это лишь виртуальная машина работать которая будет комбинировать код Вот и приложение будет работать Это достаточно вполне А разве виртуальная машина кот компилирует Она управляет

    00:07:43 - 00:09:05

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

    00:08:24 - 00:10:07

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

    00:09:31 - 00:10:53

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

    00:10:16 - 00:11:46

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

    00:11:01 - 00:12:35

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

    00:11:49 - 00:13:39

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

    00:12:54 - 00:14:31

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

    00:13:51 - 00:15:43

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

    00:14:56 - 00:16:37

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

    00:15:52 - 00:17:31

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

    00:16:47 - 00:18:10

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

    00:17:28 - 00:19:26

  • Out of memory произошел [музыка] на самом деле да то есть смысла нет потому что как правило это приводит к остановке всей программы зачастую но главным Конечно если говорить прагматики мы просто никогда не знаем В каком месте это произойдет Stack Overflow может произойти теоретически в любом месте привести к этой ошибке в любой точке программы если взять цепочку вызовов Разумеется мы можем отследить Over Flow и предугадать где он может произойти но опять Никто этим заниматься и аутофам тоже хороший пример потому что никто не

    00:18:36 - 00:20:05

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

    00:19:25 - 00:21:09

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

    00:20:27 - 00:22:14

  • Хорошо давай тогда сделаем что это за интерфейс Почему он так важен Каким образом все-таки участвуют император или terrable вот тут я не понял Мы с тобой снова Мы остановились на вопросы Что если я удалю итератор Будет ли иметь смысл for each Ну и здесь конечно вопрос дальше про iterrable экспериментировать Я когда реализовал там нужно было Ну да А почему чтобы можно было италировать объект коллекцию технически посредством чего этого ну чем-то выражается но почему то есть Почему есть и terrable есть оператор

    00:21:29 - 00:22:56

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

    00:22:36 - 00:24:04

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

    00:23:24 - 00:25:10

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

    00:24:22 - 00:25:54

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

    00:25:23 - 00:26:52

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

    00:26:08 - 00:27:27

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

    00:26:51 - 00:28:19

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

    00:27:50 - 00:29:52

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

    00:28:56 - 00:30:42

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

    00:30:04 - 00:31:19

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

    00:30:45 - 00:32:14

  • даем значение чтобы чтобы ты не заходил в тупик поверхностно и глубокое копирование оно одинаково работает для примитивных и для суточных типов данных Вопрос какой она эффект Займи Но если там нужно глубоко Окей хорошо давай тогда начнем с обратной стороны тогда что такое глубокое копирование [музыка] мы там тоже как бы создаем новый объект и копируем все значения из него из старого в новый кошмаки так но я думаю потом кэширует то должен оставаться Хеш должен быть всегда один тоже arizona А если допустим у нас не ему

    00:31:36 - 00:33:14

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

    00:33:39 - 00:35:15

  • [музыка] старый ключ со старым значением останется Да потому что там боится да ты прав на самом деле мы поменяем значение из-за этого сгенерируются новые хэш-код и на основании их Шкода найдется новая позиция соответственно у нас будет старое значение под новым ключом и старое значение Под самым первым значение это уже не уникальность хорошо хорошо Давай тут такой легенький вопрос Какие примитивные типы данных есть данных Чар integer byte Short Pet shore Double наверное ничего не забыл но в целом Да большой Лонг

    00:34:41 - 00:36:42

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

    00:35:51 - 00:37:36

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

    00:36:49 - 00:38:29

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

    00:37:56 - 00:39:31

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

    00:38:48 - 00:40:26

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

    00:39:37 - 00:41:23

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

    00:40:57 - 00:42:44

  • считал значение разве это правильно думаю что нет Хорошо хорошо как тогда и исправить эту ситуацию с учетом то что у нас есть read Drive Lock это правильно что мы его применяем как бы Ты исправил бы текущую ситуацию вот у нас сеттер он с Райком А гетер вообще без ничего я думаю нужно блокировка Хорошо хорошо Правильно это хорошо но у меня тогда вопрос первоначально как они работают как Red Drive Локи между собой синхронизируется что ли Ну предположим райт Лог позволяет нам делать синхронную запись

    00:41:54 - 00:43:26

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

    00:42:41 - 00:44:30

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

    00:43:35 - 00:44:45

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

    00:44:11 - 00:45:44

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

    00:45:24 - 00:47:00

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

    00:46:22 - 00:48:13

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

    00:47:32 - 00:48:49

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

    00:48:13 - 00:49:30

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

    00:49:01 - 00:50:25

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

    00:49:43 - 00:50:55

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

    00:50:18 - 00:51:59

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

    00:51:21 - 00:52:52

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

    00:52:19 - 00:53:47

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

    00:53:04 - 00:54:33

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

    00:54:03 - 00:55:42

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

    00:54:57 - 00:56:32

  • при добавлении все элементы будут сдвигаться они будут раздвигаться сказать [музыка] окей Тогда вопрос есть какая скорость доступа к последнему элементу [музыка] а вы линьки для [музыка] Линейная Почему Как думаешь потому что там мы будем проходить по всем элементам чтобы дойти а какие интерфейсы реализуют Линки Окей А что такое Что это такое [музыка] время потому что есть метод или метод который хорошо но тут Ладно разобрались не будем сильно копать в этот измученный вопрос годами и прочим расскажи мне лучше Что

    00:55:58 - 00:57:54

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

    00:57:55 - 00:59:31

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

    00:59:17 - 01:00:59

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

    01:00:27 - 01:02:01

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

    01:01:38 - 01:03:31

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

    01:02:55 - 01:05:04

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

    01:04:18 - 01:06:13

  • время [музыка] это аббревиатуры по сути мы говорим о том что это структура Какая действительно с легкостью отходить от структуры допустим ярким представителем где мы храним все видео документа в одном документе такая структура в другом у нас какого-то поле не хватает это вполне себе нормально но поговорим про Вот какие есть отношения или [музыка] а есть отношения во-первых сначала то есть когда обе сущности знают друг о друге и соответственно они делятся на One to one one to Many Many 2 minito Many и все вроде ничего не забыл Окей

    01:05:46 - 01:07:36

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

    01:06:45 - 01:08:31

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

    01:08:17 - 01:09:50

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

    01:09:28 - 01:10:52

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

    01:10:17 - 01:11:57

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

    01:11:26 - 01:13:01

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

    01:12:18 - 01:13:36

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

    01:13:02 - 01:14:30

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

    01:13:48 - 01:15:24

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

    01:14:36 - 01:16:12

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

    01:15:51 - 01:17:22

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

    01:16:53 - 01:18:22

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

    01:17:39 - 01:19:14

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

    01:18:40 - 01:20:27

  • размер 50 но зафиксировал все-таки различия но я и в чаре могу ставить строку меньше 50 ну то есть у меня есть варчар 50 и Чар 50 У меня есть строка которая состоит из 5 символов я ее одинаково ставлю и в Чар и одинаково вставлю в Чар в чем же тогда здесь отличие Ну я пока что не понял на самом деле все проще кажется War Чар переводится как по сути аргумент значение переменной длины мы можем указать максимальное значение с максимальной значение с максимальным размером Но в отличие от Чара если мы

    01:19:39 - 01:21:05

  • ставим ему строку из пяти символов то он возьмет память исключительно под эти пять символов он не будет остальные 45 захват если мы говорим про чарт ему интересно абсолютно не беспокоит сколько значений Мы реально используем у него есть ограничение 50 и он это ограничение используют этот диапазон использует от начала до конца если я передам ему 5 символов то он все равно возьмет под это дело 50 если мы врача и Передаем 5 символов то он берет не 50 А 5 Соответственно в этом и основное преимущество то есть по сути

    01:20:34 - 01:21:57

  • производительность хорошо хорошо Давай поговорим про такой интересный запрос Union и Union в чем разница между он удаляет дубликаты и хорошо В чем основная задача точнее незадачен в чем основные ограничения при работе с операцией Union Ну да ну то есть Я же не могу применить везде это однозначно точно скажу вот Какие основные правила при работе с оператором UNI Ну можно ограничение можно сказать требования к этой операции должны быть строк Угу хорошо защита В чем различие между оператором heaving и оператором Where

    01:21:16 - 01:23:01

  • но они оба ставят условия какое-то это в принципе что их объединяет различие в том что мы having можем указать после сортировки [музыка] можно указать только после уже группируем это связано Так похоже но почему мы почему мы не можем заменить хевинг на VR Зачем нужен хевин То есть Какая основная причина почему wr не всегда работает [музыка] но понятно он как-то работает он где-то нам помогает где-то нет но все-таки основное различие между ними вроде и тот и тот задает критерии поиска если так задуматься Но почему-то уэр работает

    01:22:41 - 01:24:22

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

    01:23:46 - 01:25:22

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

    01:24:35 - 01:26:16

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

    01:25:26 - 01:27:14

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

    01:26:49 - 01:28:23

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

    01:27:57 - 01:29:35

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

    01:29:19 - 01:30:49

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

    01:30:05 - 01:31:19

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

    01:30:42 - 01:31:53

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

    01:31:21 - 01:32:54

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

    01:32:14 - 01:33:42

  • так есть еще [музыка] Рид это когда транзакция считается делать какое-то изменение и первая транзакции его прочитала грязные данные и вторая [музыка] а чем это отличается от того что ты только что привел в Last update тем что ну просто дейт мы теряем изменения Но разве мы Ну разве в Dire теряет мы теряем изменения что-то не понял ты сказал что в Lost апдейт У нас есть одна транзакция другая транзакция одна транзакция что-то делает другая транзакция берет эти данные потом первая транзакция ролл бэтчет вторая транзакция

    01:33:04 - 01:34:39

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

    01:34:03 - 01:35:18

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

    01:34:49 - 01:36:20

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

    01:35:37 - 01:37:05

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

    01:36:21 - 01:37:41

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

    01:37:01 - 01:38:51

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

    01:38:19 - 01:39:38

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

    01:38:58 - 01:40:16

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

    01:39:46 - 01:40:59

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

    01:40:22 - 01:41:39

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

    01:41:02 - 01:42:06

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

    01:41:34 - 01:42:22