Тестовое собеседование Java разработчика #22 - Николай Оськин

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

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

  • Да Итак всем привет У нас сегодня мог интервью гостях Николай Коля раскрыта пару слов о себе кто откуда опыт Какие цели приставишь Всем добрый день зовут Николай как уже понятно мне 55 лет Образование у меня совершенно непрофильная образование по профессии музыкант по профессии преподаватель Вот моя компьютерная биографии немножечко смешная первая программу я написал в 1987 году на детском полу учебном компьютере была такая бэкашка такая коробочками которые называлась по моему ноль 10 или 011 сначала думал что это 11 версия потом

    00:00:00 - 00:01:55

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

    00:00:58 - 00:02:47

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

    00:01:55 - 00:03:31

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

    00:02:57 - 00:04:41

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

    00:03:49 - 00:05:20

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

    00:04:45 - 00:06:18

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

    00:05:35 - 00:07:26

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

    00:06:47 - 00:08:36

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

    00:07:56 - 00:09:38

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

    00:08:48 - 00:10:38

  • познакомился Что такое как это Spring Cloud это делается Эврика сервер Gate Bay и клиент написал парочку коротеньких примеров В общем Ну немножечко отложил потому что дом это использовать Пока нет я понял хорошо Хорошо давай такой мы поставим пройдемся по твоим вопросам которые ты задавал я себя пометку сделал мы потом пробежимся обязательно это все будет но пока Давай пойдем по классическому собеседованию у нас принято наша территориях Давайте простого вот у меня есть javacore есть ключевое слово Final

    00:09:46 - 00:11:16

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

    00:10:35 - 00:12:11

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

    00:11:31 - 00:13:06

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

    00:12:30 - 00:14:01

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

    00:13:25 - 00:14:51

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

    00:14:34 - 00:16:10

  • хорошо спасибо У меня просто списочек идет примерно Смотри вот есть такое понятие как значение переменных по умолчанию да то есть мы говорим что к примеру у Инта это 0 байта 0 у Buy Она false и так далее У объектов Кстати у ссылочных типа в данных Какое значение по умолчанию Вопрос такой вот Я почитал это в книжке или спецификация и пишу там метод Main да свой пишу int и точка запятой а потом пытаюсь эту и вывести в консоль то что ты с ней сделать и мне компилятор подчеркивает красным говорит Ошибка

    00:15:40 - 00:17:15

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

    00:16:34 - 00:18:05

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

    00:17:26 - 00:18:53

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

    00:18:09 - 00:19:59

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

    00:19:30 - 00:20:45

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

    00:20:10 - 00:21:57

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

    00:21:22 - 00:23:14

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

    00:22:20 - 00:23:47

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

    00:23:03 - 00:24:04

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

    00:23:36 - 00:25:05

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

    00:24:21 - 00:25:54

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

    00:25:11 - 00:27:00

  • на основании чего-то элемент достаешь из мэпы А значит сам Map состоит из комбинации ключа его значение такая вот теперь давай основываясь на этом Можем ли мы пробежаться в лоб по значениям в mape я стал этот вопрос народ сказал что в принципе можно но очень нетривиально да да на самом деле там есть стандартные методы подбирал по ним Но это вот как бы Ход конем то есть влог не может и пробежаться соответственно он не экстензится от Collection и он как бы относится пока этого нам хватит то есть и был

    00:26:21 - 00:27:50

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

    00:27:08 - 00:28:37

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

    00:27:57 - 00:29:35

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

    00:28:50 - 00:30:32

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

    00:29:43 - 00:30:58

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

    00:30:32 - 00:31:58

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

    00:31:35 - 00:32:54

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

    00:32:30 - 00:33:54

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

    00:33:21 - 00:35:03

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

    00:34:19 - 00:35:39

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

    00:35:11 - 00:36:38

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

    00:36:12 - 00:37:45

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

    00:37:14 - 00:38:47

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

    00:38:21 - 00:39:48

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

    00:39:18 - 00:40:43

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

    00:40:14 - 00:41:50

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

    00:41:08 - 00:42:34

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

    00:41:51 - 00:43:24

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

    00:42:47 - 00:44:14

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

    00:43:51 - 00:45:13

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

    00:44:32 - 00:46:01

  • отлично поэтому Хорошо давай еще поговорим из многопоточке такой вопрос Что такое Future нужен зачем нужен [музыка] не скажу но сами в первом варианте значит в поле объекта потока у нас заявлен просто рано был который является тупо прототипом функции Войт Как таковой и не более чем вот таким образом Поток начинается заканчивает ничего никуда не кладет не возвращает и умирает по-моему этим как раз занимается второй вариант когда у нас в объекте потока присутствует возвращающий метод вот в этом возвращающем методе у нас

    00:45:15 - 00:47:10

  • каким-то образом используем Вот это самое фьючерс который мы можем что-то такое внутри потока положить фьючер положить на полочку общего доступа И благополучно помирить придет Наследник этот фьючер возьмет и пойдёт дальше Хорошо Смотри такой вопрос Вот как я понимаю что ответа что фьюче нужно для хранения результата вычисления потока там уже не рано было там отлично супер смотри Вот допустим мне есть фьючер который строка то есть там e-mail какое-то или супер токен как не вытащить эту строку из Future То есть вечером

    00:46:29 - 00:47:45

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

    00:47:09 - 00:48:30

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

    00:47:53 - 00:49:39

  • только те символы которые встречаются в каждой из строк которые переданы в изначальном массиве то есть пример на строке 8 Ты видишь что нам дается на вход массив строк это было лейбл Роллер настройки 9 Ты видишь что результатом работы данного Мета с этими входными данными будет буква И Л потому что [музыка] во втором это будет Cool Lock Cook общая будет си и о потому что они встречаются в во всех словах То есть во втором примере на строке 12 вот буква к хоть и встречается в словах и кук Но ее нет

    00:48:48 - 00:50:11

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

    00:49:29 - 00:51:12

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

    00:50:47 - 00:52:30

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

    00:51:45 - 00:53:30

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

    00:52:56 - 00:54:14

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

    00:53:35 - 00:54:49

  • первый вопрос что это такое [музыка] и самое главное для чего зачем мы стараемся обычно привести нашу нормальную форму [музыка] [музыка] рост вес бла-бла и так далее дальше у нас начинается интересно Первый отдел в котором работает сотрудник Второй отдел в котором работает сотрудник 3 4 5 6 тут мы плавно переходим к документам Тут у него первый гражданский паспорт тут у него предыдущий гражданский паспорт предыдущий гражданский паспорт заграничный паспорт 1 2 3 и так далее все это дело в одной строке

    00:54:21 - 00:55:51

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

    00:55:21 - 00:57:05

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

    00:56:22 - 00:57:59

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

    00:57:24 - 00:59:00

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

    00:58:32 - 01:00:07

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

    00:59:33 - 01:01:15

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

    01:00:52 - 01:02:08

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

    01:01:37 - 01:03:33

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

    01:02:39 - 01:04:23

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

    01:03:34 - 01:04:56

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

    01:04:24 - 01:06:10

  • какие-то источники не знаю но джипа это первоисточник то есть джипа это то что идет от Java А hybernate это как бы реализация gpa то что они друг у друга потом со временем начали фичи перенимать то есть где-то Кибер на эту джипа где тот же пауки перебирали имплементировали если я не ошибаюсь тот же по является первичным вторичным здесь не буду спорить я потратил какое-то время на попытку найти Спасибо вопрос по поводу ленивых коллекций ленивых загрузок Да зайдем вот попытается этот вопрос с другой стороны Что такое N + 1 проблема

    01:05:40 - 01:07:17

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

    01:06:43 - 01:08:11

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

    01:07:38 - 01:08:57

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

    01:08:33 - 01:09:52

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

    01:09:14 - 01:10:58

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

    01:10:28 - 01:12:06

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

    01:11:20 - 01:12:50

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

    01:12:08 - 01:13:32

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

    01:12:53 - 01:14:24

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

    01:13:41 - 01:14:55

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

    01:14:19 - 01:15:31

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

    01:14:57 - 01:16:27

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

    01:15:55 - 01:17:20

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

    01:16:42 - 01:18:05

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

    01:17:23 - 01:18:46

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

    01:18:06 - 01:19:28

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

    01:18:51 - 01:20:07

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

    01:19:34 - 01:20:53

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

    01:20:27 - 01:21:52

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

    01:21:10 - 01:21:33