WEBYK WEBYK Індивідуальні OnLine уроки з web технологій
+38 093 766 39 11
oleggpann@gmail.com

Растущие боли становления Промежуточным разработчиком

немного освоился на работе. Жизненный цикл развертывания больше не является черной магией. Отзывы о коде короче, чем ваш код. И вы уже отправили кое-что. Надеюсь, у вас есть мотивация, чтобы разветвиться и узнать больше. Но огромное количество ресурсов просто ошеломляет! Один прагматичный подход - придерживаться того, что также поможет вам лучше проводить собеседования. Таким образом, у вас будет чувство прогресса и цель, на которой нужно сосредоточиться. Сосредоточьтесь на этих 5 областях - 1. Низкий уровень / Библиотечный дизайн2. Системный дизайн3. Concurrency4. Шаблоны дизайна5. Общая практика кодирования. Перечисленные мною ресурсы будут насыщенными Java, но вы сможете найти эквиваленты для других языков. Большинство концепций дизайна в любом случае не зависят от языка.

Низкоуровневый / Библиотечный дизайн

Если вы посмотрите на прошлые вопросы об интервью для SDE2 / 3 в Uber, Amazon и др., Вы увидите, по крайней мере, один раунд. спросить такой низкоуровневый дизайн. Я слышал о двух общих достояниях: 1. Создание библиотеки Logger2. Реализуйте Streams Framework в JavaI, особенно как вопрос Logger; Вы можете рассчитывать на диапазон ответов в зависимости от того, насколько квалифицирован собеседник. Остановитесь на минуту и ​​попробуйте. Когда вы закончите, задайте себе следующие вопросы: Вы разложили свою реализацию на разные интерфейсы? Или это один суперкласс со всем? 2. Знаете ли вы о безопасности потоков ваших классов? Является ли ваш Logger синглтон? 3. Ленивый загружен или нетерпеливо загружен? Почему? 4. Это подключаемый? Может ли сторонний разработчик расширить вашу библиотеку альтернативными реализациями? Как насчет сбора мусора? Вы создаете слишком много объектов и вызываете нехватку памяти? Log4j2 делает удивительную работу по документированию своего собственного дизайна. Посмотрите, как только вы решите проблему. Я не смог найти других хороших ресурсов для некачественного дизайна. Если вы найдете что-то полезное, ниже в комментариях.

Системный дизайн

Это больше соответствует тому, о чем обычно думают разработчики, когда кто-то говорит «вопросы дизайна». Вот два общих символа: 1. Разработайте систему сокращения URL2. Разработка системы новостной ленты в Twitter. Отличный способ начать - это учебник для начинающих Донна Мартина. Это долго, но это отличный широкий подход к освоению системного дизайна. По крайней мере, вам должно быть удобно: 1. Async v / s Sync пишет; Очереди сообщений2. Образцы последовательности - особенно возможная последовательность3. Типы баз данных (SQL v / s NoSQL) и шаблоны масштабирования4. Кеширование на разных уровнях5. Разбивка постановки задачи на разные независимые сервисы. Отличный дополнительный ресурс - это Grokking Интервью по проектированию системы. В нем подробно обсуждаются конкретные вопросы проектирования систем, такие как два, о которых я упоминал выше. Это платный ресурс, но отличный. [Источник: https://github.com/donnemartin/system-design-primer]

 

Параллельность

Параллельность - это еще одна тема, которая отличает младших инженеров от более старших. Удивительно трудно понять, что нужно. «Параллелизм Java на практике» должен быть прочитан. Вы уйдете с гораздо лучшим пониманием - 1. Модель памяти Java2. Бывает до отношений. Ложные пробуждения звонки4. Volatile v / s Synchronized5. Безопасность потоков, ожидание, уведомление и многое другое. Если вы пишете код на другом языке, найдите эквивалентную книгу. Отладка условий гонки без тщательного понимания концепций будет очень болезненной. Многопоточность Java и параллелизм от Educative являются отличным последующим ресурсом. Прочитайте концепции; затем посмотрите на пару решенных вопросов на собеседовании, Это будет намного проще, чем пытаться с ними справиться.

Шаблоны проектирования

Скорее всего, вы не будете подвергаться поп-опросам по этим вопросам. Но вы увидите, как они появляются, когда вы боретесь с различными проблемами проектирования. Как только вы прочитаете их, вы начнете видеть их повсюду. Несколько примеров - 1. Адаптер - Arrays.asList () 2. Decorator - Collections.synchronizedCollection (новый ArrayList < > ()) 3. Прототип - Immutables.copyOf () 4. Команда - запускаемый интерфейс5. Стратегия - java.util.Comparator # compare () StackOver имеет огромный список шаблонов, найденных здесь в основных библиотеках Java. Я попытался прочитать легендарную книгу GoF - Шаблоны проектирования: элементы многоразового объектно-ориентированного программного обеспечения, но, признаюсь, не смог Я пробираюсь через это. Вместо этого я попробовал Head First Design Patterns. Это совсем не похоже на техническую книгу, но на самом деле она отлично читается. Разные истории о странных пристрастиях увязывают и делают отличную работу по выявлению тонкостей подобных шаблонов. Я закончил это на выходных и много смеялся над книгой. Через пару месяцев я попробую GoF еще раз. Обсуждения в нем, вероятно, больше связаны с опытом.

Общее кодирование

Книги, Книги, Книги «Эффективная Java». Это отличный способ привыкнуть к идиомам и лучшим практикам Java. Это разбито на 90 независимых тем - каждая пара страниц длиной. Таким образом, вы можете прочитать разделы, относящиеся к тому, над чем вы работаете. «Чистый код» - последний, который я обещаю! - еще одно отличное чтение и очень удобно, когда вы начинаете просматривать чужой код. Это поможет вам определить запах кода в одно мгновение. Как и «Эффективная Java», только пролистайте те разделы, которые, по вашему мнению, актуальны в данный момент.

Освоение вашей среды IDE

Отлично, это не значит, что тест «делает вас лучше при опросе». Но на самом деле, свободное владение вашей IDE делает программирование чертовски веселее! Я использую IntelliJ, и у него есть отличный плагин «Key Promoter X». Каждый раз, когда вы используете мышь вместо сочетания клавиш, она кричит на вас. Вы должны почувствовать себя профессионалом (и очень беспокоиться) через пару недель. Если вы используете другую IDE, попробуйте найти эквивалент там. Или используйте IntelliJ, это здорово.42 Советы и хитрости IntelliJ Idea - это конференция на Youtube. Это интересный способ познакомиться с наиболее часто используемыми мощными функциями. Это большой список - и у него есть книги! Вместо того, чтобы торопиться, чтобы закончить дела, подумайте о том, чтобы немного улучшаться каждый день, пройдя через некоторые из них. Удачи! Да, и, кстати, я предполагаю, что большинство читателей имеют опыт работы от 0 до 4 лет. Если вы еще не начали работать, придерживайтесь LeetCoding. Вернемся к этому позже. Концепции дизайна не имеют тенденцию внедряться, пока вы не поработаете с парой систем в реальном мире.

Приложение

LinksLog4J2 ArchitectureDonne Martin &s xx; Интервью по дизайну с помощью EducurJava Concurrency Course by EducativeStack Overflow Глоссарий шаблонов проектирования в Java Библиотеки Советы и рекомендации по использованию IntelliJ IDEBooks. Мне нравится выбирать по одной хорошей книге в каждой области фундамента и следить за тем, чтобы каждая книга была ортогональной по отношению к остальным. Эффективная Java - учебник по Java , Очень легко читается. Чистый код - Хорошие практические правила для кодированияJava Concurrency на практике - Основополагающая книга для понимания параллелизмаHead First Design Patterns - Забавный, эффективный способ мышления об объектно-ориентированном DesignDesigning Data Intensive Applications - Самая высоко оцененная техническая книга, которую я когда-либо видел , Отлично подходит для системного дизайна, но huuuuge. Лучше читать немного за раз,

Теги

Задания по программированию Интервью Разработка программного обеспечения Советы по разработке шаблонов Кодирование Последние технические истории

Комментарии

Продолжить обсуждение
Источник: https://hackernoon.com/growing-pains-becoming-an-intermediate-developer-y03ee38yw

Якщо у вас виникли питання, вбо ви бажаєте записатися на індивідуальний урок, замовити статтю (інструкцію) або придбати відеоурок, пишіть нам на:
скайп: olegg.pann
telegram, viber - +380937663911
додавайтесь у телеграм-канал: t.me/webyk
email: oleggpann@gmail.com
ми у fb: www.facebook.com/webprograming24
Обов`язково оперативно відповімо на усі запитіння


Поділіться в соцмережах



Подобные статьи:


facebook
×
Підришіться на цікаві пости.
Підписатись