Подготовка к собеседованию на 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 каналы и чаты
Транскрипция видео:
все мы с вами в эфире вы потом будете вырезать или вы прямо как разговариваем так в итоге останется как разговаривает так и останется ну отлично уже два я тогда сделаю интро какой то скажу что у нас наверное будет минут 30 для меня это формата самом деле достаточно новый я такого онлайн-интервью никогда не проводил но я проводил больше количество просто сейчас дима тоже самое я делаю реальных бизнеса в реальных проектах шагин дык мне поможет и будешь такой тестовый пациентом и посмотрим как это
00:00:03 - 00:01:19
получится я сначала тебя спрошу вот давай представим себе что ты реально хочешь устроиться в компанию а я в этой компании архитектор или там какой-нибудь senior developer моя значит тебя проинтегрировать а потом пойти к своему менеджеру там хай менеджеры сказать ему этот парень подходит или не подходит очень хорошо давайте для начала если вам сложно произносить моё имя называйте просто сага но мисс пигги сложно произносить но сага тоже хорошо отлично тогда давай я сначала что у тебя это и java-программист да на данный момент
00:00:46 - 00:02:06
программистом работает а какой опыт по времени или по количеству там проект как долго давайте по времени до в целом вообще в программировании более двух лет именно в jabber разработки это год и 2 месяца на что-то вроде того проектов считайте первые девять месяцев я сидела на одном проекте только сейчас я работаю в компании где мы в основном пишу маленький микро сервиса и там просто интеграции в общем когда я тебе сделаем прогреть и ты создал кусок кода наджар и решил чат и этот кусок кода открой и 1 шар не экран чтобы я видел
00:01:26 - 00:03:12
твой экран и все видят его и все чтобы и ты посмотри на этот код это java class достаточно небольшой и несложный да да посмотрели на этот код и мне нужно от тебя чтобы ты как java программист сказал мне такие ты видишь проблемы в этом коде чтобы ты исправила если тебе попадает такой код для рефакторинга или для улучшения что тебе здесь не нравится какие моменты ты бы сделал лучше небольшой там внизу комментарии не читают но кто-то учета пытался уже советовать вот смотри на код я думаю ты понимаешь вот сначала раскроем и что он
00:02:18 - 00:04:01
делает как ты понимаешь так вот первых он принимает какой-то файл я не вижу конструктора получается есть дефолт на конструктор код или какой-то сет файл получается во первых я бы исправила вот это то есть чтоб через конструкта можно было сразу пару передать и давай пока они говорили чтобы ты сделал сначала скажи как ты понимаешь что это такое вообще что это за класс что он делает для чего ну ну судя по названию это берет какой-то файл и вытаскивать от туда данные инфу отпустим получается по этого и данные
00:03:09 - 00:05:03
нет от их соответственно тут еще сэв контента ну где-то сохраняет это файле получать сохраняет теперь скажи мне что ты вообще об этом думает что все давай теперь по по проблемам пройдемся попытайся попытайся попытаюсь рассказать все что тебе не нравится здесь чтобы ты вправе есть много не то что ошибаюсь много и вообще как вас рабочий то есть он выполняет свою задачу он делает там то что он должен делать но можно сделать его лучше есть массу есть момента который можно было бы исправить вот чтобы ты исправить и я не совсем понимаю
00:04:09 - 00:05:54
почему тут с этикет файл синхронист как будет сделал вряд ли он тут нужен скорее всего когда я вызывал бы этот объект единственно с этого объекта я там синхронизировал но не здесь точно ну первый вот это нулевое кстати так это в конструктор можно передать сам файл без дел ты бы конструктор сделали ты бы убрал слоте гранат и конструкт rain синхронист что делать на канале для чего active sync рано из в данном случае тем хранить red потоки то есть чтоб не было средств и каких-то связанные с многопоточность ю ну вот
00:04:59 - 00:07:08
здесь море функция называется метод называется сет файл перед ним написано синхронность тоном это слово и за гарантирует что она сделает сказать как у меня это в данном конкретном в методе сет файл от чего она защищает то что в другой файл из нас другого файла не запишется в других многопоточном дети ты сделал как бы эти сет файл файл чем быть заменен [музыка] наверно оставил сет файл через конструктор почему но первых было бы удобнее со стороны вызова инициализации еще удобнее объясни слова удобно и мне неудобно одних
00:06:09 - 00:08:19
бартера потом сет файл почему это неудобно по мне так слишком много катар слишком много ударил нет это до 2 статей довольно таки и я кстати практиковал это практически 9 месяцев то что в конструктор я ничего не передавал то есть скажем так это у нас в той компании было принято так и в некоторых случаях это было неудобно в данном случае я все так муроме галкина о неудобно что неудобно просто две строчки кода или в чем неудобство то что до ой в чем проблема здесь но в две строки это не так уж страшно но две строки мы
00:07:18 - 00:09:25
написали или одну строку но мышь чем проблема здесь почему почему конструктор чем он еще может быть лучше вот вместо вместо new parts set файл чем конструктор лучше чем хуже здесь есть и негативные и позитивные как бы и плюсы и минусы пофантазируем скажем может найтись такой человек который за будет передать файл забыл передать файл так и что будет exception-ы начнут вылетать методах последующих мест гетто контент что-то дед content into that put exception то есть если я сделаю instance этого парсера не забуду сделать сет файл
00:08:21 - 00:10:37
то что произойдет и дальше начну вызывать там метод например год контент какая будет проблема какой будет у нас но в целом он выкинет exception но скорее всего он там обрабатывает вам пули блоки trike печь не увидите то что там нету файла да то есть на один раз хорошо если я сделаю если я сделаю все таки инстанции этого парсера потом забуду вызвать сет файл а потом вызову get file что мы вернемся вернется вот строчки 22 я передам вызову new file input stream там у меня видишь используется файл то
00:09:30 - 00:11:04
есть переменная внутри нее внутренняя трибьют файл двадцать второй строке и дальше начну в двадцать пятой строке начнут читать что здесь ты думаешь произойдет сперва я думаю двадцать второй строке уже в exception а какой эксепшен не знаешь какого типа exit могу что-то вроде на all tracks are no brand скажи мне тогда а значит и бы заменила на конструктор до сет файл использовал бы конструктор хорошо идем дальше теперь видишь проблема ну насчет это можно из правил как-то сделал красивее не знаю не знаю даже как россия
00:10:21 - 00:11:56
можно сделать ты давайте мне расскажет что он сейчас делает вот там шесть строчек давай последовательно пройдемся что они каждое из них что значит гонкам читает файл получает им байт файла 320 последовательно что в двадцать второй строке происходит он пытается высчитать файл которые у нас выше описан в двадцать второй строке он уже читает файлы думаешь нет ни что это пытается открыть файл вот пытаются открыть а что именно на самом деле происходит что мы делаем мы создаем давать дословно что 22 статья происходит создаем instance
00:11:14 - 00:13:10
снимок объекта в нем передаем туда конструктор объекта 23 создаем переменную пустой строки до 24 [музыка] та же самая переменная но тут то есть создает медицинского это энтого переменной в 25 не совсем понимаю почему так сделали сейчас происходит 25 сроки что ты видишь что там что это за конструкция асад опустим но считаем какой-то по это и записываем это переменную data и в то же время он не спешит даже зашифруем не двадцать пятую строку вот все эти скобки равно что это значит создается цикл в
00:12:22 - 00:14:44
котором проверяется условие то что импульс стрима при помощи чтение какого-то байта превышает 0 с условия и одновременно и тот же записываем в переменную то-то хорошо как этот цикл называется который цикл со словом while я не совсем поняла про но есть есть ряд есть три как программирования есть цикл какие типы цикл ты знаешь вот как они называют чем они отличаются друг от друга по его вот это не знаем о том что есть цикл с предусловием цикл с постусловием слышал такой термин с каким это у нас 3 слоя а если мы хотели
00:13:48 - 00:15:57
сделать пост условиям как бы мы написали написали про думаю правильно а скажи мне что значит больше нуля ты знаешь почему мы сравниваем с нулем почему больше 0 почему вы хам и выходим из цикла когда меньше 0 предположить то что длина длина данных в стриме скажи еще раз я прослушал я не услышал тебя и еще раз связь плохая аха могу предположить то что это длина данных им под стриме не постигну что длина данных хорошо а теперь давай посмотрим что у нас у нас приходится в метод возвращает какой-то дата видишь мы
00:14:57 - 00:16:41
записываем результат работы мир дарит записываем в переменную data потом переменную data 100 возник дальше делаем двадцать шестой строке преобразовываю в тип данных char и этот символ за конкретизируем с предыдущим результатом кому-то так как ты думаешь что такое да то какой смысл изнутри то где-то какой-то чар то есть в дате будет какое-то число говоришь то что это какое-то там буквально либо символ то есть символы из таблицы unsure да так теперь давай вернемся к строке 25 почему мы сравниваем это с
00:16:01 - 00:18:12
нулем и забудет символ то есть я вот точно не помню там в таблице было меньше нуля символы то есть если там там скорее всего нету если так такая проверка ее отъезд код работает то есть данный вид если меньше нуля то есть это не входит это никакой не символ до приблизительно так скажи как бы ты этот метод все таки что ты в нем бы исправил тебе он сейчас нравится как он написан все тебя здесь устраивает есть какие-то замечания нет нормально хорошо тогда давай посмотрим на метод следующий год контент
00:17:09 - 00:19:08
куда учеников видишь вот сравните два метода чем они отличаются условиям с цикле 35 строка да хорошо как бы ты этот метод и справилась ли бы ты исправлял под этим двумя методами учитывая они одинаковые кроме условия я создал бы еще один это перенес ты все что тут туда и вызвал бы тот метод приватный метод скажем до с каким-то флагом то есть проверять это условие или не проверять хорошо да имеет смысл а почему бы так сделал тут кусок кода начиная с 22 по 28 с 31 по 39 не в принципе одинаково кроме условия в
00:18:14 - 00:20:45
случае если тут придётся поменять какое-то условие там нужно добавить еще что то там пришлось принять оба метода вынося все это в отдельный метод я применял один раз да хорошо это правильно давай посмотрим последний третий метод сейф контент что ты думаешь про него опять же про скажем не построчно ночная 40 строй строки чего происходит инициализируем стрим от пут stream то есть находим какой-то файл в целом и в конструкторе передаем тот же файл который угол выше вот cycles по контенту которую передали
00:19:47 - 00:21:41
в аргументах по контент длины camp контенту и соответственно каждый символ записывали в этот же файл в конец а скажи опять же тебя устраивает все что ты видишь в этом методе все все здесь хорошо ли ты чтобы я словил и плюс равно 1 поменял она просто и плюс плюс хорошо а почему я не знаю как и праве месяца но смысл и + + и и и приз равную 1 одно и то же но глаза как-то привыкают то что и плюс плюс еще где-то замечание есть так нет пока что а скажи то есть ты бы если бы тебе дали код на ли факторинг ты бы его оставил в таком
00:20:54 - 00:23:55
виде да практически до а скажи и ты когда-нибудь использовал хорошо давай тебе такой вопрос вот этот вот сейф контент где а музыка вай файл как еще раз поток то это поток на выход о нужно как-то закрывать есть там функция клаусу трейда происходит нигде не происходит она остается открытым так мы даже не хорошо а как бы ты его закрывал наверно трой с ресурсами кстати но учитывая что он exception а выкидывает может убрать все эксепшен это его всех методах использовать его трой с ресурсами хорошо если мы его поставим стараюсь ресурсных
00:22:28 - 00:24:51
site content to этот ресурс будет закрываться если вы пропадаете а я говорю что если мы этот стрим будет использовать как бы использовать как ресурс той catchin the file пустым закрываться будет а что будет с exception все-таки мы должны у метода убрать check the exception декларацию или нет да должен убрать его но можно еще по-другому просто закрыть его после использования на счет за пользование под поподробней был то есть оставить в этом же веке просто после окончания перед окончанием метода написать о . клаус вручную закрыть и
00:23:41 - 00:25:51
конечно между трой с ресурсом и в конце метана писать о . колос ни один вариант это старайся ресурсами второй вариант это просто написать по . класс вот я и спрашиваю в чем разница между первым и вторым вариантом героя [музыка] обраб лик совершенно прямо здесь наверное как да давай а да бомбишь все таки вот это не надо писать целиком я давай попробуем вы просто закрыть сразу с ты сейчас делаешь этот файл of a у нас мало интересует нас интересует закрытие потоком нам нужно понять в чем разница между закрытием потока через
00:24:51 - 00:26:51
между использованием touch с ресурсом и просто закрутим ручным таким о . клаус так он тут прямо и закрывает то есть после окончания вот это вот этого блока он автоматически закрывает да если не используют адблок если не делать блок не делать таких с ресурсом у тебя нет этой функции в java там java 5 такой функции я допустим у тебя java 5 или должен сделать отдых . клоуз да да вот нету тебя троллить ресурсами у тебя вот так здесь между на в строке 17 даты пишет какой-то код там запись чего-то куда допустим тогда
00:27:53 - 00:29:42
добавь его не надо этот печи берет не обращая внимание на эти красные на подчеркивание нужно нам не нужно здесь код полностью рабочим давай сказки не обращения подсказки ты мне скажи в чем вот здесь проблема смотрели этот код который ты сейчас видишь и скажи в чем здесь чем здесь недостаток [музыка] хорошо я понял вот это дело production с тем более сложность где будут проблем здесь будут проблемы пены допустим не обращайся мая на красный путь от с3 вот здесь да все 10 хочу показать что что файл по какой-то файл до встречи
00:28:46 - 00:30:33
exception какой-нибудь файл здесь получается выкинет exception-ы клаус он не зайдёт то есть он уже открыл стрим какой-то и дальше он не пойдет поскольку он уже тут вылетел . ну допустим 2 метра с ресурсом вот и взяли 5 работаешь оборачивать все the exception а то есть получается пройдут площадь 5 и вот здесь еще за 1 типа [аплодисменты] тут же так интенсивно использует подкаст подсказки в и плохо тула как правильно чем эти кнопки нажимать давай да закончите что не всегда теперь это себе тебя идея подсказывает правильно
00:29:38 - 00:33:03
она делает предположение но не всегда наверно поэтому не весь этот код который она тебе предлагает мной дальше это тебе так просто как комментарий [музыка] ну вот примерно так что если там файл этот стрим все-таки выбросит file not found exception если сейчас мы запустим и файла стрим действительно не найдет файла то будет то будет file not found exception идет дальше дальше он зайдет вот этот блок попытается закрыть просто дай что будет закроет нет он опять африке нет exception а какой шулепова
00:31:51 - 00:33:47
этому а как же он скажи закроет если восьмой строке мы выбросили эксепшен не создав еще файла авторстве что будет присвоен а в восьмой строке в переменную а если файл не найден и что тогда получится у нас в 11 строке на помпе правильно вы поймаем его в 12 строке нет а почему кажется нас иерархии наследований точно не помнят там вроде как он в другой ветке идет да ты прав значит твой кот работать не будет а как же сделать чтобы он работал давай подумаем пробовать поймать mouseenter новой но есть мы напишем план опять
00:32:55 - 00:34:47
будет гореть красным можно подняться боек совершенно дырку что ну там и глубоко зашли тут в общем то все неправильно нам нужно по-другому это писать давай тебя спрошу так ну скажи давай тогда двух словах скажи с в общем давай хороших этим кодом хватит скажи мне в двух словах как булатов фреймворка мид и работал над какими-то фигурками работу а не расслышал работала в каком плане но какими именно что ты взяла использовал какие продукты с какими-то продуктами еще ты работал досками да ну перечень перри чистка
00:33:56 - 00:36:05
hibernate spring [музыка] [музыка] с число продаж и бернес пинг не только читал поджаты какие книги паджа вообще не читал пожаре и полтора года ничего не читал поджарь и не читал одну драки то читал вверх вот это маленькая книжка пытался очиститься код прочитать идеально программист что-то в этом плане тогда общее резюме скажу и мы можем заканчивать я думаю что уровень у тебя ниже такой достаточно невысокие пока ты достаточно junior programmer самого начинающего уровня тебе потому что мне нужен был как
00:35:09 - 00:37:26
минимум там видел его головень такой весьма junior и судя потому что ты говоришь подход я понимаю что ты кот читал мало что ты скорее всего вот судя по этим орган который ты количеству потому что ты делаешь я так понимаю что ты именно программирование на java занимаешься мало ты в основном там видимо склеиваешь модули вместе пишешь какие-то стандартные вещи каким-то шаблоном которые тебе дают и и на этом все тебе нужно для того чтобы повысить свой уровень по резюме общая резюме я тебе дал что ответ нет
00:36:48 - 00:38:00
это точно теперь тебе даю рекомендации на будущее я думаю что тебе нужно побольше писать стараться писать кода именно на именно джами не на спарринги неё hibernate и потому что стринги hibernate это в общем то такой высокий очень уровень абстракции над реальной джавы ты программируя на стенде и на hibernate и причалу толком не знаешь и не и по марат что довольно легко здесь огромное количество ошибок огромное количество проблем в нем которые нужно исправлять но ты их не увидела ты значит что ты
00:37:24 - 00:38:27
мало сталкивался с реальным кодов в основном сталкивался с чем-то другим поэтому надо тебе погружаться глубже в реальный код где его брать это вопрос 1 конечно рекомендовал бы тебе больше книг про java че-то не не смотреть скотт который ты пишешь тебе даю потому что тебя вечно просто используют как рабочую лошадку и выполнять задачи для какого-то бизнеса и ты сам-то не растешь какому-то бизнесу просто помогают это неправильно заниматься саморазвитием читаю оперы книги про джаву во вторых старайся
00:37:55 - 00:39:10
писать что-то самостоятельно на джаве имена не нас прям день инахи верните и в-третьих старайся смотреть на то что внутри того же с hibernate а это и того же стрингов раз уж ты с ними сталкиваешься посмотри как они написаны посмотри на их код посмотри смотри на реальную jal вот она сейчас вот перед тобой этот код который ты видишь это java нужно понимать как они tix экшены устроены как это вся работа с данными работы с файлами работа с этими потоками общем мало у тебя реального опыта с как я говорю с джалаль у тебя есть опыт с
00:38:33 - 00:39:47
чем-то другим что мне как допустим на нанимателю мне было бы не интересно потому что тебя очень у тебя очень ограниченный круг я очень ограниченная компетенция ты знаешь только то вот отсюда и досюда знаешь в рамках тех задач которые ты видимо дело когда вопрос сторону ты достаточно так плаваешь ее теряешься но не потому что ты там плохой программист афонсу тебя просто тебя использовали только в одном как-то лошадь которая ходит по кругу и скажи мелет and action of она умеет только ходить по кругу и и больше никуда
00:39:09 - 00:40:17
не ничуть не сделает на другого не умею так тебя если ты будешь так продолжать делать продолжать кодировать на этом стенде это вот тема резюме старайся старайся больше программировать на они на более низком уровне понятно услышал это не так сложно это даст при тебе это будет более интересной более развлечет тебя больше чем то что ты делаешь сейчас вот посмотри на этот код еще раз сейчас мы закончим интервью у тебя останется за ссылка посмотри на нее еще раз завтра послезавтра попытайся в ней найти еще проблему
00:39:44 - 00:41:06
почитай про димку стримы покрути поиграйтесь попробую не знаю по поэкспериментировать я не знаю с тем же кодом выводов и читай книжки это плохо что ты мало мало прочитал всего 2 3 книги за полтора года ты тоже на одну книгу вместе с минимум читать должно быть уже прочитано быть там 15 книг про jan 15 когда у тебя будет серьезный багажа ты сможешь по крайней мере отвечать на вопрос о героях всё говорю спасибо большое у меня больше вопросов нет все до свидания до свидания пока
00:40:25 - 00:42:00