Здесь собраны популярные вопросы с технических интервью и, разумеется, ответы на них. Темы затронуты самые разные:
• структуры данных;
• популярные алгоритмы и их эффективность;
• общие концепции программирования.
В репозитории много ссылок на полезные текстовые материалы и видеолекции.
https://github.com/kdn251/interviews
• структуры данных;
• популярные алгоритмы и их эффективность;
• общие концепции программирования.
В репозитории много ссылок на полезные текстовые материалы и видеолекции.
https://github.com/kdn251/interviews
GitHub
GitHub - kdn251/interviews: Everything you need to know to get the job.
Everything you need to know to get the job. Contribute to kdn251/interviews development by creating an account on GitHub.
Коллекция популярных алгоритмов, реализованных на Java.
Не все из этих алгоритмов оптимальны для всех кейсов и нужно осознанно подходить к выбору. Иногда можно найти в стандартной библиотеке Java примеры получше. Однако для демонстрационных и образовательных целей этот репозиторий подходит замечательно.
https://github.com/TheAlgorithms/Java
Не все из этих алгоритмов оптимальны для всех кейсов и нужно осознанно подходить к выбору. Иногда можно найти в стандартной библиотеке Java примеры получше. Однако для демонстрационных и образовательных целей этот репозиторий подходит замечательно.
https://github.com/TheAlgorithms/Java
GitHub
GitHub - TheAlgorithms/Java: All Algorithms implemented in Java
All Algorithms implemented in Java. Contribute to TheAlgorithms/Java development by creating an account on GitHub.
Очень интересный ресурс с набором заданий по разным языкам и в том числе по Java. Его можно использовать как для проведения собеседований, так и для личного развития. Можно прокачивать джунов ))
Можем устроить челендж кто больше наберет балов. Можете постить ссылки на ваши результаты и наиболее интересные вопросы.
https://edabit.com/challenges
Можем устроить челендж кто больше наберет балов. Можете постить ссылки на ваши результаты и наиболее интересные вопросы.
https://edabit.com/challenges
edabit
Learn to Code with 10,000+ Interactive Challenges
Learn to code with fun, bite-sized challenges. Earn XP, unlock achievements and level up. It's like Duolingo for learning to code.
Сегодня я хочу поделиться с вами самым лучшим на мой взгляд ресурсом по паттернам проектирования и рефакторингу. Все кому я рекомендовал этот ресурс хорошо о нем отзывались. Материал дается простым языком и с хорошими примерами.
Если у вас есть альтернативные любимые ресурсы по темам паттернов проектирования и рефакторингу, то пишите в комментариях.
https://refactoring.guru/ru
Если у вас есть альтернативные любимые ресурсы по темам паттернов проектирования и рефакторингу, то пишите в комментариях.
https://refactoring.guru/ru
refactoring.guru
Рефакторинг и Паттерны проектирования
Рефакторинг — это контролируемый процесс улучшения вашего кода, без написания новой функциональности. Паттерны проектирования описывают типичные способы решения часто встречающихся проблем при проектировании программ.
Мне очень нравятся идеи функционального и реактивного программирования. Расстраивает то что некоторые разработчики пытаются противопоставлять ФП и ООП. В Java благодаря улучшениям начиная с версии 8 появилось много конструкций позволяющих гармонично их совместить.
Java не чисто объектно-ориентированный язык так как в нем не все является объектом (например наличие примитивных типов данных...). При этом он и не чисто функциональный (например позволяет менять состояние...).
Довольно интересные идеи по этой теме есть в блоге Роберта Мартина (написал легендарную книгу "Чистый код"). Рекомендую добавить его блог в закладки )) Прикладываю также перевод его статьи на хабре.
Согласны ли вы с его доводами или у вас иная точка зрения?
https://blog.cleancoder.com/uncle-bob/2014/11/24/FPvsOO.html
https://habr.com/en/post/474518/
Java не чисто объектно-ориентированный язык так как в нем не все является объектом (например наличие примитивных типов данных...). При этом он и не чисто функциональный (например позволяет менять состояние...).
Довольно интересные идеи по этой теме есть в блоге Роберта Мартина (написал легендарную книгу "Чистый код"). Рекомендую добавить его блог в закладки )) Прикладываю также перевод его статьи на хабре.
Согласны ли вы с его доводами или у вас иная точка зрения?
https://blog.cleancoder.com/uncle-bob/2014/11/24/FPvsOO.html
https://habr.com/en/post/474518/
Хабр
ФП vs ООП
Не так давно на хабре появилось несколько постов противопоставляющих функциональный и объектный подход, породивших в комментариях бурное обсуждение того, что воо...
«Почему Kotlin хуже, чем Java?»
Недавно наткнулся на интересную статью. Сейчас достаточно много материала рекламирующего Kotlin, но большая редкость встретить материал рассказывающий о минусах.
Помню время когда толпы разработчиков "бегали" со Scala говоря о нем как об "очередном убийце" Java, но этого не случилось. Scala хороший язык и я ничего против него не имею. Он занял свою нишу, но сильно потеснить Java не смог.
И вот на сцене "очередной убийца" Java )) Так его преподносят некоторые разработчики. Возможно это те кто раньше пытались "убить Scala-ой" Java ))
Я считаю, что в Kotlin есть много интересных фишек и как язык он мне нравится. Перечисление фишек есть в любом "рекламном буклете" про него. Думаю, что он тоже со временем займет свою нишу и страсти вокруг него поугаснут. С большой долей вероятности он станет доминировать в Android разработке, но займет ли доминирующую позицию на беке...время покажет ))
Как вы относитесь к Kotlin и что думаете о статье? Поделитесь мнением в комментариях.
Рекомендую ознакомиться со статьей:
https://habr.com/en/company/funcorp/blog/558412/
Недавно наткнулся на интересную статью. Сейчас достаточно много материала рекламирующего Kotlin, но большая редкость встретить материал рассказывающий о минусах.
Помню время когда толпы разработчиков "бегали" со Scala говоря о нем как об "очередном убийце" Java, но этого не случилось. Scala хороший язык и я ничего против него не имею. Он занял свою нишу, но сильно потеснить Java не смог.
И вот на сцене "очередной убийца" Java )) Так его преподносят некоторые разработчики. Возможно это те кто раньше пытались "убить Scala-ой" Java ))
Я считаю, что в Kotlin есть много интересных фишек и как язык он мне нравится. Перечисление фишек есть в любом "рекламном буклете" про него. Думаю, что он тоже со временем займет свою нишу и страсти вокруг него поугаснут. С большой долей вероятности он станет доминировать в Android разработке, но займет ли доминирующую позицию на беке...время покажет ))
Как вы относитесь к Kotlin и что думаете о статье? Поделитесь мнением в комментариях.
Рекомендую ознакомиться со статьей:
https://habr.com/en/company/funcorp/blog/558412/
Хабр
«Почему Kotlin хуже, чем Java?»
Такой провокационный вопрос задал реддитор nenemen в сабреддите Java:«Я думаю о том, чтобы свой следующий проект сделать на Kotlin + Spring Boot, но мощь всенаро...
IntelliJ IDEA 2021.2
Хочу поздравить всех любителей IntelliJ IDEA с выходом новой версии!!!
Лично меня в прошлой версии раздражал баг в Run Configuration на маке.
При выборе конфигурации название иногда не обновлялось, но конфигурация переключалась.
Сегодня после обновления бага ушла ))
Из интересных фишек (из списка изменений) лично для меня в этом релизе:
1. появилась поддержка gRPC
2. появилась поддержка Protocol Buffers
3. работа с Docker по SSH
4. Test Data plugin для генерации тестовых данных для тестов по Cmd+N
Очень хочется все попробовать )) Впечатление напишу позже как распробую ))
Какие фичи вы считаете интересными в новом релизе?
https://www.jetbrains.com/idea/whatsnew/
Хочу поздравить всех любителей IntelliJ IDEA с выходом новой версии!!!
Лично меня в прошлой версии раздражал баг в Run Configuration на маке.
При выборе конфигурации название иногда не обновлялось, но конфигурация переключалась.
Сегодня после обновления бага ушла ))
Из интересных фишек (из списка изменений) лично для меня в этом релизе:
1. появилась поддержка gRPC
2. появилась поддержка Protocol Buffers
3. работа с Docker по SSH
4. Test Data plugin для генерации тестовых данных для тестов по Cmd+N
Очень хочется все попробовать )) Впечатление напишу позже как распробую ))
Какие фичи вы считаете интересными в новом релизе?
https://www.jetbrains.com/idea/whatsnew/
JetBrains
What's New in IntelliJ IDEA - 2024.3
IntelliJ IDEA 2024.3 introduces a range of powerful new features to elevate your development experience. It offers a representation of your code’s logical structure, streamlines Kubernetes application debugging, provides cluster-wide Kubernetes log access…
C10K Problem
Сегодня я поделюсь с Вами ссылкой на очень интересную статью про проблему C10k. Думаю многие слышали об этой проблеме и возможно сталкивались. Статья интересна тем, что в ней даются советы и рекомендации для Java разработчиков.
В статье даются также рекомендации по тюнингу операционной системы и пример использования bpftrace для диагностики проблемы.
Лично мне в этой статье особенно понравился разбор использования DirectByteBuffer и доп материал по ссылке "...об утечках памяти в ByteBuffer".
https://proglib.io/p/principy-obrabotki-tysyach-soedineniy-v-java-2020-04-04
Оригинал с моего любимого ресурса
https://dzone.com/articles/thousands-of-socket-connections-in-java-practical
Сегодня я поделюсь с Вами ссылкой на очень интересную статью про проблему C10k. Думаю многие слышали об этой проблеме и возможно сталкивались. Статья интересна тем, что в ней даются советы и рекомендации для Java разработчиков.
В статье даются также рекомендации по тюнингу операционной системы и пример использования bpftrace для диагностики проблемы.
Лично мне в этой статье особенно понравился разбор использования DirectByteBuffer и доп материал по ссылке "...об утечках памяти в ByteBuffer".
https://proglib.io/p/principy-obrabotki-tysyach-soedineniy-v-java-2020-04-04
Оригинал с моего любимого ресурса
https://dzone.com/articles/thousands-of-socket-connections-in-java-practical
Библиотека программиста
Принципы обработки тысяч соединений в Java
Общие принципы создания софта на Java, способного обрабатывать тысячи коннектов: кэширование TCP-соединений, работа с потоками и буферами, пропускная способность и специальные утилиты.
Java Tricks
Начинаю серию публикаций в которых поделюсь лайфхаками. Как оказалось не все мои знакомые о них знали. Возможно подобная подборка окажется интересной. Буду рад обратной связи от вас в комментариях.
Начать хочу с инициализации коллекций.
Пример до 9 java:
Пример после 9 java:
Возникает вопрос можно ли до 9 java "сделать все в 1 строку" например если это поле класса?
Да ))
Начинаю серию публикаций в которых поделюсь лайфхаками. Как оказалось не все мои знакомые о них знали. Возможно подобная подборка окажется интересной. Буду рад обратной связи от вас в комментариях.
Начать хочу с инициализации коллекций.
Пример до 9 java:
Map<String, String> someMap = new HashMap<>();
someMap.put("someKey_1","someValue_1");
someMap.put("someKey_2","someValue_2");
Пример после 9 java:
Map<String, String> someMap = Map.of("someKey_1","someValue_1","someKey_2","someValue_2");
Возникает вопрос можно ли до 9 java "сделать все в 1 строку" например если это поле класса?
Да ))
Map<String, String> someMap = new HashMap<String, String>(){{ put("someKey_1","someValue_1"); put("someKey_2","someValue_2");
}};
Являются ли следующие четыре предложения эквивалентными?
number += 1; number = number + 1; number++; ++number;
number += 1; number = number + 1; number++; ++number;
Anonymous Poll
17%
Да
49%
Нет
3%
Не знаю ((
25%
Вопрос лучше переформулировать!
6%
В чем подвох? ))
Инициализация двойной скобкой (double brace initialisation).
В одном из прошлых постов я писал про достаточно интересную фичу Java - инициализация двойной скобкой (double brace initialisation). Мне нравится эта фича и в новых релизах Java у нее есть альтернативы. Ее часто используют в тестах для более компактной записи.
В одном из комментариев на Stackoverflow (я иногда отвечаю на вопросы со Stackoverflow для "поддержания формы") я привел пример с использованием этой фичи. Изначально вопрос был про ArrayList. Под моим ответом мне дали ссылку на комментарий от Lukas Eder, который пишет о себе: "I am the founder and CEO at Data Geekery, the company behind jOOQ.". Я не проверял его аккаунт, но похоже, что это не фейк.
Он написал интересную статью, которая заставила меня по новому взглянуть на эту конструкцию. Рекомендую почитать.
https://blog.jooq.org/dont-be-clever-the-double-curly-braces-anti-pattern/
В одном из прошлых постов я писал про достаточно интересную фичу Java - инициализация двойной скобкой (double brace initialisation). Мне нравится эта фича и в новых релизах Java у нее есть альтернативы. Ее часто используют в тестах для более компактной записи.
В одном из комментариев на Stackoverflow (я иногда отвечаю на вопросы со Stackoverflow для "поддержания формы") я привел пример с использованием этой фичи. Изначально вопрос был про ArrayList. Под моим ответом мне дали ссылку на комментарий от Lukas Eder, который пишет о себе: "I am the founder and CEO at Data Geekery, the company behind jOOQ.". Я не проверял его аккаунт, но похоже, что это не фейк.
Он написал интересную статью, которая заставила меня по новому взглянуть на эту конструкцию. Рекомендую почитать.
https://blog.jooq.org/dont-be-clever-the-double-curly-braces-anti-pattern/
Java, SQL and jOOQ.
Don’t be “Clever”: The Double Curly Braces Anti Pattern
From time to time, I find someone using the double curly braces anti pattern (also called double brace initialisation) in the wild. This time on Stack Overflow: Map source = new HashMap(){{ put(…
Вышла Java 17
Поздравляю всех в выходом Java 17!!!
В этот релиз попало более 2700 закрытых задач и 14 JEP'ов.
А еще появился новый сайт https://dev.java
На сколько я понял это сайт Oracle.
Подробнее: https://habr.com/ru/post/577924/
Поздравляю всех в выходом Java 17!!!
В этот релиз попало более 2700 закрытых задач и 14 JEP'ов.
А еще появился новый сайт https://dev.java
На сколько я понял это сайт Oracle.
Подробнее: https://habr.com/ru/post/577924/
Хабр
Вышла Java 17
Вышла общедоступная версия Java 17. В этот релиз попало более 2700 закрытых задач и 14 JEP'ов. Изменения API можно посмотреть по этой ссылке. Ссылки на скачивание: Oracle...
Oracle JDK 17 No-Fee Terms and Conditions License
Oracle JDK 17 опять становится бесплатной для использования. Согласно jdk-faqs:
The NFTC is the license for Oracle JDK 17 and later releases. It permits free use for all users – even commercial and production use. There is no click through license so automating downloads of it has never been easier.
https://www.oracle.com/java/technologies/javase/jdk-faqs.html
Oracle JDK 17 опять становится бесплатной для использования. Согласно jdk-faqs:
The NFTC is the license for Oracle JDK 17 and later releases. It permits free use for all users – even commercial and production use. There is no click through license so automating downloads of it has never been easier.
https://www.oracle.com/java/technologies/javase/jdk-faqs.html
Oracle
Oracle JDK License General FAQs
This page contains FAQs regarding the Oracle JDK License and links to other FAQs.
Всегда ли нужен Hibernate?
Часто перед командами встает вопрос чем пользоваться для работы с базой и ответ не всегда очевиден. Про Hibernate написано много "рекламных" статей в которых не освящаются "подводные камни". Прочитав такие статьи и смотря на простые примеры у начинающих разработчиков может создаться ощущение что он просто прекрасен.
Рекомендую к прочтению эту замечательную статью в которой собраны наиболее интересные "подводные камни".
https://habr.com/ru/company/otus/blog/576966/
Часто перед командами встает вопрос чем пользоваться для работы с базой и ответ не всегда очевиден. Про Hibernate написано много "рекламных" статей в которых не освящаются "подводные камни". Прочитав такие статьи и смотря на простые примеры у начинающих разработчиков может создаться ощущение что он просто прекрасен.
Рекомендую к прочтению эту замечательную статью в которой собраны наиболее интересные "подводные камни".
https://habr.com/ru/company/otus/blog/576966/
Хабр
Подумайте дважды, нужен ли вам Hibernate
Я часто видел, как в проекте начинали использовать Hibernate, не особо задумываясь о том, действительно ли он нужен. А через какое-то время, когда сервис разрастался, то появлялся вопрос — не было ли...
Актуален ли еще Solid?
Как это ни странно у Solid есть не только поклонники, но и противники. Роберт Мартин написал статью в ответ на критику Solid.
Я большой фанат Solid и полностью с ним согласен.
Habr опубликовал перевод его статьи.
https://habr.com/ru/post/581912/
Как это ни странно у Solid есть не только поклонники, но и противники. Роберт Мартин написал статью в ответ на критику Solid.
Я большой фанат Solid и полностью с ним согласен.
Habr опубликовал перевод его статьи.
https://habr.com/ru/post/581912/
Хабр
Актуален ли еще Solid?
Недавно я получил письмо: В течение многих лет проверка понимания принципов SOLID было стандартной частью нашей процедуры приема на работу. Предполагалось, что кандидаты хорошо знакомы с этими...
Уроки абстракции: чему FP может научить ООП
Мне эта статья нравится тем, что там автор сравнивает решения одной задачи с использованием функционального и ООП подходов. При этом дается не сразу готовые варианты, а раскрывается ход мыслей и используемые паттерны.
Мне также понравилась сама идея "доведение абстракции до предела" и постановка вопроса "является ли преждевременная абстракция злом, как и преждевременная оптимизация?".
Суть в том, что с точки зрения оптимизации для решения с числами "оптимизированный вариант" был бы сведен к (n * (n + 1) / 2), но с точки зрения абстракции и как следствия универсальности, такое решение не подходило бы как минимум для всех типов данных.
Статья длинная, но прочитать однозначно стоит ))
https://habr.com/ru/post/587440/
Мне эта статья нравится тем, что там автор сравнивает решения одной задачи с использованием функционального и ООП подходов. При этом дается не сразу готовые варианты, а раскрывается ход мыслей и используемые паттерны.
Мне также понравилась сама идея "доведение абстракции до предела" и постановка вопроса "является ли преждевременная абстракция злом, как и преждевременная оптимизация?".
Суть в том, что с точки зрения оптимизации для решения с числами "оптимизированный вариант" был бы сведен к (n * (n + 1) / 2), но с точки зрения абстракции и как следствия универсальности, такое решение не подходило бы как минимум для всех типов данных.
Статья длинная, но прочитать однозначно стоит ))
https://habr.com/ru/post/587440/
Хабр
Уроки абстракции: чему FP может научить ООП
Абстракция - один из величайших инструментов воображения, когда-либо изобретенных людьми для представления, расшифровки и изображения мира. - Джерри Зальц Я хочу приблизиться к истине настолько...
The Java Version Almanac
Недавно наткнулся на замечательный ресурс созданный легендарными Java чемпионами Марком Хоффманом и Кей С. Хорстманном (Marc R. Hoffmann and Cay S. Horstmann).
Этот ресурс примечателен тем, что там собраны все ключевые полезные ссылки из мира Java (ссылка на API, спецификацию языка, спецификацию виртуальной машины и ссылки для скачивания всех версий).
Главной кил фичей я считаю их инструмент сравнения изменений между версиями Java!!!
Это просто сказка!!!
Сохраняйте ссылку в надежном месте и пользуйтесь!!! Приятного погружения!!! )))
https://javaalmanac.io
Недавно наткнулся на замечательный ресурс созданный легендарными Java чемпионами Марком Хоффманом и Кей С. Хорстманном (Marc R. Hoffmann and Cay S. Horstmann).
Этот ресурс примечателен тем, что там собраны все ключевые полезные ссылки из мира Java (ссылка на API, спецификацию языка, спецификацию виртуальной машины и ссылки для скачивания всех версий).
Главной кил фичей я считаю их инструмент сравнения изменений между версиями Java!!!
Это просто сказка!!!
Сохраняйте ссылку в надежном месте и пользуйтесь!!! Приятного погружения!!! )))
https://javaalmanac.io
Java Troubleshooting Guide
Как оказалось не все Java разработчики знают о существовании такого замечательного руководства как Java Troubleshooting Guide от Oracle.
Я считаю, что каждый Java разработчик должен его прочитать. Особенно разделы "Troubleshoot Memory Leaks" и "Troubleshoot Performance Issues Using JFR".
По Java 17
https://docs.oracle.com/en/java/javase/17/troubleshoot/
По Java 11
https://docs.oracle.com/en/java/javase/11/troubleshoot/
По Java 8
https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/toc.html
Как оказалось не все Java разработчики знают о существовании такого замечательного руководства как Java Troubleshooting Guide от Oracle.
Я считаю, что каждый Java разработчик должен его прочитать. Особенно разделы "Troubleshoot Memory Leaks" и "Troubleshoot Performance Issues Using JFR".
По Java 17
https://docs.oracle.com/en/java/javase/17/troubleshoot/
По Java 11
https://docs.oracle.com/en/java/javase/11/troubleshoot/
По Java 8
https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/toc.html
Oracle Help Center
Troubleshooting Guide
Troubleshooting tips and techniques for issues that might occur with Java Client applications created on the Java Platform, Standard Edition (Java SE) and Java HotSpot VM.
К сожалению пришлось срочно отключить комментарии. Нахлынули боты и начали спамить в комментариях. После автоматизации очистки включу обратно.