Подготовка к собеседованию на Java Developer
Менторы
Специалисты своей области, которые смогут помочь вам
Middle .Net Developer
Senior Product Manager
Middle Python Developer
Ведущий программист
Backend Software Engineer (PHP)
Senior .NET/C# developer
Middle DevOps Engineer | Tbilisi, Georgia
Middle C# .NET
Senior PHP-разработчик
Middle python developer
Каналы
Полезные Telegram каналы и чаты
Транскрипция видео:
так отлично У нас сегодня Helix это Junior плюс разработчик Java вот он сейчас с вами поздоровается начнем с собеседование Да Всем привет Меня зовут Феликс я Джава девелопер с Данилом мы встретились как познакомились вообще случайно просто группа написал вроде также называется так написал Я хочу провести интервью кто сможет меня проигрывать типа мог интервью И мне просто написал нет я вроде этот вопрос задал админу группы он говорит типа увы я такого типа не занимаюсь типа OK и просто выхожу из
00:00:02 - 00:01:33
группы покинуть группах через день после Дня пишет Давай проведем Бог интервью Я согласился и так я оказался здесь ожидаю от интервью от собеседования вообще увидеть мои сильные слабые стороны во-первых также во-вторых научиться побольше именно так мне кажется собеседование это стресс для с одной стороны так и По ту сторону и третьих что как-то привыкнуть и к этому быть более уже спокойнее к следующему собеседование Отлично так Феликс Смотри я посмотрел твое резюме мне сразу заинтересовал твоя последнее место работы Может рассказать
00:00:54 - 00:02:51
о том чем ты вообще там занимался Какой у тебя был проект я прочитал так в целом но просто интересно Тебя послушать может быть какой-то Какой бизнес вэлли условно говоря ты носил как разработчик Вот что ты делал конкретно вообще в данный момент у нас проект [музыка] некоторых местах такие мои именно обязанности о новых частей этой программы недавно вышли на пруд напротив у нас заказчики уже тестируют уже существующий функционал также если выходят какие-либо багиксом так как банковская пол Как вы
00:01:52 - 00:03:16
сами знаете Это всегда нужно работать с цифрами с формулами всякие проценты и так далее нужно это все подгонять точное число Потому что так сами знаете через месяц проценты могут быть все больше и больше это также невыгодно из-за этого нас очень точно такая работа до этого я также работал в банке Но как дата пояса инженер в основном мы предоставляли отчеты то есть каждодневно что-то затем закрыть 1 до 3 марки также очень много автоматизировали отчетов то есть один из моих самых главных фишка которую я
00:03:05 - 00:04:44
могу похвастаться то что допустим раньше когда клиент приходил банк назвать свое имя и фамилия Он должен был Он должен был написать огромное количество слов для заполнения анкеты для меня был Task чтобы автоматизировать это анкету и что я сделал у нас он просто вбивает свой личный номер [музыка] автоматически поэтому эти уже стягивать все остальные два которых хранится у нас базе и То есть клиент который уже тратил минут 10 на это уже после моего автоматизированного отчета уже тратил секунд 15 Мне кажется отлично кстати
00:03:58 - 00:05:33
вопрос по поводу ID у меня как раз возник Не подскажешь там использовался уит какой-то или просто цифровое интересно почему такое вот решение Может быть ты знаешь или это как бы там Твой руководитель слова сказал что лучше айди или увидеть например или какой-то другой вариант идентификации это Клиент не в первый раз который приходит уже второй третий то есть они уже сохраняются под своим идентификационным номером Мне кажется это уже сохраняется [музыка] но также это не просто айтишко мне кажется так как бывали юрлица и физлица
00:04:46 - 00:06:03
то есть юдлиться у них оканчивались на другое число понял А можешь вот рассказать Вот наверное твоя Задачка вот за последние получаются год да ты работаешь там в районе года вот та которую ты не знаю когда наиболее сложный который ты больше всего не считают задачки которые сейчас рассказал который ты больше всей доволен Да может быть что-то прям супер мега новое узнал то чтобы я самое сложное самое сложное задачи и как ты решил [музыка] но они вот мы как я сказал ранее мы используем организатор
00:05:37 - 00:06:56
у меня был таскать чтобы сделать новую секцию для кредиторов или получается первый фото как пишет фронт А я дополнительно уже начинаю с нуля и так далее затем этот фронта X меняется на вторым второй говорит Вообще ни о чем Давай я заново буду делать пока меня не касается я получается уже сбыта все готовлю это старух на 3 и у нас уже начинается интеграция начинается интеграция он и получается то что допустим у нас есть таблица которая называется баланс щиты то есть в них хранится все балансы именно определенного клиента
00:06:27 - 00:08:12
Эта таблица в нее можно она динамическая то есть мы можем добавлять Edition добавленные сроки можем подгонять и допустим в таблице есть 20 пунктов и мы добавляем 21 пункт это в середине где-то в середине который называется просто мышка до скажем и баню даем допустим 8 когда мы нажимаем submit этот восьмерка должна сохраниться под ключом который я отправляю на фронт но по какому-то каком-то стечению мы ходовик просто взял и не стал с этим подключить а просто за у него что-то произошло то что допустим когда я добавляю две строки они
00:07:26 - 00:09:22
могут менять меняться местами то есть там где ключ Один он может засветить по другим вали это вообще это каша произошла и с фронтай я начал можно так сказать то что Bad то что весь функционал фронта я написал таки Потому что когда мы создаем две колонки для кого вторая колонка ломалась потому что был эдишен в первой колонке то есть вторая колонка не видела уже то что первые Колонки есть добавочные сроки за это она уменьшалась я выкину просто добавлял канал чтобы она выходила в нормальном размере
00:08:27 - 00:10:10
затем и затем Когда опять мы с этим волью вся все рушится и это все чинил короче просто вручную А этих таких таблиц было 19 написал около очень много срок года надо количество строк это не значит что хорошо но было очень такое тоскливо сложно и нужно понял Слушай очень интересно У тебя опыт сейчас перейдем более таким же хордовым вопросам начнем наверное полегче Сначала посмотрим общем как пойдет Вот такой у меня вопрос Какие вас снова знаешь вот есть три вещи такая чем они отличаются что это такое может быть
00:09:18 - 00:10:55
Для чего не нужны так в целом минимальное вообще структура для запуска Java программы где включается сам несколько некоторые библиотеки Я вроде все JW Virtual Machine Зачем она нужна для вообще для автоматическое управление памятью затем где уходят также закуска всех классов для запуска самой программы используется управление памятью также наш код он капелируется это также отличается это всегда включает это утилита которая то есть для для запуска самой программы а также разработки программы слушать Да окей с тобой
00:10:14 - 00:11:58
согласен Так у меня единственный вопрос Смотри вот джер ей же вы Они как-то отдельно друг от друга или что-то в чем-то есть вот это уточнение маленькое сможешь сказать [музыка] что-то вся включал Я просто мне кажется что ты прав Хорошо давай тогда вопросиком на модификаторы ключевые слова наверное вот есть такие слова типа [музыка] вот в чем их разница где они используются И вообще о чем они говорят Final это вообще ключевое слово как имеет Феликс подожди немножко обозначен немножко пропадаешь сейчас как вроде нормально Может у меня
00:11:25 - 00:13:22
все нормально если говорить на второй Ротор файл когда обозначить обозначается именно некие полем Это значит что он неизменяемых значит то что это Константа есть второй кейс Когда можно использовать файлы это с методами если метод обозначен файл то значит ты его нельзя перезаписать и также есть файл класс это классов у которого нельзя наследоваться то есть нельзя теперь приходим к файлы используются в Track блоках он говорит о том то что чтобы не произошло в траекточи даже если будет некая некий Exception в качестве мы поймаем
00:12:42 - 00:14:20
файлы должность работать Зачем он нужен чтобы закрыть некое соединение соединение с базой данных либо какой-либо Стрим Да скажем то есть независимость он все равно сто процентов отработает если мне память не изменяет Он уже прикрепить но могу ошибаться Но зачем он нужен для того чтобы уже сборщик мусора Уже убрал ненужные объекты для этого запускать Окей можем двигаться Дальше смотри есть вот два таких метода скажи пожалуйста в каком классе Они изначально есть да а вот и коллс и колсы хешкот вот откуда
00:13:39 - 00:15:05
эти методы берутся в каком классе Мы можем увидеть и для чего они нужны типа Для чего нужен это методы самого объекта То есть все объекты которые есть у каждого объекта есть зачем они нужны допустим в основном их переопределяются когда мы используем хашмаков из которых я знаю это То есть если мы не будем переопределять ошибок она будет она будет перезаполнять то есть оставлять каждый объект в один и тот же пока пока сильно об этом не рассказываю отдельный вопрос я услышал понял Отлично А знаешь ли ты
00:14:31 - 00:16:00
что-нибудь о таком понятии как Контракт между иконусом может быть слышал [музыка] то что если Шкоды у двух объектов значит А если это определенный значит то что одинаковые со стороны это не значит то что и cools равен труп То есть если хашкоды равны мы во второй раз должны проверить на iqos их чтобы мы были уверены также Свои Свои Контакты Да я понял хорошо а вот с чем стоя последний вопросик по этой теме такой вот чем вообще связано вот эта ситуация с тем что если хочешь коды равны то и косы могут быть не равны знаешь
00:15:35 - 00:17:09
потому что ментовое значение то есть некий раньше до такой то есть 264 2 минус 64 степени что такое не помню и то есть так как int У нас есть у него границы и потери вероятности просто по какой-либо случайности могут быть какая какая то вероятность что у двух объектов хорошо одинаковые с этого нам нужно также проверить на iOS OK хорошо Так давай еще паращиков таких общих по городу наверное Вот что ты знаешь о модели памяти какие два конкретных Таких вот отдельных блока не делятся [музыка] что есть чем они отличаются В общих
00:16:37 - 00:18:29
словах сильно подробно [музыка] бывает два вида памяти это стек и хип то есть куча стеки хранятся примитивные типы данных а также а также ссылки на объект а сами объекты хранятся в куче соответственно память куча намного больше чем у стека также стеки всякие так отчаивается именно сборщиком мусора который предоставляет нам [музыка] истеки также есть своя области память задавать такие вопросы по труднее возможно где-то уже там намерла и так далее мне интересно вот смотри есть в объектах есть поля
00:17:35 - 00:19:23
поля может примитивным допустим Например у него есть примитивное поле типа возраст человек вот вопрос это примитивное поле она где будет храниться она будет в хиппи или она будет храниться в хиппи даже если она примитивная но так как она идет вместе с объектом она будет храниться в себя в куче Окей Так давай я решил посильнее проще позадавать повыше по уровню Маша очень коротко отвечать то есть сильно много подробнее темы Знаешь ли ты в какой момент Стрим начинается выполнение он начинается свое он начинает свое
00:18:40 - 00:20:18
выполнение методах днем есть терминальные и потом [музыка] и те которые типа коллектор собирать такое не помню если честно Ну давай Нет ты прав Ты правильно сказал То есть есть терминальные есть типа промежуточные OK именно начинает свою работу когда мы вызываем терминальные методы это правильно Окей Так последний вопрос по кору что-нибудь слышал про пул строк жиров может быть вообще что это такое Для чего надо в целом может быть [музыка] ты пропал Я тебя слушаю Я тебя слушаю пул строк которого хранится в кипе зачем
00:19:35 - 00:21:42
это нужно для того чтобы постоянно постоянно не создавать некие Новый объект мы просто Java помещают эту новую строку в пул строк Стрим пол а если но если мы вызываем такой метод типа string newstring равен стринг мастер Он именно этот объект не будет это именно эта строка не будет помещаться не будет отправлено строк будет создано Окей круто всем его наверное скоро потихонечку заканчиваем коллекциям потихонечку можешь опять же так это очень очень вкратце рассказать структуру то есть не Уходя в подробности
00:21:10 - 00:22:53
вот структуру структуру фреймворка Collection [музыка] от него это интерфейс он имплементирует от коллекции исходят три интерфейса лист У каждого свои рекомендации если очередь и это тоже сайт Окей так поэтому я понял давай такой Самый наверное типичный вопрос может быть реалист опять же скажи разницу то есть в чем Почему и где может быть стоит использовать другой И вообще Использовал ли ты где-то в своей работе или если Да поделись где так вообще что это такое регист он себе он состоит из включает в
00:22:05 - 00:24:24
себя из включать себя массив То есть он базируется на на связи был связанном списке также оба класса динамично динамично увеличивается но есть некий тонкости такие как есть некий свой трешхолд которые если увеличился на если приблизиться к трэшхоту есть некая калькуляция которая увеличивает его размер где-то двое но как он увеличивается это то есть Он копирует массив другой массив И затем только состоит из моды если он был связанное прибить есть так как он имплементирует dq у него есть свои editional методы типа это Ласт
00:23:21 - 00:25:12
а в самой памяти даже Link liston хранится по-другому если реалист берет допустим 5 блоков памяти то родитель работает немного по-другому То есть он берет одну клеточку его указывает на на следующую ноту А это надо может храниться вообще везде то есть этим он очень удобен именно для для памяти то есть блоки памяти могут храниться везде всего лишь нужно было [музыка] [музыка] добавить к нулевому элементу то есть вышли на левого элемента один элемент и за это чисто использовал электричество так как
00:24:33 - 00:26:13
у него есть а так в принципе всегда использовали лист понял так какой-то был вопрос а вспомню ты вот в конце когда начал рассказывать я почему-то вспомнил книгу не знаю знаешь такую возможность да да Вот я тоже кстати вспомнил подумал по любому по-любому оттуда прочитал [музыка] нигде такого не написано было только в группе так хорошо Да я думаю следующий пост выйдет еще об этой книге Спасибо Феликс напомнил так хорошо переходим наверное такой получим вопрос для многих но ты уже начал говорить поэтому просто не слишком
00:25:35 - 00:26:57
сложный будет Расскажи про устройство хэшмапы или хэш Сета Как можно подробнее сейчас наверное прям можно максимально подробно рассказать о том что знаешь так хашмапа это ассоциативный массив то есть который представляет себя как парк ключ значение Первое это ключ затем значение в себе то есть хашмак базируется на простом эрей то есть на массиве А элементами этого массива является как мы до этого связанные списки элементами является так происходит есть два главных элемента То есть тут ремонт когда мы добавляем элемент в хашмаку
00:26:37 - 00:28:22
во-первых определяет есть некий метод который конструкция определяет этого объекта затем если мы посмотрим имитацию самого работает затем отрабатывает второй метод который получает получает индекс массиве после считывания этого хэш куда объекта то есть мы получили мы прочитали этот хаш-код затем узнали по методу его индекс и затем добавляется этот мастики в индекс массива затем есть проверка то есть Феликс немножко пропал Сейчас подожди я сейчас нормально вроде бы может повторить заново последние 10
00:27:33 - 00:29:32
секунд Затем когда мы добавляем элемент отрабатывает третий метод это то что мы смотрим если [музыка] нет мы просто добавляем а затем Если также такой случай когда [музыка] если если хочешь коды одинаковые проверяется метод и курс как мы говорили до этого если икос тру если икоструй то метод Просто если ключ True дает ключ просто перезаписывается то есть элемент перезаписывается Но если в том кейсе если икос нам дает соус мы просто мы просто добавляем этот элемент во вторую позицию вторую позицию
00:28:37 - 00:30:52
два вопроса Первый По какому принципу тоже в этой штуки ячейки как они называются помнишь По какому По какому принципу они увеличиваются они их количество остается неизменным в основном базовое число это 16 Откуда я узнал это недавно [музыка] 16 затем есть также Лофт фактор то есть опять некий трэшхолд грань которая если мы если элементов становится 12 или более размер массива увеличивается опять происходит некая корреляция увеличивается вдвое Окей такое Просто смотрел такое вот и последний вопрос возможно
00:29:59 - 00:31:49
тоже там из моего условного поста ты мог видеть Что происходит если в одном пакете очень много элементов то есть вот смотри я думаю [музыка] начиная с 8 на linkat лист у лингвиста опять некий опять Треш Холл туда добавляется огромное количество элементов если элементы проходят уже некий пороглист у нас превращается пенатное дерево а метод называется trifi это происходит озеленение почему это происходит так как О комплекте о комплекте именно линкод листа ставка и удаление если Просто берем ставку удалению это константное число то
00:31:03 - 00:32:47
есть но но для этого также нужен поиска поиск и ставка или удаление у нас занимает линейное время А в дереве если мы используем бинарное дерево о том комплекте логарифм который намного быстрее чем в целях оптимизации Окей так по колесу наверное все тоже у меня буквально такой один маленький вопросик есть но это чисто уже чисто уже мой интерес знаешь ты или нет потому что называю что звание методов Очень круто и так далее знаешь ли вот этот вот Трэш Холл который для перехода из листа если нет я просто довольно
00:32:01 - 00:33:31
интересное число [музыка] не называется Я говорю о том что там есть ограничение после которого как раз приходит дерево знаешь ли такая количество элементов я могу ошибаться но вроде от 6 начинается сейчас не помню возможно но это такой вопрос он ни на что не влияет даже здесь не отражаюсь я просто расскажу как тоже там на самом деле после восьми элементов она превращается в дерево а меньше 6 она превращается обратно Так что если ты добавишь 8 элементов и потом идти наберешь что он все еще будет дерево
00:33:00 - 00:34:23
Окей так смотри сейчас наверное перейдем к SQL в целом Расскажи немножко опыте использования что ты делал какого уровня сложности запросы и Давай после этого наверное тогда пойдем на перерыв а просто я перезапущу конференцию а то он кончается через 4 минуты так Какие Какие базы использовал в данный момент мы используем до этого и писал использовал А банки мы использовали Какие запросы писал написали в банке когда мы работаем Мы писали и процедуры бывало время и процедуры списали также видел как писали
00:33:47 - 00:35:31
триггеры писали а так А в данный момент что просто Джона [музыка] понял Так на нас еще есть больше время можешь ли сказать что такое но я думаю что можешь что такое первичный ключ такое внешний ключ Какие ограничения эти ключи создай первичный ключ или Зачем он нужен То есть вообще если брать чтобы быстрее показывалась наших результатов поиска в основном использовать используется для обозначения ID в основном праймерики это вторичный ключ фаринке это вторичный ключ это то есть некая ссылка первичного ключа во второй
00:34:47 - 00:36:37
таблице во второй таблице по этой колодки если мы хотим добавить некой таблицы и целое мы Просто берем и Play ID туда и вторичный ключ у нас будет ограничений какие все-таки есть ограничения на праймерики то есть что мы не сможем вставлять в табличку Если что мы сможем если у нас есть так насчет ограничений [музыка] простые символы то есть точки запятые этого нельзя конечно также нельзя дублирование по ключам вот я скорее продублирование Да все таки точки запятые Это зависит от того какой тип поле у нас
00:35:55 - 00:37:31
дубликатов первичного ключа нельзя [музыка] ограничений повторичному по вторичному ключу что нельзя вставить в табличку что не заставит табличку вторичного ключа У нас есть вторичный ключ который ссылается некую таблицу Что именно нельзя не могу сказать чего нельзя то есть [музыка] Хочешь я скажу хочешь потом соответственно смотри у тебя допустим есть табличкой допустим там допустим есть один и ты пытаешься в зарплату зарплата и сойти 100 равняется чему он скажет что нельзя вставить потому что нет такого потому что должна быть
00:36:55 - 00:38:49
консистентность данных потому что посылаешь табличку где это твои принципе нет получается если Ну вот в этом ты прикол что как бы ты у тебя будет целый пая иди да и там будет 123 А вот строчку со статы ставить не сможешь потому что такого нет давай сейчас перезвонимся тогда и продолжим
00:38:04 - 00:38:51