Техническое интервью Java Developer - Артем Рутковский

Поделиться
HTML-код
  • Опубликовано: 22 дек 2024

Комментарии • 122

  • @evgenyshevelev6100
    @evgenyshevelev6100 3 года назад +83

    Ах если бы все интервьюеры были такие позитивные и тактичные) Спасибо за разбор.

    • @Jetbulb
      @Jetbulb  3 года назад +1

      Спасибо за комментарий!)

    • @angrycatstudio2816
      @angrycatstudio2816 3 года назад +7

      Прочитал как токсичные))

    • @Jetbulb
      @Jetbulb  2 года назад +3

      @@angrycatstudio2816 🤣 под лептопом)

  • @ispaanec
    @ispaanec 2 года назад +15

    Занимаюсь два месяца сам, и смог ответить на вопросы до 38 минуты, как же я рад что мне попалось это видео в рекомендациях, придало уверенность ))

    • @irbis4403
      @irbis4403 2 года назад +11

      не парся синдром студента выучишь и также быстро забудешь))я тоже изначально вызубрил но как код писать не понимал )))прошло время теперь наоборот не чего не помню даже наверное даже на джуна завалю но зато теперь знаю как рабочий код писать .так что всё относительно .эти все вопросы загугли три секунды все равно 80% забудешь эти типо для общего понимания .

  • @ДмитрийСазонов-с2х
    @ДмитрийСазонов-с2х 3 года назад +15

    Спасибо Вам за эту рубрику!!! По Вашим собесам многое новое узнаю! Отличный формат

  • @1glevan
    @1glevan 3 года назад +24

    Спасибо за интервью. Лайк, подписка, как положено, главное продолжайте.
    Теперь по молодому человеку. Откровенно говоря, сложно поверить, что Артем изучает с сентября 2020 года и обладает такими, скажу честно, не поверхностными знаниями. Либо он уделяет не меньше 8 часов в день, либо очень талантлив и с ним занимается ментор или репетитор. Стоит похвалить Артема за такое стремление в изучении языка. Желаю ему успехов, а автору канала, продолжать в том же духе.

    • @nerale
      @nerale 3 года назад +2

      Странно, мне наоборот показалось, что он знает все поверхностно. Не отрицаю, что это просто от волнения

    • @netroute46
      @netroute46 2 года назад +1

      @@nerale ну как бы начинающий и не обязан знать все глубоко. и мне лично не показалось что он знает поверхностно. а в плане софт скилов думаю он даст фору многим.

  • @глебк-п1н
    @глебк-п1н 2 года назад +3

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

    • @Jetbulb
      @Jetbulb  2 года назад +1

      Это кстати результат))
      Есть на что ровняться при определении целей на будущее.

  • @alekseizhitenev6020
    @alekseizhitenev6020 3 года назад +3

    спасибо за этот формат и за пояснение к каждому вопросу, очень полезно!

  • @rztrigger2862
    @rztrigger2862 3 года назад +8

    Артем красавчик)интервью очень понравилось,смог забить свои пробелы в знаниях ))спасибо за видео!

    • @Jetbulb
      @Jetbulb  3 года назад

      Спасибо за комментарий!))

  • @pressf8083
    @pressf8083 3 года назад +11

    Классный собес, интересный грамотный собеседник, интересно было смотреть

    • @Jetbulb
      @Jetbulb  3 года назад

      Спасибо за комментарий! 😊

  • @МаксМакс-ч8к
    @МаксМакс-ч8к 3 года назад +2

    Очень интересно живое общение!! Спасибо автору👍

    • @Jetbulb
      @Jetbulb  3 года назад

      Спасибо)))

  • @dmytronehurytsia3676
    @dmytronehurytsia3676 3 года назад +17

    Что касается разбора технического задания, то был упущен вот этот момент: Соискатель написал вот такой код: values.toArray().length, чтобы получить размер элементов в списке, вместо этого кода необходимо писать values.size(). Конструкция values.toArray() преобразует список в массив данных с типов Object, а затем у созданного массива запрашивает длину! Это очень неэффективно, так как на каждой итерации цикла будет создаваться новый массив с данными только для того, чтобы узнать сколько элементов хранится в списке. Конструкция values.size() просто возвращает значение поля в классе без каких-либо дополнительных операций

    • @hondas_insights
      @hondas_insights 2 года назад

      согласен. у меня так вообще получилось values.toArray(array) и никакого цикла не надо.

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Год назад +2

    Макс, давай еще таких задач. Чтобы было минимум кода но мозголомно в части знания движка

  • @NacWay_
    @NacWay_ Год назад +2

    Вот мне интересно, чувак явно знает мало и все очень поверхностно. В нынешних реалиях(с учетом профицита "джунов" на российском рынке кадров) этого правда достаточно или все таки это оочень мало и надо копать дальше? Очень полезные видео чтобы проанализировать свой уровень. Максим- респект и благодарность!

  • @yegorpetrov25
    @yegorpetrov25 3 года назад +3

    Понравилось интервью. Сам через полгода планирую начать ходить по собеседованиям. Пометил несколько пунктов для себя, которые не знал. Спасибо!

    • @Jetbulb
      @Jetbulb  3 года назад

      Спасибо за комментарий!)

    • @problemyok5747
      @problemyok5747 3 года назад +2

      ну как, начал?

    • @АлександрЮтушуй
      @АлександрЮтушуй 3 года назад

      тоже интересно

    • @yegorpetrov25
      @yegorpetrov25 2 года назад +1

      @@problemyok5747 привет. В феврале 2022 года начал ходить на собеседования, с 01.04.2022 я трудоустроен младшим разработчиком ПО)

    • @yegorpetrov25
      @yegorpetrov25 2 года назад

      @@АлександрЮтушуй да, уже месяц отработал))

  • @igoristomin1
    @igoristomin1 3 года назад +2

    Классное интервью, спасибо!

  • @miha333355
    @miha333355 3 года назад +2

    Классная идея делать такие интервью!

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Год назад +1

    Посоветуйте источники с каноничными определениями терминов ООП? С целью прохождения собеседования

    • @Jetbulb
      @Jetbulb  Год назад +2

      Попробуй вот эту книгу по ссылке ниже
      www.amazon.com/Thinking-Java-4th-Bruce-Eckel/dp/0131872486

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Год назад

      @@Jetbulb благодарю!

  • @alexxxyzzz
    @alexxxyzzz Год назад

    Вопрос по теме. Почему это работает в конструкторе, в Дженеричном классе, например:
    public class GenericList {
    private T[] object;
    private int size;
    public GenericList(int initialSize) {
    this.object = (T[]) new Object[initialSize];
    }
    public void add(T element) {
    object[size++] = element;
    }
    public T get(int index) {
    return object[index];
    }
    public int getSize() {
    return size;
    }
    }
    🤔

  • @АмирАлекаев
    @АмирАлекаев 2 года назад +1

    Огонь. Можно так и учиться))

    • @Jetbulb
      @Jetbulb  2 года назад

      Ну в этом же и есть весь смысл.
      Учимся прямо тут, не отходя "от кассы", а потом на собесах блестаем.

    • @АмирАлекаев
      @АмирАлекаев 2 года назад +1

      @@Jetbulb совсем недавно начал учиться, никогда в жизни небыл связан с it. Надеюсь ближе к концу осени запишусь на собес!

    • @Jetbulb
      @Jetbulb  2 года назад +1

      @@АмирАлекаев Будем ждать.)) Думаю, что август-сентябрь как раз будет набор и потом перед НГ.

  • @SuperHadiy
    @SuperHadiy 3 года назад +5

    Думаю, что наряду с дефолтными методами, функциональный интерфейс может содержать и статические помимо единственного абстрактного.

  • @socialcatalyst2608
    @socialcatalyst2608 Год назад

    Парни, все выучил. Ответил на все вопросы. Код не могу писать. Какой следующий шаг? Фраймворки учить?

    • @СергейКузьмин-ч8в1х
      @СергейКузьмин-ч8в1х Год назад

      Писать проги. Повторять за теми кто пишет какую то программу с нуля. Так рука постепенно набьется и появится насмотренность кода.
      Без практики вся эта теория просто заученный текст.

  • @SuperHadiy
    @SuperHadiy 3 года назад +2

    А если задачку решить с помощью другого перегруженного метода values.toArray((T[])Array.newInstance(clazz, 0))? Просто покороче.

    • @Jetbulb
      @Jetbulb  3 года назад

      Привет, Сергей!
      Почему бы и нет, хороший выбор))
      Утилитный метод newInstance помогает это вопрос решить, поскольку там учитывается проблема вариативности\инвариативности.

    • @igormyatlyuk503
      @igormyatlyuk503 9 месяцев назад

      есть еще более короткий способ: return (T[]) values.toArray(); Но ваш вариант предпочтителен как по мне. вместо 0 можно поставить values.size() и добавить SupressWarnings("checked")

  • @MrSvent0vit
    @MrSvent0vit 2 года назад +3

    Музыка во время решения слишком громкая, все остальное отлично)

  • @Yornero
    @Yornero 3 года назад +3

    Хорошая задача

  • @aliaksandrviktorchyk3781
    @aliaksandrviktorchyk3781 3 года назад +2

    Отличное интервью, однако в процессе не покидало чувство, что собеседуемый читает что-то со шпаргалок ) ну это так, микромоменты.
    Большое дело делаете, продолжайте в том же духе, реактивные вы наши!

    • @Jetbulb
      @Jetbulb  3 года назад +3

      Кто не подсматривает :)
      Это норм. Все мы такими были.
      За то, Артем уже работает и это прямо супер-мотивирует.
      Саша, спасибо за фидбек и что остаешься с нами))

    • @aliaksandrviktorchyk3781
      @aliaksandrviktorchyk3781 3 года назад

      @@Jetbulb Да, Артем молодец, лишний раз подтверждает, что дорогу преодолевает идущий!

  • @protiv_bio
    @protiv_bio 2 года назад +1

    А на английском не проводите? Провелся бы (только без спринга и sql-запросов, т.к. их всегда с гуглом пишу:) и не особо часто это приходится делать)

    • @Jetbulb
      @Jetbulb  2 года назад +2

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

    • @protiv_bio
      @protiv_bio 2 года назад

      @@Jetbulb так я не про языковые навыки, а про сам опыт собеседования Java, но на английском. Кажется, это полезный навык и для русскоязычной компании как работодателя:)

  • @ioanntrapeznikov
    @ioanntrapeznikov 3 года назад +4

    02:21 ОПП. Понятие и принципы - ошибочка

    • @Jetbulb
      @Jetbulb  3 года назад +1

      Спасибо за внимательность! Поправили :)

  • @TestSub1000
    @TestSub1000 2 года назад +1

    Пушка!

  • @MrRomanvideo
    @MrRomanvideo 3 года назад +3

    Все четко и круто , а главное - с ответами на вопросы! Небольшое но - слишком простые вопросы на половину тем, все-таки хотелось бы углубления, напр. по функц. интерфейсам, как это сделали по коллекциям.

    • @Jetbulb
      @Jetbulb  3 года назад

      Спасибо за комментарий!)
      Постараемся включить вопросы про функц. интерфейсы)

  • @a.nevsky
    @a.nevsky 3 года назад

    А что если так?
    @SuppressWarnings("unchecked")
    private static T[] convert(Class clazz, List values) {
    final String format = "[L%s;";
    final String arrayClassName = String.format(format, clazz.getName());
    Class arrayClass;
    try {
    arrayClass = (Class) Class.forName(arrayClassName);
    } catch (ClassNotFoundException e) {
    throw new RuntimeException(e);
    }
    return Arrays.copyOf(values.toArray(), values.size(), arrayClass);
    }

  • @МаксМакс-ч8к
    @МаксМакс-ч8к 3 года назад +1

    Ребята, подскажите хорошую литературу для учёбы. Заранее спасибо!!!!

    • @Jetbulb
      @Jetbulb  3 года назад +1

      Привет, Макс!
      Ответил тебе в другом комменте, но тут тоже решил))
      Если мы говорим про Java, то пожалуй самый лучший автор для начинающих - "Полное Руководство" Герберт Шилдт. Брать последнее издание.
      Он очень классно и кратко по существу все рассказывает. Хорошие примеры предоставляет.

    • @Руслан-ф9л2б
      @Руслан-ф9л2б 2 года назад

      @@Jetbulb а про spring что посоветуете ?

  • @ДмитрийМаслов-о4ъ
    @ДмитрийМаслов-о4ъ 2 года назад

    А зачем он в 15 строке пишет values.toArray().length вместо values.size ?

  • @funbiscuit
    @funbiscuit 3 года назад +2

    С finally кстати не совсем корректно на счет случая, когда JVM упадет с ошибкой. Например, в случае того же OutOfMemoryError finally блок очень даже выполнится. Если запустить вот такой код
    List nums = new ArrayList();
    try {
    while (true) {
    nums.add(new byte[1024*1024]);
    }
    } finally {
    System.out.println("It works!");
    }
    То вывод будет следующий
    It works!
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at Main.main(Main.java:38)

    • @Jetbulb
      @Jetbulb  3 года назад +1

      Привет, Святослав :)
      Твоя активность не может не радовать и привлекла наше внимание.
      Похоже, ты претендуешь на звание "Знающего Java-разработчика".
      Есть предложение... Приходи к нам на интервью, пообщаемся, обсудим технические детали, подискутируем.
      Там ты сможешь круто и централизованно изложить свое мнение, сравнить с нашим.
      Что скажешь?)
      Спасибо, что оживляешь наш канал своими комментариями и активностью. Мы ценим это!

  • @МейрамСапаров-я9и
    @МейрамСапаров-я9и 3 года назад +5

    Интервью супер! Скажите, пожалуйста, с таким уровнем знаний уже можно искать работу или для джуна маловато?

    • @Jetbulb
      @Jetbulb  3 года назад +8

      Привет и спасибо за такой классный вопрос :)
      Мы еще не делали официальное заключение, но тут точно можно сказать, что на собеседования уже пора ходить и вероятность получить приглашение на работу велика. Конечно, мы не исключаем моменты, где явно надо подтягивать знания, но такое есть у любого разработчика, вне зависимости от его уровня.
      Ответ однозначный, искать работу уже можно и даже нужно.

  • @2NormalHuman
    @2NormalHuman 2 года назад +1

    смотрю твои видео даже как андроид разработчик, спасибо за твою работу, но хотелось бы еще собесы сеньоров

    • @Jetbulb
      @Jetbulb  2 года назад

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

    • @2NormalHuman
      @2NormalHuman 2 года назад +1

      @@Jetbulb а котлин собесы не планируете делать?

    • @Jetbulb
      @Jetbulb  2 года назад

      @@2NormalHuman пока в планах нет.
      Вероятно позже, рук свободных не хватает, сожалению.

  • @МихаилКончиц-о1и
    @МихаилКончиц-о1и 3 года назад +2

    А как можно попасть на такое тестовое собеседование, мне бы интересно было оценить свои силы и знания)

    • @Jetbulb
      @Jetbulb  3 года назад +2

      Привет, Михаил!)
      Чтобы попасть на такое собеседование нужно пройти отбор)
      Сейчас как раз открыт новый поток, необходимо решить тестовое задание и прислать его нам)
      Подробнее по ссылке interview.jetbulb.com/main

    • @МихаилКончиц-о1и
      @МихаилКончиц-о1и 3 года назад +1

      @@Jetbulb спасибо) задание сделал и прислал в тот же день, еще вопрос, если я даже не попал на интервью, ответ все равно придет на почту?

    • @Jetbulb
      @Jetbulb  3 года назад +1

      @@МихаилКончиц-о1и мы в любом случае ответим на почту и дадим обратную связь)

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Год назад +2

    Практическое задание хорошее

  • @CiCLoDoL
    @CiCLoDoL 2 года назад +2

    Сложнова-то для джуна как-то. С такими знаниями как у этого парня должны джуном за обе руки расхватывать.

  • @ttop1ttop145
    @ttop1ttop145 3 года назад +15

    интервью хорошее , но в java не принято быть таким позитивным)

    • @Jetbulb
      @Jetbulb  3 года назад +8

      Пора разрушать стереотипы ;)

  • @JIET4UK
    @JIET4UK 3 года назад +1

    Что там со звуком? Пришлось выкрутить на максимум

  • @coolone-p3i
    @coolone-p3i 2 года назад +1

    23:00, вектор это не отрезок

    • @maksymdobrynin
      @maksymdobrynin 2 года назад +3

      Парирую, коллега)
      "... в геометрии и в естественных науках вектор есть направленный отрезок прямой в евклидовом пространстве."

  • @igorsubbotin4791
    @igorsubbotin4791 Год назад

    Странное впечатление от Артёма, как уже писали ранее - производит впечатление поверхностного знания. У меня даже возникло впечатление - как будто он гуглит по ходу интервью или чьи-то подсдказки слушаит. Интервьюер очень добрый и наводящими вопросами склоняет его к правильным ответам. Например, на 15:24 на вопрос "почему необходимо переопределять equals" он начинает неверно отвечать, что это нужно делать, если мы "не хотим сравнивать объекты ПО ВСЕМ ПОЛЯМ" и добавляет, что первоначально (до переопределения) для сравнения в equals используются все поля. И это типа плохо, может понадобится, чтобы использовалась лишь часть))) Это абсолютно неверно. Впрочем, буквально через несколько минут, послушав интервьювера или по какой-то другой причине, он переобувается и уже совсем по-другому говорит - на 17:09 он уже не говорит про сравнение по всем полям, а абсолютно правильно "вспоминает", что сравнение всего лишь по ссылкам.

  • @huminable
    @huminable 3 года назад +1

    Артем нашел работу в итоге?

    • @Jetbulb
      @Jetbulb  3 года назад +2

      Да, вот недавно с ним общались))
      Если он не против будет, может запишем небольшой сценарий с ним, где он расскажет чего добился.

  • @gatabchiteng6782
    @gatabchiteng6782 3 года назад +2

    чуть не оглох от неожиданно громкой музыки

    • @Jetbulb
      @Jetbulb  3 года назад

      Тоже на это обратили внимание.
      Спасибо за фидбек!

  • @miha333355
    @miha333355 3 года назад +1

    Сделайте ещё "первый день на работе"

    • @Jetbulb
      @Jetbulb  3 года назад +1

      Привет, Миша!
      У нас есть идеи на этот счет. Работаем над этим направлением.
      Спасибо за совет :)

  • @ezfootball6246
    @ezfootball6246 3 года назад +14

    хороший собес , правда такое ощущение что собеседник на х1.5 скорости ))

    • @Jetbulb
      @Jetbulb  3 года назад

      Как energizer 😃
      Может ещё всех нас запитать энергией)

    • @KoreeZ86
      @KoreeZ86 3 года назад +3

      Волнуется.
      Сам так же себя вёл. От волнения хочется высказать сразу все мысли.

  • @ajiekcahdppeperoni7011
    @ajiekcahdppeperoni7011 3 года назад +2

    Спектр задач на жава : бекенд, бекенд, бекенд и бекенд

    • @cosmodeath2490
      @cosmodeath2490 3 года назад +1

      На Андроиде и кнопочки подвигать можно

  • @vvindover
    @vvindover 3 года назад

    Меня удивило, что такая строка не сработала T[] array = (T[]) new Object[values.size()], поскольку я так уже несколько раз писал. Набрал этот код, запустил и всё сработало. У меня LibericaJDK-13

  • @evpatorya
    @evpatorya Год назад

    так он сказал Чары

  • @SergeiCherkai
    @SergeiCherkai 2 года назад +1

    Автор настолько крут, что без танцев с бубном ему уже совсем не интересно )))

  • @АлексейРоманов-о3ж
    @АлексейРоманов-о3ж 2 года назад +2

    Вопросы с галеры подьехали. чувак если серьезно джун, то лучше бы код учился писать, чем бесполезные вопросы с собеса задрачивать

  • @Olegus85
    @Olegus85 6 месяцев назад +1

    интересная задачка, вроде и простая с виду, но...

  • @lelelelevv
    @lelelelevv Год назад

    Угараю, когда он говорит слово мышь в непонятном контексте

  • @ЕгорМатвеев-ц7ф
    @ЕгорМатвеев-ц7ф 3 года назад +2

    Имхо, на джунов нынче требования намного больше. Этот собес больше походит на соискание трейни, максимум

    • @АртёмИзмайлов-з8ц
      @АртёмИзмайлов-з8ц 3 года назад +2

      С чего вдруг? Это уровень junior.

    • @АртёмИзмайлов-з8ц
      @АртёмИзмайлов-з8ц 3 года назад +1

      @Андрюша а что нужно ещё?
      Бд понятно, что да. Mvc
      Doker. Tomcat. Юнит тесты.
      Но по сути там собраны ключевые темы. Естественно копать и копать их можно. Но по факту это junior.
      А что ещё нужно ?

  • @mikhailbelikov
    @mikhailbelikov 3 года назад

    Спасибо за видио. Хорошое напоминание о том, насколько Java - концептуально нестройный и устаревший яп

    • @Jetbulb
      @Jetbulb  3 года назад +3

      Привет, Михаил :)
      Спасибо за комментарий. Просто из любопытства... а что в твоем понимании стройный и неустаревший ЯП?
      Ясное дело, что это все субъективно, но просто интересно.

    • @mikhailbelikov
      @mikhailbelikov 3 года назад +1

      @@Jetbulb Привет Jetbulb (прости, не вижу настоящего имени)
      ты сам спросил и, кстати, спасибо за это :) постараюсь быть кратким, насколько это возможно...
      Я считаю, выражение “все познается в сравнении” подходит сюда как нельзя лучше. Так что постараюсь быть не “субъективным”, а наоборот “объективным”.
      Оставляя абстрактные рассуждения о вообще всех ЯП, существующих или существовавших, остановимся на популярных JVM языках, коих всего 4. Сузим их до статически типизированных, отбросим Clojure (мы же сказали “популярные”, хотя тут можно и поспорить) и получим: Java, Scala, Kotlin (в порядке их появления).
      Грубо говоря, что дает нам Java взамен, накладывая свои языковые ограничения, в сравнении со Scala и Kotlin?
      А вот что:
      - система типов: отсутсвие корректной и внятной ко-, контра- и ин-вариантности на уровне языка (Java arrays одни чего только стоят, см. stackoverflow.com/questions/28570877/java-covariant-array-bad)
      - закос и именно закос под функциональные языки (см. pattern matching, sealed classed, record classes напр. здесь docs.oracle.com/en/java/javase/17/language/java-language-changes.html) без добавления идей ФП в сам язык
      - неполноценную ОО: примитивные типы vs объектные (оптимизация на уровне языка здесь ни при чем, байт-код скомпилированный на Kotlin или Scala ничем не уступит байт-коду полученного из Java в плане быстродействия)
      - вытекающая из этого различная и не всегда очевидная семантика для оператора сравнения и метода equals
      - негибкость языка, т.е. невозможность добавлять свои конструкции средствами самого языка (см. что такое internal DSL и как и зачем появился Project Lombok в Java)
      - достаточно большое количество “исключений” в плане языковых конструкций / выражений: ср. со Scala, где практически все является выражением (expression), имеющим определенный тип (даже выражение throw new Exception(“huh”) имеет тип!)
      и много чего еще… :)

  • @fara0n333
    @fara0n333 3 года назад

    Это шоу?)))) дизлайк 👎

    • @Jetbulb
      @Jetbulb  3 года назад

      Привет)
      Как говорила моя учительница: «Макс, двойка тоже результат».
      Спасибо за фидбек, это помогает нам продвигаться вперёд!

    • @ГригорийДроненко
      @ГригорийДроненко 3 года назад +3

      Согласен с fara0n, слишком явно Артем читает ответы с монитора)) Но Макс молодец, сам только изучаю Java, такие видео полезны в любом случае!

  • @АлмазЗалялов-л3э

    Чувак сходи к нормальному парикмахеру, вообще говёно постригли