• Как выполнять тестовые задания для java- джуниоров/стажеров, чтобы попасть на собеседование

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

    У каждой компании своя методика поиска таких кандидатов. Мы, на сегодняшний день, придерживаемся следующей: даем небольшое тестовое задание (около часа работы, для опытного разработчика), для выполнения которого достаточно знаний java-core и просим выложить его на гитхаб. По времени выполнения не ограничиваем. Затем, качественно выполнивших задание соискателей приглашаем на собеседование.

    image

    Задание обычно содержит реализацию CRUD методов в файл через консольное меню с одной-двумя сущностями плюс валидацию некоторых полей. В качестве примера приведу классическую ситуацию с пользователем, которому нужно реализовать валидацию email и телефона, по заданному шаблону и к этому иметь возможность ввести от 1 до 3 телефонов. Откликов приходит очень много, а мест очень мало — соответственно отбор достаточно жесткий.
    Читать дальше →
  • О стримах и таблицах в Kafka и Stream Processing, часть 1

    • Перевод
    * Michael G. Noll — активный контрибьютор в Open Source проекты, в том числе в Apache Kafka и Apache Storm.

    Статья будет полезна в первую очередь тем, кто только знакомится с Apache Kafka и/или потоковой обработкой [Stream Processing].


    В этой статье, возможно, в первой из мини-серии, я хочу объяснить концепции Стримов [Streams] и Таблиц [Tables] в потоковой обработке и, в частности, в Apache Kafka. Надеюсь, у вас появится лучшее теоретическое представление и идеи, которые помогут вам решать ваши текущие и будущие задачи лучше и/или быстрее.

    Содержание:

    * Мотивация
    * Стримы и Таблицы простым языком
    * Иллюстрированные примеры
    * Стримы и Таблицы в Kafka простым языком
    * Пристальный взгляд на Kafka Streams, KSQL и аналоги в Scala
    * Таблицы стоят на плечах гигантов (на стримах)
    * Turning the Database Inside-Out
    * Заключение
    Читать дальше →
    • +19
    • 25,8k
    • 4
  • Шпаргалки Java программиста 9: Java SE — Шпаргалка для собеседований и повторений

    • Tutorial
    Данная статья в первую очередь предназначена для подготовки к собеседованиям на позицию Java разработчика (на самом деле, это шпаргалка, которую я писал для себя в течении многих лет, и повторяю при каждом новом поиске работы).

    Предполагается. что вы знакомы с многими функциями из Java SE, поэтому в основном информация дается кратко. Конечно, можно использовать эту статью и просто для обучения основам Java SE платформы (но в этом случае, после чтения статьи вам скорее всего придется обратиться к другим источникам).

    image

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

    Внимание: я не буду касаться вопросов по самому языку Java (вроде для чего нужно слово final или чем overriding отличается от overloading), это потребует отдельной статьи, это вопросы именно по Java SE (6-9) платформе.
    Читать дальше →
  • Шпаргалка Java программиста 3. Коллекции в Java (стандартные, guava, apache, trove, gs-collections и другие)

    • Tutorial
    Сегодня я хотел бы поговорить о коллекциях в Java. Это тема встречается практически на любом техническом интервью Java разработчика, однако далеко не все разработчики в совершенстве освоили все коллекции даже стандартной библиотеки, не говоря уже о всех библиотеках с альтернативными реализациями коллекций, таких как guava, apache, trove и ряд других. Давайте посмотрим какие вообще коллекции можно найти в мире Java и какие методы работы с ними существуют.



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


    Читать дальше →
  • 10 самых распространенных ошибок при работе с платформой Spring. Часть 1

    • Перевод
    Всем привет. Сегодня делимся первой частью статьи, перевод которой подготовлен специально для студентов курса «Разработчик на Spring Framework». Начнём!





    Spring — пожалуй, одна из самых популярных платформ разработки на языке Java. Это мощный, но довольно сложный в освоении инструмент. Его базовые концепции довольно легко понять и усвоить, но для того чтобы стать опытным разработчиком на Spring, потребуются время и определенные усилия.

    В этой статье мы рассмотрим некоторые из самых распространенных ошибок, совершаемых при работе в Spring и связанных, в частности, с разработкой веб-приложений и использованием платформы Spring Boot. Как отмечается на веб-сайте Spring Boot, в Spring Boot используется стандартизованный подход к созданию готовых к эксплуатации приложений, и данная статья будет придерживаться этого подхода. В ней будет дан ряд рекомендаций, которые можно эффективно использовать при разработке стандартных веб-приложений на базе Spring Boot.
    Читать дальше →
    • +11
    • 8,7k
    • 8
  • [ВОЗМОЖНО] СОРМ расшифровывает HTTPS трафик к Mail.ru и ICQ



      На конференции Chaos Constructions 2019 Леонид darkk Евдокимов показал любопытный доклад про случайно обнаруженные в открытом доступе панели управления СОРМ. Доклад можно посмотреть здесь: darkk.net.ru/2019/cc В двух словах: панели со статистикой работы программно-аппаратных комплексов СОРМ от МФИ Софт торчали наружу в интернет и всем было пофиг.

      В какой-то момент времени наружу торчали сырые дампы перехваченного трафика, которые успел проиндексировать поисковик shodan.io. Вот один из таких дампов: archive.li/RG9Lj
      Там есть MAC-адреса, IMEI телефонов и разная другая личная информация. Но самое интересное в этих дампах, что туда каким-то образом попал трафик к некоторым хостам на 443 порт (HTTPS) в открытом виде! То есть видны полностью GET запросы, а это может значить, что СОРМ умеет расшифровывать HTTPS. Попробуем подумать как такое возможно.
      Читать дальше →
    • 10 самых распространенных ошибок при работе с платформой Spring. Часть 2

      • Перевод
      Салют, хабровчане. Вот и подоспел перевод второй части статьи, подготовленной специально для студентов курса «Разработчик на Spring Framework». Первую часть можно прочитать тут.



      Spring — пожалуй, одна из самых популярных платформ разработки на языке Java. Это мощный, но довольно сложный в освоении инструмент. Его базовые концепции довольно легко понять и усвоить, но для того чтобы стать опытным разработчиком на Spring, потребуются время и определенные усилия.

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

      На тот случай, если вы не очень хорошо знакомы с платформой Spring Boot, но хотите поэкспериментировать с примерами, приведенными в статье, я создал GitHub-репозиторий с дополнительными материалами для этой статьи. Если в какой-то момент вы немного запутались, читая эту статью, я бы посоветовал вам создать клон этого репозитория и поэкспериментировать с кодом на своем компьютере.

      Читать дальше →
      • +15
      • 6,8k
      • 2
    • Новое в Hadoop: познакомимся с различными форматами файлов в Hadoop

      • Перевод

      Всем привет! Публикуем перевод статьи, подготовленный для студентов новой группы курса «Data Engineer». Если интересно узнать, как построить эффективную и масштабируемую систему обработки данных с минимальными затратами, посмотрите запись мастер-класса Егора Матешука!



      Несколько недель назад я написал о Hadoop статью, где осветил различные его
      части и разобрался в том, какую роль он играет в области data engineering. В этой статье я
      дам краткое описание различных файловых форматов в Hadoop. Это быстрая и легкая
      тема. Если вы пытаетесь понять, как работает Hadoop и какое место он занимает в работе
      Data Engineer, ознакомьтесь с моей статье о Hadoop здесь.

      Читать дальше →
    • Как работают поисковые системы

        Мы разбирали старые письма и наткнулись на статью, которую писал Илья Сегалович iseg для журнала «Мир Internet» в далёком 2002 году. В ней он сравнивает интернет и поисковые системы с чудесами света, размышляет о поисковых технологиях и вспоминает их историю. Несмотря на загруженность по работе, Илья написал статью в рекордные сроки и даже снабдил достаточно подробным словарём терминов, который особенно интересно читать в наши дни. Нам не удалось найти электронную версию журнала со статьей, поэтому сегодня мы публикуем её в нашем блоге, первым автором которого, к слову, был Илья.



        Читать дальше →
      • Зарабатываем на солнечной энергии или пассивный доход в 25% годовых, практический опыт. Часть 1


        КДВП © Diana, made by Siuzanna

        Постараюсь поделиться полученным опытом (почти) самостоятельной постройки и эксплуатации ряда своих домашних солнечных станций (дСЭС) под Зеленый тариф (ЗТ) в Украине и что из этого вышло.

        Написание статьи планировалось весной 2019, но в связи с рядом законодательных инициатив, она неоднократно была отложена. Теперь все законы (очень надеюсь) окончательно приняты, и можно продолжать, ну или начинать. Для постройки и получения высокого тарифа в этом году у Вас почти не осталось времени. И Вы уже должны стоять с заявлением на поднятие мощности до 30кВт. Все остальное вы успеете. Конечно, если хотите на этом заработать, о чем далее.
        Читать дальше →
      • Как дебажить переменные окружения в Linux

          Часто бывает так, что приходишь на машину и обнаруживаешь какой-то скрипт, запущенный под системным пользователем неделю назад. Кто его запустил? Где искать этот run.php? Или добавляешь запись в /etc/crontab, а скрипт там падает с ошибкой «command not found». Почему? И что делать? 

          У меня есть ответы на эти вопросы.

          Читать дальше →
        • Компьютерное зрение видит эмоции, пульс, дыхание и ложь — но как построить на этом стартап. Разговор с Neurodata Lab



            Наши отношения с компьютерным зрением не были такими шумными, пока оно не научилось творить чудеса с человеческими лицами. Алгоритмы подменяют людей на фото и видео, меняют возраст, расу и пол. Это и главное интернет-развлечение последних лет, и источник тревог. Сегодня приложения штурмуют чарты, завтра протестующие пилят столбы с камерами, распознающими лица. И, кажется, мы только в самом начале пути. Того, что компьютер может считать с нашего лица, будет все больше и больше.

            В начале месяца мы посетили офис Neurodata Lab. Основное направление для компании — распознавание человеческих эмоций. Мы постарались выяснить как это делается и зачем нужно.

            Neurodata Lab получила на «Моём круге» среднюю оценку 4,6 и среднюю рекомендацию 95% от своих сотрудников, которые выше всего оценили такие критерии, как профессиональный рост, интересные задачи, хорошие отношения с коллегами и то, что компания делает мир лучше.
            Читать дальше →
          • Spring AOP. Маленький вопросик с собеседования

            Довелось мне тут на днях побывать на очередном собеседовании. И задали мне там вот такой вот вопрос. Что на самом деле выполнится (с точки зрения транзакций), если вызвать method1()?

            public class MyServiceImpl {
              
              @Transactional
              public void method1() {
                //do something
                method2();
              }
            
              @Transactional (propagation=Propagation.REQUIRES_NEW)
              public void method2() {
                //do something
              }
            }
            

            Ну, мы же все умные, документацию читаем или, по крайней мере, видео выступлений Евгения Борисова смотрим. Соответственно и правильный* ответ знаем (правильный* — это такой, который от нас ожидает услышать тот, кто спрашивает). И звучать он должен примерно так.

            «В связи с тем, что для поддержки транзакций через аннотации используется Spring AOP, в момент вызова method1() на самом деле вызывается метод прокси объекта. Создается новая транзакция и далее происходит вызов method1() класса MyServiceImpl. А когда из method1() вызовем method2(), обращения к прокси нет, вызывается уже сразу метод нашего класса и, соответственно, никаких новых транзакций создаваться не будет».

            Но знаете, как это бывает, вроде и ответ правильный уже давно знаешь. И применяешь это знание регулярно. А вдруг раз… и неожиданно задумаешься: «Подождите-ка, ведь если мы используем Spring AOP, то там могут создаваться прокси и через JDK, а могут и с CGLIB; а еще возможно, что CTW или LTW подключили. И что такой ответ всегда будет верен?».

            Ну что ж: интересно? Надо проверить.
            Читать дальше →
          • Apache Kafka – мой конспект

              Это мой конспект, в котором коротко и по сути затрону такие понятия Kafka как:

              — Тема (Topic)
              — Подписчики (consumer)
              — Издатель (producer)
              — Группа (group), раздел (partition)
              — Потоки (streams)

              Kafka — основное


              При изучении Kafka возникали вопросы, ответы на которые мне приходилось эксперементально получать на примерах, вот это и изложено в этом конспекте. Как стартовать и с чего начать я дам одну из ссылок ниже в материалах.

              Apache Kafka – диспетчер сообщений на Java платформе. В Kafka есть тема сообщения в которую издатели пишут сообщения и есть подписчики в темах, которые читают эти сообщения, все сообщения в процессе диспетчеризации пишутся на диск и не зависит от потребителей.
              Читать дальше →
            • Коллекции в Java: о чём многие забывают

              • Tutorial
              Из опыта code-review и ответов на StackOverflow набралось немало моментов, касающихся Java Collections API, которые мне казались очевидными, но другие разработчики о них почему-то не знали или знали, но не чувствовали уверенности их применять. В этой статье я собираю в общую кучу всё, что накопилось.

              Содержание:


              1. List.subList
              2. PriorityQueue
              3. EnumSet и EnumMap
              4. Set.add(E) и Set.remove(E) возвращают булево значение
              5. Map.put(K, V), Map.remove(K), List.set(idx, E), List.remove(idx) возвращают предыдущий элемент
              6. Map.keySet() и Map.values()
              7. Arrays.asList может быть ключом
              8. Collections.max
              9. LinkedList, Stack, Vector, Hashtable
              Читать дальше →
            • Простое объяснение принципов SOLID

              • Перевод


              Принципы SOLID — это стандарт программирования, который все разработчики должны хорошо понимать, чтобы избегать создания плохой архитектуры. Этот стандарт широко используется в ООП. Если применять его правильно, он делает код более расширяемым, логичным и читабельным. Когда разработчик создаёт приложение, руководствуясь плохой архитектурой, код получается негибким, даже небольшие изменения в нём могут привести к багам. Поэтому нужно следовать принципам SOLID.

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

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

              Я буду объяснять SOLID самым простым способом, так что новичкам легче будет разобраться. Будем рассматривать принципы один за другим.
              Читать дальше →
            • Как защитить активы на бирже: 6 стратегий защиты инвестиций



                Изображение: Unsplash

                Ключ к долгосрочному успеху при биржевых инвестициях в сохранении каптиала. Одно из главных правил знаменитого инвестора Уоррена Баффета звучит так – никогда не теряйте деньги.

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

                Редакция портала Investopedia опубликовала материал с описанием шести популярных стратегий защиты активов при торговле на бирже. Мы подготовили его адаптированную версию.
                Читать дальше →
              • Онлайн сервис «Анализ скорости при ДТП по видеозаписи»


                  В тестовой версии заработал онлайн сервис, который показывает текущую скорость интересующих нас объектов (автомобилей и других средств передвижения) по записям с видеокамер на перекрестках.
                  Читать дальше →
                • Firefox(уже исправлено) и Chrome позволяют использовать заголовок Alt-Svc для сканирования портов внутренней сети

                    UPDATE: в актуальном Firefox 68 уязвимость уже исправлена(спасибо Dukat).


                    Тришта Тивари(Trishita Tiwari) и Ари Трахтенберг(Ari Trachtenberg) из Бостонского университета опубликовали работу, показывающую новый метод атаки для сканирования портов на хостах внутренней сети пользователя или на локальном хосте(CVE-2019-11728). Атака осуществляется с помощью HTTP заголовка Alt-Svc, введённого в RFC-7838 HTTP Alternate Services(утверждён в 2016 году).


                    HTTP заголовок Alt-Svc позволяет перенаправить запрос на новый хост и порт. Это используется для балансировки нагрузки.

                    Читать дальше →
                    • +12
                    • 4,9k
                    • 3
                  • Технические детали взлома банка Capital One на AWS

                    • Перевод


                    19 июля 2019 года банк Capital One получил сообщение, которого боится каждая современная компания — произошла утечка данных. Она затронула более 106 миллионов человек. 140 000 номеров социального страхования США, один миллион номеров социального страхования Канады. 80 000 банковских счетов. Неприятно, согласитесь?

                    К сожалению, взлом произошёл совсем не 19 июля. Как выяснилось, Пейдж Томпсон, она же Erratic, совершила его между 22 марта и 23 марта 2019 года. То есть почти четыре месяца назад. На самом деле, только с помощью внешних консультантов Capital One сумела узнать, что нечто произошло.
                    Читать дальше →