• 17.96

  • +18.88

  • ,

14 февраля день программиста! С праздником!

Друзья!

Поздравляю всех вас с нашим профессиональным праздником — днем программиста


14 февраля — неофициальный, но широко отмечаемый в профессиональном мире День компьютерщика. 14 февраля 1946 года научному миру и всем заинтересованным был продемонстрирован первый реально работающий электронный компьютер ENIAC I (Electrical Numerical Integrator And Calculator).

Работайте не покладая рук и результат не заставит себя ждать!


  • ,

Тестовое задание: "Написать Интерпретатор на язык BrainFuck"

Привет всем!

Сегодня хочу поделится другой задачей, которая была у меня на собеседовании. Задача, которая проверит как Вы можете мыслить, как пишете код. Задача в общем полезная для развития.
Написать интерпретатор на язык программирования BrainFuck.
Для примера взять исходный код на BrainFuck:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
------.--------.>+.>.
печатающий «Hello World!»


У вас есть на это 1.5 — 2 часа. Вперед!

Вот и всё… Вот и всё условие задачи.

Я вас всех прекрастно понимаю. Для того, чтобы понять вообще что делать, нужно разобраться с двумя терминами:
Что такое интерпретатор?

Что такое BrainFuck?

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


Всем кому задача стала полезной — ставим "+". Решайте задачи, пишите код и вы станете Java разработчиками! Удачи!

См. также мои другие статьи:
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!
  • ,

Тестовое задание "Image Comparison"

Привет всем, дорогие читатели и форумчане!

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

Image Comparison Requirements
Write a program in Java that compares any 2 images and shows the differences visually. Remember that Working Software is the main value, so something simple that works is generally better than a complex unfinished solution.

Must have
  • Implementation should use only standard core language and platform features, no 3rd party libraries and plagiarized code is permitted.
  • Pixels (with the same coordinates in two images) can be visually similar, but have different values of RGB. We should only consider 2 pixels to be «different» if the difference between them is more than 10%.
  • The output of the comparison should be a copy of one of the images image with differences outlined with red rectangles as shown below.
  • We need to see your own code. No third party libraries and borrowed code is allowed.
  • Target completion time is 2 hours, but you may choose to use up to 4 hours. Submissions sent after 4 hours will be disqualified. Note that in addition to quality, time is also factored into scoring the task. The closer you get to 2 hours the higher is the score.



Nice to have
  • It should be possible to exclude certain parts of the image from comparison, for example a clock or dynamically generated number. They will be provided by the caller as a list of rectangles to exclude.
  • Provide some sort of UI either as a web page or GUI that allows the user to select the images and view differences as an overlay on either of the images.
Expected Deliverables
  • Source code.
  • Binary version of the algorithm that runs and produces output of comparison. No build should be required.
  • Output image showing the result of comparison.
Tips and Hints
  • Use javax.imageio.ImageIO to read/write images.
  • Consider java.awt.image.BufferedImage#createGraphics() to draw on in-memory images.


От себя хочу добавить, что хорошим тоном будет еще написать JUnit тесты для всего этого добра. Для этого нужно будет использовать какую-то систему сборки проектов Ant/Maven/Gradle чтобы подтянуть либу для JUnit.

Ставим "+" на статье, если была полезна. Решаем ее, прокачиваем свои скиллы. Она попадалась у меня в двух компаниях!

См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!

Java - быстрее, сильнее и выше! Зарплаты украинских программистов.

Привет всем!
Сегодня хочу поделиться с Вами, форумчане, новой вышедшей статистикой от сайта dou.ua. Они делают каждые пол года опрос на тему зарплат в IT. Очень полезная вещь. Реально. Стоит каждый раз смотреть и думать, анализировать. Особенно важно, что они делают шикарную инфографику, по которой можно понять многое.
Вот несколько примечательных графиков:

Популярность языков программирования
Так что можно не сомневаться — мы выбрали правильный путь. И Джава еще долго будет в мире, т.к. на ней написано уже сотни милллионов строк кода… а сколько еще будет написано....)


В стартапах программируют на:
Т.е. новые проекты пишутся на:

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

Уровень знания английского
Жаль вот только не показывают отношение зп к уровню английского… Чтоб показательно было:)

Динамика зарплаты
Показательно, для понимания полезно:


Популярность вузов
Куда отдавать своих чад учиться:

Зарплаты Java не-Android и Java Android разработчиков
как видно, что на андроиде можно меньше заработать. С другой стороны и порог для входа значительно меньше. Так что каждый выбирает для себя...)


А все остальное и многое другое можно посмотреть непосредственно в первоисточнике :Зарплаты украинских программистов.

Ставим "+", делимся впечатлением и растем, растем, растем, будущие Senior Java Developers :D

З.Ы. как оказалось можно найти на другом источнике отношение зп к уровню английского

См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!

Профессиональное выгорание. Как устоять?

Приветствую вас, дорогие друзья!

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

Эта статья не будет связана с программированием и все же она очень важна для программиста. Проблема профессионального выгорания есть и ее просто так не избежать.
А что это собственно такое? Обратимся к гуглу, первая ссылка гласит:
Профессиональное выгорание – это синдром, развивающийся на фоне хронического стресса и ведущий к истощению эмоционально-энергических и личностных ресурсов работающего человека.

Для того, чтобы стать Java разработчиком необходимо ОЧЕНЬ много эмоционально-энергических и личностных ресурсов. Т.к. необходимо знать и понимать огромное количество фреймворков, инструментов, библиотек и т.д. И со временем это количество растет. И самое сложное в начале, когда нужно освоить какое-то базовое их количество.
И стоит вопрос в том, что сделать, чтобы еще на эпате обучения не «сгореть»?.. Я в свое время тоже задумался над этим вопросом, но у меня были некоторые знания о том, что такое колесо жизни.

Колесо Баланса Жизни

По сути, колесо жизни отображает наш Жизненный баланс и когда он нарушен, т.е. преобладает какая-то часть над другими, или какая-то часть сильно запущена — то это приводит к ухудшению во всём.
Не буду вдаваться в подробности того, как им пользоваться(это вы сами загуглите — вы ж программисты), но попытаюсь собрать вершки: чтобы обрасти в жизни баланс, необходимо развивать все сферы в жизни. А баланс необходим для того, чтоб быть счастливым и чтобы были эмоционально-энергические и личностные ресурсы. Которые так нужны нам, программистам.
Первое и самое главное — нужно здоровье. Без здоровья не будет ничего. Ведь вы сами понимаете, что когда мы болеем, то делать ничего не хочется. А чтоб было здоровье, нужно прилагать к тому усилия.

Занимайтесь спортом!
Спорт дает нам силы, которые нужны для жизни. Спорт питает нас тему ресурсами, которые нужно чтобы не выгореть как специалисту. Спорт делает нас здоровыми и не восприимчевыми к болезням.
  • Я, к примеру, хожу в тренажерный зал 3-5 раз в неделю. Причем каждая тренировка начинается с пробежки на беговой дорожке и заканчивается им. Придерживаюсь того, что делаю много подходов и много повторений. Я считаю, что это лучшее решение для такой профессии как наша.
  • Купил себе фитнес трекер для счета того, сколько в день хожу. Это тоже очень важно при нашем сидячем образе жизни. У меня стоит норма 10 000 шагов это примерно 8км.
  • У меня есть велосипед и я им пользуюсь. Любительски. По городу езжу.

Настольные игры
Я в свою очерень очень люблю играть в настольные игры! Это было для меня открытием, пару лет назад я попробовал. Начинали мы с игры «Монополия», но ее оказалось мало и то, что она зависима сильно от кубика тянула нас дальше и потом мы сыграли в настолькую игру «Колонизаторы», которая тоже была с кубиком, но она более интересная как стратегия. Причем именно в Колонизаторов мы играем постоянно, прелесть ее в том, что карта не статическая и всегда раскладывается рандомно и каждый раз все по разному.
В погоне за сложностью мы начали играть в топовые игры, такие как «Игра престолов» и «Цивилизация», в которых только вдумчивое чтение и разъяснение правил идет не менее 2-3 часов. Но оно стоит того.

Музыкальный инструмент
Здесь конечно сложнее и порог входы выше, чем в настольных играх, но оно того стоит. Это как раз та часть в колесе жизни, которая относится к творчеству и личностному росту. Я играю на гитаре. Конечно этому я научился до того, как начал программировать, но я уверен, что на гитаре научиться играть «4 блатных аккорда» для начала не так уж и сложно. А вот эффект будет потрясающим!

Личная жизнь
Один из самых сильных мотиваторов — развиваться во имя кого-то.Совсем недавно я женился, у меня молодая красивая жена, для которой я хочу приносить лавры своих побед. С ней я развиваюсь всё время, становлюсь лучше. Тем более, что это большая отвественность, которая также дисциплинирует.

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


Ставте цели
Ни один успешный человек не обходится без целеполагания. В данный момент я говорю именно о тех людях, которые всего добились сами, в не получили в наследство. Именно те, которых трудом и потом добивались всего в своей жизни. Есть прекрастная, проверенная методика — целеполагание по SMART
Отдых — это смена деятельности
Так просто и так важно. Чтобы были силы для развития, необходимо развиваться разномерно. В этой статье я привел те вещи, которые делаю Я. Для вас они могут быть другими, совсем другими. Но принцип один — помимо работы, развития себя как специалиста необходимо учитывать и другие роли.

И еще немного

Есть еще одна мысль. Будут люди, которым она не понравится и это нормально.
Если вы хотите добиться еще больше и перейти на более новый уровень — откажитесь от употребления алкоголя и сигарет и других веществ, которые дают фальшивое удовольствие! Абсолютно, как говорится «не капли в рот».
Кто касается меня, то я уже 1.5 года аюсолютно не употребляю алкоголь. Как раз в тот момент, когда решил учить Java. И за это время я добился ОЧЕНЬ многого. И цели на дальнейшее СООТВЕТСТВЕННЫЕ.

Статья получилась может без жесткой конструкции, это скорее крик души. Жизненный байки, которыми я сегодня поделился с вами. Конечно, может быть вы этим всем занимаетесь, тогда я очень рад за вас. И все же есть люди, которые об этом не знают. Я не знал. Не знал до 22 лет. И был бы рад узнать об этом пораньше.

Если вам понравилась статья — ставьте "+". берегите себя и свою жизнь, мечтайте, добивайтесь целей, влюбляйтесь и живите так, чтобы не «сгореть».

См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!

Как найти работу? Рассылка резюме.

Приветствую вас, будущие сеньеры!


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


Куда отправлять?

А ведь действительно, куда? Нужно же заявить миру о том, что вы готовы работать! В нашем случае, почти все IT-компании имеют свои сайты и на этих сайтах можно найти их почту.
первым делом нужно собрать почты компаний. И их должно быть не 2, не 5 даже не 10, а больше, максимально возможно. (К примеру у меня был список из 131-й почты!).
Есть еще способ, часто на сайтах работы регистрируются компании и их там еще можно найти.
Для тех, кто из Украины, есть сайт для программистов dou ссылка сразу на список компаний. Там можно выбрать свой город и посмотреть. Ресурс вообще очень сильный и всем начинающим я советую его прошерстить!

Сопроводительное письмо

Допустим, вы уже собрали список почт всех IT-компаний, которых смогли. Следующий этап — написать сопроводительное письмо… А что это такое?
Сопроводительное письмо(в моем понимании) — это текст, который прикрепляется в письме вместе с резюме, в котором можно написать цель этого письма, какие-то милости про компанию(например я уверен, что в вашей компании я стану лучше и т.д) и конечно же сказать на какую позицию собиратесь.
Сопроводительное письмо ДОЛЖНО быть на английском языке! Рекрутеры очень любят, когда пишут сопроводительное письмо и написав его, вы будете уже выше тех, кто этого не сделал. Я уверен, что многие этого не пишут. Когда большой конкурс на место, то на первом этапе многое зависит от рекрутера! Пример своего приводить не буду, т.к. хочу еще им пользоваться :)

Рассылка резюме

Теперь уже готово и резюме(конечно же на английском языке) и сопроводительное письмо готово и теперь можно рассылать, но прежде нужно сделать следующее:
  1. С какой почты отправлять? Хорошим тоном будет, если будет почта от гугла(gmail.com) и она будет состоять из шаблона firstName.lastName@gmail.com. Часто бывает, что отсылают со старых почт, которые были зарегистрированы, как brutal.eggs@mail.ru или как-то еще какие-то смешные.
  2. Отправлять каждое письмо отедельно для каждой компании, не делать массовой рассылки! Это видно тем, кто получает и это минус вам!
  3. Отправлять по 5-6 писем каждые 3-4 часа, чтоб не попасть в спам-лист получателей.
  4. ждать ответа:)
Конечно, вы можете подумать, что в компании, которые вы отправляете вы вовсе не нужны, но это ошибочное мнение, потому что:
1. Если в той компании нет джава отдела — ну и ладно. Вам ответы из этой компании тоже не нужны.
2. Если там есть отдал джавы, но нет вакансии — тоже хорошо. Вам ответят, что пока не вакансии, но вас занесут в свою базу и как только появиться — вам напишут.
3. Часто бывает, что позиция джуниора есть, но ее не афишируют, чтоб не было спама от желающих и они ищут своими силами. Вот здесь как раз и смотрят вначале на свою базу данных, в которую вы ДОЛЖНЫ попасть, если хотите быть в числе первых.
4. Как обычно, доля удачи нужна всем!
5. И последний пункт про LinkedIn

Регистрация в LinkedIn


Зарегистрироваться в LinkedIn — это социальная сеть для тех, кто ищет работу и кто ищет работников. В СНГ это соц.сеть для поиска IT специалистов. Это одно из самых любимых мест рекрутеров. Здесь нужно создать свой профиль и максимально заполнить его. Там можно поставить свои навыки, которыми владеешь, чтобы рекрутер мог знать.

djinni.co

djinni.co — портал для тайного поиска программистов. Рекрутеры вначале видят только скилы того, кто ищет работу и только с согласия соискателя могут получить информацию о Вас. очень удобная вещь для тех кто работает и думает поменять. А для нас это еще одно место, где нас могут найти рекрутеры. Так что не брезгуйте этим местом, регистрируйтесь и ждите, авось кто-то напишет)


Итог
Теперь Вы знаете как это можно сделать, время действовать! Хочу пожелать всем удачи в поиске своей первой работы! Стремитесь, ищите и удача возблагодарит вам!

Если вам понравилась статья — ставьте "+" над ней и удачи в поиске работы!

См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!

Технические вопросы на собеседовании.

Привет всем, Джаварашовцы!

Так уж случилось, что недавно я проходил собеседование и хотел бы рассказать, какие вопросы мне задавали предполагая, что идет позиция Junior++. Т.е. еще не мидл, но уже и не зеленый джун.

Так вот, собеседование проходило по такому плану
  1. JavaCore
  2. ООП
  3. REST
  4. Базы данных.
  5. Инструменты, которыми пользуешься.

JavaCore

  • Вначале меня попросили нарисовать иерархию интерфейсов у Коллекций.(Это было не сложно, там всего их несколько(Collection,List,Set,Queue,Map). )
  • В чем различие ArrayList и LinkedList(это один из замых заезженных вопросов и ответов в инетах просто тьма). Обсудили скорость выполнения запросов в них и какая разница между листами.
  • Вопрос про класс Object. какие у него методы, что они делают.
  • Рефлексия. что делает метод getClass(). Очень интересный вопрос, разберите его. Особенно про то, как получить всё про класс, пусть даже там приватные методы или переменные.
  • Спросили за многопоточность. Слабенько, как я считаю, так рассказать как ты понимаешь что такое многопоточность. Что нужно, чтоб запустить новый поток. Реально, если вы 20+ уровень, то эти вопросы для вас покажутся смешными.
  • Что можешь сказать про Stream. Это имеется в виду не про Java 8. Имеется в виду потоки ввода и вывода. Как базовые интерфейсы, какие они (символьные и байтовые). На понимание, никакой конкретики.
  • Исключения. Здесь опять-таки попросили нарисовать иерархию исключений, какие бывают, какие из них checked, а какие unchecked. Что нужно делать с Runtime исключениями. Назовите самое часто попадающее(NullPointerException)
  • Вопрос с тем, что нужно делать с checked исключениями(пробрасывать дальше или обработать — понятно и то и другое.)

ООП

  • Что такое ООП в двух словах?
  • Какие еще есть парадигмы программирования? В чем их различие от ООП
  • Какие основные принципы ООП?(наследование, полиморфизм и инкапсуляция) Рассказать про каждый из них. Пока всё абстракатно, не привязываясь к какому-то языку.
  • Задача на понимание проектирования систем: есть Лошадь и Птица. Нужно получить Пегаса. принцип «has a» и «is a»

REST

  • Что такое REST. В википедии об этом говориться очень круто. Реально статьи из википедии для ознакомления хватит
  • HTTP. Здесь тоже общие фразы. Его методы, для чего каждый из них.
  • Коды состояния HTTP. на какие пять частей делиться, расскажите про самые известные (200,204,404,500,501). Зачем они. Спросили еще про 401 и 403. Но я не знал их. Сказали они важные.

Базы данных

Здесь я рассказал, что знаю MySQL. Рассказал про три нормальные формы. Рассказал про Join'ы, какие бывают и нарисовал пересечение областей, в котором используются разные джоины. Рассказал про то, как я понимаю реляционную БД. Не забыл еще о про MongoDB — это NoSQL база данных. Через некоторе время я напишу и про это.

Другие Инструменты
Здесь мы прошлись по моем резюме. У меня было написано, что использую Maven/Gradle для сборки, использую JIRA для тасков, git, Docker, Swagger. Для Continuous Integration — Stash, Bamboo, Puppet. Для тестирования JUnit, Mockito, JMeter.


Я мог что-то забыть, поэтому если интересно — спрашивайте в комментариях постараюсь ответить.

Это была первая часть собеседования. Теперь жду результаты и если да, то будет вторая часть. Напишу о ней как только так сразу.
Всем кому статья понравилась и была полезна — ставьте "+". Пишите в комментариях.

См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!

Английский для IT и для собеседования.

Приветсвтую Вас, дамы и господа! =)


Так получилось, что я последнее время готовился к собеседованию и нужно было подготоовиться к английскому.
Тема эта так же важна, как и само программирование, т.к. вся документация на английском, всё самое свежее на английском, самые классные книги на английском.
Да, скажете вы, что есть же переводы книг на русский… Это правда, но и правда то, что большинство переводов никудышние и не передают суть вопроса. А иногда и вовсе вводят в заблуждение.

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

Реальность такая, что во многих компаниях собеседование проходит в три этапа:

  • Общение с HR. На этом этапе рассказывают про компанию, какие они классные, чем они занимаются и т.д. и попутно смотрят насколько адекватен, собеседник. Если он неадыкват, то дальше никакого общения не будет.
  • Собеседование на английском… Вот здесь как раз будут смотреть, насколько честно вы признались в резюме, какой у вас уровень. И реально, если вы будете молчать и ничего не отвечать, то на этом этапе собеседование для вас закончится… Здесь будет общение не на тему программирования, а так просто в вольной теме или зачастую «Tell me about yourself».
  • Если вы успешно прошли первые два этапа — поздравляю, вы сможете поговорить с техническим специалистом на тему вашей профессиональной граммотности.


Исходя из этого списка, я хочу рассказать о том, как я это делал, какие выводы и примеры.
На своей первое собеседование я шел и про тему английского как-то не подумал… цитата из моей статьи:
Поговорив с HR-ром, ко мне позвали преподавателя по английскому, с которым я «пообщался». К этому моменту я вовсе был не готов и вышло, что я больше слушал, чем говорил. И на тему расскажи о себе, я что-то промямлил, но ничего особенного.
И после этого я вынес важный урок, что к английскому нужно готовиться также чательно, как и к техническим вопросам.
Реально за короткий срок грамматику всю не повторишь и не изучишь, а вот сделать небольшую шпаргалку для себя — это можно. Пусть она будет состоять из простых предложений, пусть она будет не доскональной, но она Будет! и вам будет что сказать.

С такими мыслями я составил свой первый рассказ, который понятно я выучил, может не дословно, но приближенно к тексту:
Hello. my name is roman. I AM studiNG AT SomeUniversity. I have HAD an experiance in android development. Ive been working with freelansers team since January. I have strong communication skills and I am fast learning person.
I have many hobbies, for example i play guitar and love camping.
My grandfather father and I are bee-keepers. Really. I am not afraid when bees are stinging me. I know what need to do if you want to get some honey from bee-hive.
I like sport, thats why i go to the gym EVERY OTHER DAY day. I lIKE this.
Also i do not drink alkohol and smoke the cigarretes.
Небольшой, но уже какой-то. Там где выделено большими буквами — это мне редактировала моя жена, которая читала это. У нее с английским получше, чем у меня.

На другом собеседовании я использовал эту шпаргалку и всё было хорошо, меня слушали и кивали. Но я не подумал о том, что мне же будут еще задавать вопросы и хорошо бы, чтоб я мог на них ответить. На этом я прокололся. Опять начал мямлить и говорить мало и медленно.
Из этого собеседования я вынес, чтонужно было к моему рассказу еще подумать ответы на предполагаемые вопросы...

И вот я плавно подошел к тому, что готовился пару дней назад. За это время я несколько поднатаскался с английским(как я считаю) и получил вот такой шаблончик:
Hello!
My name is Roman. I live in SomeCity. I’m working as Java developer in IT company.
On this job, I’m developing microservices structure. For dependency injection, I’m using Guice(pronounced as juice). It’s lightweight framework from Google. Also, we’re using Jersey. As build tools, we are using Gradle. Gradle it’s the most powerful of all those tools. Because it has life circle as Maven and it has tasks as Ant. And all of this you can combine as you want on Groovy. it’s mean that you do all thing in groovy script. Also, I’m making different tests. I’m using JUnit 4, Mockito and JMeter. For database we use MongoDB where we store metadata for our application.

I love sports, that’s why 3 times per week I go to the gym. Also, I like to play volleyball, badminton and sometimes I can go to play soccer with my old friends, but it doesn’t mean that I’m good in it.
Also, I have many hobbies, for example, I play the guitar. Every summer I go to the forest near Chuguev on the Severskiy Donec beach. It’s place called “Figurovka”. Every night we seat around the bonfire and sing songs while I play the guitar. It’s about the night, as for day we usually play volleyball and badminton.
you know badminton is more difficult than volleyball because while you play volleyball you can rest instead of badminton when you need to move all the time if you want to win. When I speak about badminton I mean professional badminton when you have badminton court and rules.

Next, it is a hobby and a family business. My father and I are beekeepers. We know how to get honey :D.
we have about 40 colonies of bees. It’s normal for us. I love it because working with bees it’s very healthy for the body. They are very smart. of course, we sell honey. Bees produce many commodities. For example honey, beeswax, pollen, propolis and else. Also, we produce Medovucha. It’s lightweight alcohol beverage, which does not contain ethanol.
Also, we provide pollination services.

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

Английский для IT
И конечно хочу добавить несколько слов из своего опыта про то, как развивать свой английский в IT.
Это только лично мое мнение и оно никоим образом не претендует быть правдой в последней инстанции, но если кто-то вынесет для себя что-то интересное — я буду только рад.

Есть даже у меня в городе курсы, которые предоставляют английский именно для IT, но мне кажется, что это плохая идея. Английский лучше учить на хороших курсах или на видеоуроках, а вот слова, которые необходимо использовать в профессиональной деятельности — их можно черпать из книг на английском.

Да, именно так, сейчас я читаю книгу «The Linux CommandLine» на английском и завел себе тетрадь, в которую вписываю неизвестные мне слова, которые они используют. И это реально работает, это помогает мне.

Вконце хочу пожелать всем Джаварашевцам удачи в прокачке своих скилов, успешном поиске работы и intermediate английского!

Всем, кому понравилась статья, ставте "+", пишите в комментариях, давайте вести диалог.

См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!

Паттерн Singleton своими словами.

Привет всем, javaRush!

Расскажу сегодня про паттерн проектирования Singleton(одиночка).

Цель:
Создать класс, у которого будет только ОДИН объект.

Это значит, что сколько бы раз к нему не обращались, возвращаться будет один и тот же объект, который был создан первый раз.

Это удобная вещь и необходимая во многих местах, не зря ее внедряют во фреймворки.

Применение
  • Например необходимо подключить базу данных в проект и класс, который будет отвечать за соединение с ней. Один раз создается соединение и нет нужны создавать его снова и снова
  • Application settings — класс отвечающий за настройки отружения, которые нужны для приложения: хост и порт базы данных и т.д. Они создаются один раз и используются всё время работы приложения.
  • есть еще множество примеров, о которых я не сказал, поэтому пишите в комментариях свои варианты! =)


  • После этого вступления, как я понимаю можно показать уже пример этого класса: (Хотя я уверен, что каждый из нас сможет придумать реализацию этого)
    Вот самый простой пример, когда мы ставим приватным конструктор, т.е. нельзя создавать явно объект. И есть статический метод getInstance(), который предоставляет объект.
    
    public class Singleton {
      private static Singleton instance;
      private Singleton () {}
    
      public static Singleton getInstance() {
        if (instance == null) {
          instance = new Singleton();
        }
        return instance;
      }
    }
    

    Есть проблемы с многопоточностью и тогда можно поставить метод getInstance() маркер synchronized:
    
    public class Singleton {
      private static Singleton instance;
      private Singleton () {}
    
      public static synchronized Singleton getInstance() {
        if (instance == null) {
          instance = new Singleton();
        }
        return instance;
      }
    }
    


    В конце, как обычно, хочу сказать, что если вы думаете иначе или нашли у меня ошибку — пишите в комментариях! Мы все обсудим, с удовольствием :)

    Если Вам понравилась статья, пишите "+" и я буду это знать. Это для меня важно :)


P.S. Добавляю еще реализации:

По мнению Joshua Bloch’а это лучший способ реализации шаблона Enum Singleton

public enum Singleton {
	INSTANCE;
}


Double Checked Locking & volatile

public class Singleton {
        private static volatile Singleton instance;
	
        public static Singleton getInstance() {
		Singleton localInstance = instance;
		if (localInstance == null) {
			synchronized (Singleton.class) {
				localInstance = instance;
				if (localInstance == null) {
					instance = localInstance = new Singleton();
				}
			}
		}
		return localInstance;
	}
}


И еще On Demand Holder idiom:

public class Singleton {
		
	public static class SingletonHolder {
		public static final Singleton HOLDER_INSTANCE = new Singleton();
	}
		
	public static Singleton getInstance() {
		return SingletonHolder.HOLDER_INSTANCE;
	}
}

+ Ленивая инициализация
+ Высокая производительность
— Невозможно использовать для не статических полей класса

Будут вопросы/предложения — пишите в комментарии!


См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!

Паттерн Command своими словами.

Привет всем, Форумчане!


Разобрался-таки основательно(как мне кажется) с паттером Command и хочу попытаться рассказать о нем «своими словами».
Исходя из википедии, можем узнать, что цель его
Создание структуры, в которой класс-отправитель и класс-получатель не зависят друг от друга напрямую. Организация обратного вызова к классу, который включает в себя класс-отправитель.

В принципи написано чётко и правильно, но это в теории. А как же сделать это?
Вот этим начинаются проблемы, т.к. описание уже не так ясно и очевидно.
Поэтому я как разобрался, решил рассказать вам как я это понял, может кому-то и пригодится:

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

В этом паттерне есть четыре термина, пока примем их как данность: команды(command), приемник команд(receiver), вызывающий команды(invoker) и клиент(client).

Пример буду брать с той же википедии, он вполне сносный.

Задача
есть класс Light, который умеет две вещи: включить свет и выключить. Он в терминах паттерна будет «приемник команд(receiver)»
/*Receiver class*/

public class Light{
     public Light(){  }
   
     public void turnOn(){
        System.out.println("The light is on");
     }

     public void turnOff(){
        System.out.println("The light is off");
     }
}


Создадим интерфейс с одним методом execute(), который будет выполнять и который называется в терминах паттерна «команда(commadn)»
/*the Command interface*/

public interface Command{
    void execute();
}


Необходимо инкапсулировать выполнение умений класса Light. Для этого мы создадим классы TurnOnLightCommand и TurnOffLightCommand, которые реализуют интерфейс Command и которые будут принимать в конструкторе объект класса Light. И каждый из них будет выполнять только одно действие. Один будет вызывать метод turnOn(), а другой turnOff().
/*the Command for turning on the light*/

public class TurnOnLightCommand implements Command{
   private Light theLight;

   public TurnOnLightCommand(Light light){
        this.theLight=light;
       }

   public void execute(){
      theLight.turnOn();
   }
}

/*the Command for turning off the light*/

public class TurnOffLightCommand implements Command{
   private Light theLight;

   public TurnOffLightCommand(Light light){
        this.theLight=light;
       }

   public void execute(){
      theLight.turnOff();
   }
}


Теперь пришло время создать объект, который бы принимал эти инкапсулированные методы объекта Light. Он в терминах паттерна называется вызывающий команды (invoker). Назовем его Switch и пусть он будет принимать в конструкторе переменные Command, которые будут использоваться в созданных методах flipUp() и flipDown().
/*the Invoker class*/

public class Switch {
    private Command flipUpCommand;
    private Command flipDownCommand;

    public Switch(Command flipUpCommand,Command flipDownCommand){
         this.flipUpCommand=flipUpCommand;
         this.flipDownCommand=flipDownCommand;
    }

    public void flipUp(){
         flipUpCommand.execute();
    }
    
    public void flipDown(){
         flipDownCommand.execute();
    }
}


Ну и конечно создадим класс который будет использовать их, чтобы понять что происходит вообще. Он будет именть метод main, в котором и будет происходить всё действие:
/*The test class*/
public class TestCommand{
   public static void main(String[] args){
       // создаем объект, который будет использоваться
       Light l=new Light();
       // создаем объекты для всех умений объекта Light:
       Command switchUp=new TurnOnLightCommand(l);
       Command switchDown=new TurnOffLightCommand(l);
        
       // Создаемтся invoker, с которым мы будем непосредственно контактировать:
       Switch s=new Switch(switchUp,switchDown);
       
       // вот проверка этого, используем методы:
       s.flipUp();
       s.flipDown();
   }
}

На выводе будет следующее:

"The light is on"
"The light is off"


Где это применяется?
По цели ясно, что и для чего это нужно, а именно: в ситуации, когда нужно отделить конкретное исполнение, это очень удобно. Чтоб использование каких-то функций не зависело от конкретной реализации и ее можно было изменять без ущерба для системы.
как-то так...)
Пишите свои комментарии, давайте обсуждать, может что-то можно сделать проще и рассказать лучше, будем всё править, если необходимо) Чтоб для тех, кто будет читать первый раз, было как можно понятнее.

Ну и кому понравится статья — ставьет "+" на ней :) Для меня это важно)


Со временем хочу написать еще про Builder, Singleton и прочие.


См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!

История успеха спустя 1.5 года от начала обучения.

Осторожно! Много Букв!



Для начала расскажу немного о себе.
Мне 25 лет. До того, как начать изучать Java учился на математическом факультете, на прикладной математике. Казалось бы, с программированием у меня должно быть если не отлично, то по крайней мере хорошо. Но это был не мой случай, т.к. все предметы, где мелькало программирование — я саботировал и сдавал как-то на удаче, сам ничего не писал. Так вот и получилось, что я от программирования был далек. Ясное дело, что с образованием математика в нашей стране много не заработаешь кроме как программистом. Поэтому и выбор пал именно на это. И так совпало, что решил учить Java. Это не было связано с каким-то анализом рынка или поиском по количеству рабочих мест, востребованности на рынке труда. Просто так совпало. И когда решил узнать как это делать — то наткнулся на JavaRush. Как-то не хотелось учиться только по книгам, но и на очные курсы я смотрел нехотя, т.к. денег стоят они много, а реально профита мало. Поэтому JavaRush для меня был лучшим решением. Пройдя первые 3 уровня, я понял что курс мне нравится и что можно покупать подписку. Тем более, что я попал на акцию и приобрел за пол цены. Было это в конце августа / начале сентября 2015 года.

План обучения.
Прочитав что нужно делать, я решил составить план того, как я должен учиться, чтоб добиться цели и закончить курсы, потому как времени на медленное изучение у меня уже не было. Задача стояла получить быстро знания, причем так чтоб не отвадить желание и чтоб мозгам было время отдохнуть. Потому что такая нагрузка, которую я хотел могла помешать мне.
Для этого решил:
  • Что нужно учиться пять дней в неделю(пн-пт).
  • В выходные дни я буду заниматься чем угодно, только не этим.
  • Каждое занятие будет идти в общей сложности 4 часа, причем между каждым часом будет перерыв в 15 минут, для того чтоб пройтись, отдохнуть и сделать чай.
Итого 20 часов в неделю. Неплохо, да? К тому же иногда приходилось заходить в университет, т.к. я еще учился в магистратуре.
К декабре я уже был на 20 уровне и думал, что знаю очень и очень многою Но были у меня и кризисы, когда ничего не получалось и казалось, что дальше не смогу (см. моя статья помогите, нужна мотивация).


Переход на новый уровень.
Через три месяца после начала обучения, я побеседовал со знакомым на тему того, что я еще должен знать, чтоб устроиться на работу…
И тут понеслось: какие-то не знакомые слова, базы данных (о ужас!) и многое другое дали мне понять, что нужно ускоряться и делать еще больше. Ясно, что с грамматикой джавы мне не получить работу, я начал ускоряться в разных направления:
  • Купил себе книгу Head First «Изучаем Java». Ее рекомендуют на 4-м уровне в курсе. Но я как-то не внимательно читал и пропустил этот факт. Там рассказываются теже вещи, но под другим углом, что помогает понять их лучше и основательне. Советую.
  • Начал искать все тематические тусовки в своем городе и ходить на них, пусть даже я многого не понимал, зато со вмеренем понял, что это было не зря и они мне очень помогли. например так
  • Есть еще один ресурс, который нужно прошерстить от начала и до конца — это dou — сайт для программистов. Там можно посмотреть какие бывают ивенты, какие нынче зп в украиском ИТ, можно прочитать много очень полезных статей, особенно рекомендую Материалы по теме «Пособие для будущего Java разработчика» и Java Enterprise: что и как учить. Эти статьи будут помошником для вас и не будут давать расслабляться.
  • Нашел короткие и информативные видеоуроки на youtube по MySQL, советую.
  • Видеоуроки Головача тоже не остались без внимания. Их много, много воды, но разъясняет многие вещи достаточно хорошо.
  • Так же нужно понимать что такое HTML и CSS. Без этого никак, тут мне помогла в этом HtmlAcademy. Там можно проходить задания бесплатно.
  • Зарегистрировался в соц.сети linkedIn, где начал выставлять свои навыки и что я ищу работу(а вдруг повезет и меня найдут). Добавлял всех подряд в друзья расширяя круг своих друзей. Чтоб вы понимали насколько, то сейчас у меня больше 10 000 друзей в линкедине. Для начала это нужно. И это помогло, команда андроид фрилансеров искала новичка себе и мне написали. Я понимаю, что случай из ряда вон выходящий, но это случилось.

Первые неудачи
Конечно параллельно учебе, я начал искать интернатуру в компаниях так, чтоб со временем можно было работать. Меня пригласили на собеседование в интернатуру. Поговорив с HR-ром, ко мне позвали преподавателя по английскому, с которым я «пообщался». К этому моменту я вовсе был не готов и вышло, что я больше слушал, чем говорил. И на тему расскажи о себе, я что-то промямлил, но ничего особенного. А вот при общении с техлидом я отвечал на некоторые вопросы, на многие ответа не знал и на ответ, что обучаюсь в JavaRush, он сказал что передо мной был еще один студент оттуда. Я был на 27 уровне, а он уже на 34. Поговорив он сказал, что мне перешлют тестовое задание, по которому решат годен ли я. Я его как-то сделал, причем не весь функционал. Через некоторое время мне написали, что я им не подхожу… Обидно, но я решил извлечь опыт из этого и пошел дальше.

Первая работа.
Как я уже говорил, составив страницу в linkedin'е через 1.5-2 месяца мне написал некий андроид разработчик с предложением работать с ними. Ясное дело, что речь шла об минимальной зп. Мы пообщались при встрече и мне предложили работу. Понятно, что она была слабо оплачиваемая, но другого у меня не было и я радовался тому, что было. Начиная с конца января я начал работать на квартире одного из них на анроиде. Всё было новое, все другое. Но кое как и как-то я работал, что-то делал. Было страшно и всё не понятно, это были не задачки в JavaRush. Всё нужно было делать, читать, узнавать что и как. У меня был тестовый проект, который я делал и который мог стать чем-то большим со временем. И так прошло до мая. Потом как-то начал разваливаться наш коллектив, все это поняли и начали искать работу.

Поиск новой работы.
Не зная как это делать, я решил что буду рассылать всем компаниям, которые есть в моем городе. А как узнать какие есть компании? В этом мне помогл тот факт, что я прошерстил dou вдоль и поперек. Там есть раздел компании и можно выбрать город, которому идет поиск. В описании есть почта (почти всегда есть), на которую можно писать. Чтоб всё выглядело хорошо, я написал свое резюме на английском языке, только так и надо. Конечно было много воды, воды, воды, т.к. писать особо нечего было, писал всё подряд. Также к каждому письму писал сопроводительное письмо(рекрутеры любят это), где я указал кем именно я хочу быть, а то часто выходит, что присылают резюме и не ясно на какую позицию претендуют. Сопроводительное письмо было также на английском. Совсем забыл, английский нужен ОЧЕНЬ сильно. Реально, если ты не можешь прочитать ответ на стековерфлоу, то ты не жилец и делать тебе в программировании нечего. Составил себе на речь на собеседование английского на тему: Tell me about yourself. Очень полезная вещь, я вам скажу.

Спустя некотое время я получил 4 приглашения на собеседование. Практика рассылки всем компаниям была оправдана, причем тем, у кого не было таких позиций — они обычно не отвечали вовсе. На собеседованиях было сложно, было стыдно, было не уютно, но я прошел их, в некоторых просто говорили, в других нужно было сделать пару заданий, например нужно было написать интерпритатор на джаве на язык BrainFuck. Задача оказалась интересной и я рад, что ее выполнил, хоть меня в ту компанию и не взяли. Искал я работу либо на Java либо на Android. Хотя хотелось больше на джаву, мобильная разработка мне не особо интересна. Зарплатные ожидания были минимальны, нужно было найти работу, всё остальное было уже не важно. Спрашивали меня на понимание Баз данных, о там как создать таблицы в для определенных ситуаций. Это всё касается SQL баз данных, про NoSQL никто не спрашвивал.

Первый оффер.
В одном месте мне написали и отказали, в другом тоже. Остались две компании, в одной на позицию андоид разработчика, в другой — на джава. Позвонили с компании по поводу андроид и сказали, что я им подхожу и мне делают оффер. Это была победа. Я был очень рад. Но мне так жне позвонили в компании за джава позицию и я метался и не знал что делать, поэтому попросил подождать день с моим ответом, чтоб я смог позвонить узнать за позицию джава разработчика. Позвонив в компанию за джава позицию, я сказал, что мне сделали предложение, но я хочу узнать от вас еще результат. Меня пригласили в офис к ним поговорить и сказали, что результат разговора мне понравится. И они оказались правы, переговорив с ними, мне сделали оффер во второй компании, собственно которую я и выбрал.

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

P.S. нужно стремиться, стремиться, стремиться и никогда не сдаваться!

P.S.S я весь курс не прошел до конца, остановился на 30-м уровне. А когда получил работу, то был на 27. И реально скажу, что начиная с 20-го уровня нужно искать работу и разиваться помимо Java. Освоить хотя бы издалека фреймворк для автоматизации проектов (Ant, Maven, Gradle). Вещь не сложная и очень нужная.

Всем, кому понравилась статья — ставьте "+", чтоб я знал :) Для меня это важно :)


См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!
  • ,

Помогите, нужна мотивация!

Друзья, нужна мотивация!


Я сейчас на 17 уровне и после начала многонитиевости у меня пошли большие проблемы с учебой. Задания стали не только сложные, но и некоторые вообще не понятные для меня. Читаю комментарии, пишут что дальше будет еще сложнее. И как-то становится страшно…

Вот и я хочу узнать рецепт как сэтим справляться)
Может читать больше дополнитльной литературы, может как-то правильно уделять время.
Дело в том, что я занимаюсь по 4 часа в день с понедельника по пятницу. и Иногда читаю Шилдта. Раньше этого хватало, чтобы уверенно идти к завершению курса, но сейчас все поменялось.
Теорию я по смыслу понимаю, а вот когда дело доходит до задач по этой теме — начинаются проблемы. у меня уже «висит» пару десятков задач не решенных и смотря на другие я понимаю, что список пополниться и ими.

подскажите что мне делать)



См. также мои другие статьи:
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Мои опросы:
На каком уровне устроились на первую работу?

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!