• ,

Прошу объяснить какой закон математики здесь работает.

Уважаемые друзья, в одной из задач приведенным ниже кодом мы определяем пересеклись ли траектории объектов, вод выдержка из условия:
А еще нам нужно будет определять попал шарик в кирпич или в подставку.
Это будем делать так:
В этом же классе, создадим специальный метод: boolean isIntersec(BaseObject o)
Он будет определять — «пересеклись» объекты или нет. Если пересеклись — возвращать true, если нет — false.
Т.к. объекты мы условно считаем кругами, то предлагаю такую формулу взаимодействия
Если центр круга одного объекта попал в круг другого, то будем считать, что они столкнулись.
Или еще проще:
дистанция_между_объектами <= max (радиус_первого_объекта, радиус_второго_объекта)


код:
public boolean isIntersec(BaseObject o){
    double xDistance = this.getX() - o.getX();
    double yDistance = this.getY() - o.getY();
    double distance = Math.sqrt((xDistance*xDistance)+(yDistance*yDistance));
    return distance < Math.max(this.getRadius(), o.getRadius()) ;
}


1. Какой математический принцип(То что используется теорема Пифагора я и сам вижу, как она позволяет сделать вывод о дистанции между точками на плоскости?) используется в данном коде и почему мы считаем что код верно определит пересекались ли объекты.

2. Почему в данной задаче, как и в предыдущих, при наличии геттеров и сеттеров, валидатор пропускает только когда обращаешся непосредственно к переменным, как правильно все же? А главное почему?
  • ,

Можно ли где-то найти тестовое задание JavaRush?

Всем доброго времени суток.В общем то вся суть вопроса уже сказана в заголовке топика. Хочу хотя бы взглянуть, что нужно будет сделать, чтобы попасть на стажировку в JR, но пока возможности апнуть подписку не имеется. Возможно эти задания есть в свободном доступе? Заранее спасибо за ответы.

level19.lesson10.bonus01 Не проходит тестирование, помогите!

Перечитал кучу топиков, сделал решение которое работает, не могу понять в чем проблема! Никак не хочет проходить тестирование, воистину, самое сложно задание которое было до этого!!! Ребята, в чем проблема, почему не хочет принимать?:(((
Условие уже написал «исправленное», так как оригинальное условие содержит ошибку.
package com.javarush.test.level19.lesson10.bonus01;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

/* Отслеживаем изменения
Считать в консоли 2 имени файла - file1, file2.
Файлы содержат строки, file2 является обновленной версией file1, часть строк совпадают.
Нужно создать объединенную версию строк, записать их в список lines
Операции ADDED и REMOVED не могут идти подряд, они всегда разделены SAME
Пример:
оригинальный   редактированный    общий
file1:         file2:             результат:(lines)

строка1        строка1            SAME строка1
cтрока2                           REMOVED строка2
строка3        строка3            SAME строка3
строка4                           REMOVED строка4
строка5        строка5            SAME строка5
               строка0            ADDED строка0
строка1        строка1            SAME строка1
строка2                           REMOVED строка2
строка3        строка3            SAME строка3
               строка5            ADDED строка5
строка4        строка4            SAME строка4
строка5                           REMOVED строка5
*/

public class Solution {
    public static List<LineItem> lines = new ArrayList<LineItem>();

    public static void main(String[] args) throws Exception {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        String fileName1 = bufferedReader.readLine();
        String fileName2 = bufferedReader.readLine();

        bufferedReader.close();
        BufferedReader fileReader1 = new BufferedReader(new FileReader(fileName1));
        BufferedReader fileReader2 = new BufferedReader(new FileReader(fileName2));
        while (fileReader1.ready() || fileReader2.ready()) {
            if (fileReader1.ready() && fileReader2.ready()) {
                String s1 = fileReader1.readLine();
                String s2 = fileReader2.readLine();
                if (s1.equals(s2)) {
                    lines.add(new LineItem(Type.SAME, s1));
                } else if ("".equals(s1)) {
                    lines.add(new LineItem(Type.ADDED, s2));
                } else if ("".equals(s2)) {
                    lines.add(new LineItem(Type.REMOVED, s1));
                }
            } else if (!fileReader1.ready() && fileReader2.ready()) {
                String s2 = fileReader2.readLine();
                lines.add(new LineItem(Type.ADDED, s2));
            } else if (fileReader1.ready() && !fileReader2.ready()) {
                String s1 = fileReader1.readLine();
                lines.add(new LineItem(Type.REMOVED, s1));
            }
        }
        fileReader1.close();
        fileReader2.close();
    }

    public static enum Type {
        ADDED,        //добавлена новая строка
        REMOVED,      //удалена строка
        SAME          //без изменений
    }

    public static class LineItem {
        public Type type;
        public String line;

        public LineItem(Type type, String line) {
            this.type = type;
            this.line = line;
        }
    }
}
  • ,

Тестовое задание в одну из крупных IT компаний Беларуси

Всем привет! Как и обещала в комментарии к прошлой статье, выкладываю тестовое задание по J2SE и JavaEE которое мне прислали для зачисления на стажировку. Для его выполнения дается 30 минут. Правда, сохранить успела 12 из 14 вопросов.

— означает, что может быть несколько вариантов ответа
* означает, что может быть только один вариант ответа

  1. Вопрос
  2. Integer a = new Integer(2);
    Integer b = new Integer(2);
    
    What code will provide output: "false"? Check all that apply.
    
    Варианты ответов:
    - System.out.println(a.intValue() == b.intValue());
    - System.out.println(a.compareTo(b));
    - System.out.println(a.equals(b));
    - System.out.println(a == b);
  3. Вопрос
  4. Which HTTP methods are NOT considered idempotent (multiple execution of query
     will give the same result)? (Choose all that apply)
    
    Варианты ответов:
    - GET
    - POST
    - HEAD
    - PUT
  5. Вопрос
  6. How should servlet developers handle the HttpServlet's service() method when
     extending HttpServlet? (Choose all that apply).
    
    Варианты ответов:
    - They should override the service() method in most cases.
    - They should call the service() method from doGet() or doPost().
    - They should call the service() method from the init() method.
    - They should override at least one doXXX() method (such as doPost()).
  7. Вопрос
  8. Which methods are used by a servlet to handle form data from a client?
     (Choose all that apply)
    
    Варианты ответов:
    - HttpServlet.doHead()
    - HttpServlet.doPost()
    - HttpServlet.doForm()
    - ServletRequest.doGet()
    - ServletRequest.doPost()
    - ServletRequest.doForm()
  9. Вопрос
  10. Given the Product Bean:
    
    public class Product{
    public Product(String title, int size){
    this.title = title;
    this.size = size;
    }
    String title;
    int size;
    }
    
    How would servlet code from a service method (e.g. doPost()) pass a Product bean
     info to the jsp?
    
    Варианты ответов:
    * response.setAttribute("product", new Product("Shirt", t));</li>
    * response.setParameter("product", new Product("Shirt", t));</li>
    * request.setAttribute("product", new Product("Shirt", t));</li>
    * request.setParameter("product", new Product("Shirt", t));</li>
    
  11. Вопрос
  12. You have to create your own type of exception, named UserOperationExсeption.
     And you need to make it a checked exсepetion. What is the appropriate signature in
     this case? Check all that apply.
    
    Варианты ответов:
    - public class UserOperationExсeption extends RuntimeExсeption{...}
    - public class UserOperationExсeption extends Exсeption{...}
    - public class UserOperationExсeption extends IOExсeption{...}
    - public class UserOperationExсeption extends extends Error{...}
    
  13. Вопрос
  14. Given following classes hierarchy:
    
    public class Building {...}
    public class Warehouse extends Building {...}
    public class Shop extends Building {...}
    public class SportsShop extends Shop {...}
    
    and code:
    
    ...
    Building b1 = new Building();
    Building b2 = new Warehouse();
    ...
    
    What code will cause a ClassCastException to be thrown? Check all that apply.
    
    Варианты ответов:
    - Warehouse w1 = b2;
    - Warehouse w2 = (Warehouse) b2;
    - Warehouse w3 = new SportsShop();
    - Shop s1 = (Shop)b1;
    - Shop s2 = new SportsShop();
  15. Вопрос
  16. Given the method:
    
    public int shift(int value, int offset)
    {
    value += offset;
    return value;
    }
    
    What will be the output of following code:
    
    int v = 2;
    shift(v,5);
    System.out.println(v);
    
    Варианты ответов:
    * 2
    * 5
    * 7
    * 3
    
  17. Вопрос
  18. Given:
    
    public class Product {
    public Product(String title, int size){
    this.title = title;
    this.size = size;
    }
    String title;
    int size;
    
    public String toString()
    {
    return title + ":" + size;
    }
    }
    ...
    Set products = new HashSet();
    products.add(new Product("Hat", 3));
    products.add(new Product("Hat", 3));
    System.out.println(products);
    
    What items will be in the programm output, considering that Product class inherits
     equals() and hashCode() methods from Object?
    
    Варианты ответов:
    * Hat
    * [Hat:3, Hat:3]
    * [Hat:3]
    * RuntimeException about duplicate elements
  19. Вопрос
  20. What code is valid for creating immutable list?
    
    Варианты ответов:
    * List immutableItems = Collections.unmodifiableList(new ArrayList());
    immutableItems.add("i1");
    immutableItems.add("i2");
    
    * List items = new ArrayList();
    items.add("i1);
    items.add("i2");
    List immutableItems = Collections.unmodifiableList(items);
    
    * List items = new ArrayList();
    items.add("i1);
    items.add("i2");
    final List immutableItems = items;
    
    * List can't be immutable
  21. Вопрос
  22. What is complexity (Big 0 notation) of ArrayList contains() method?
    
    Варианты ответов:
    * 0(n^2)
    * 0(log(n))
    * 0(n)
    * 0(1)
    
  23. Вопрос
  24. Given and array of size n, suppose you need to write a program that
     calculates the sum of every second element of this array. What will be the
     complexity (Big 0 notation) of most optimal implementation of this algorithm?
    
    Варианты ответов:
    * 0(n^2)
    * 0(n/2)
    * 0(n)
    * 0(1)

Предлагаю обсудить какие варианты ответов правильные.
  • ,

Собеседование. Нужно ваше мнение

Всем привет! Вот и я уже дошла до 32 уровня JavaRush и решила закинуть удочку и поймать свою удачу на просторах вакансий Junior Java Developer.
Мне немного улыбнулась удача и мне прислали тестовое задание. Но перед ссылкой на его выполнение написали такое вот сообщение:
Добрый день! Спасибо, что заполнили нашу анкету!

Как и договорились, мы внесли Ваш профиль в список приглашенных к тестированию. Вот основные условия написания онлайн-теста:

Когда Вы начнете тест, Ваша попытка будет списана. Будьте внимательны и приступайте к тесту, когда будете готовы.
Время на написание теста: 30 минут.
Вопросы по Java приводятся на английском языке.
Структура теста: 10 вопросов J2SE, 4 вопроса J2EE. Рассчитайте Ваше время с учетом структуры теста.
По итогам анализа ответов теста, если Вы справитесь с 70-80% вопросов, мы пришлем Вам ссылку на следующее задание.
Мы просим Вас быть максимально внимательными, соблюдать регламент и быть предельно честными — для теста Вам необходимы только Ваши знания.

На JavaRush мы изучали JavaCore, а тут вопросы будут по J2SE + J2EE. Я не стала пока переходить по ссылке, т.к хочу понять стоит ли сейчас туда лезть с моими познаниями или стоит что-то дополнительно изучить.

Ребята, помогите понять.Кто знает J2SE + J2EE это тоже самое, что мы изучали или это что-то гораздо тяжелее? Если второе, то киньте ссылки на какие-нибудь источники, чтобы можно было дополнительно изучить J2SE и J2EE.

Здесь можно посмотреть тестовое задание, которое мне давали.

Приглашаем на конференцию JavaDay 2017 в Минске 3 июня!

В программе доклады и мастер-классы от супер-звёзд индустрии: Егора Бугаенко, Philipp Krenn, Александра Тарасова и многих других!

Отдавая должное популярности Java, на конференции речь пойдёт не только о ней, но и о практиках, инструментах, подходах и даже философии. Spring Boot, JWT, мониторинг контейнеров, правильная интеграция между микросервисами, Continuous Delivery – всё то, без чего Java Enterprise не может существовать в 2017 году.

Билеты и детали – на javaday.by/. #javadayby

level21.lesson16.big01 задание 15 : Метод getWinner не принимается

Ипподром(15)
В классе Hippodrome сделаем два метода:
public Horse getWinner() и public void printWinner()
Метод getWinner должен возвращать лошадь пробежавшую самую большую дистанцию.
Метод printWinner выводит на экран имя победителя в виде: Winner is !
Пример:
Winner is Lucky!

Валидатор выдает: Метод getWinner должен возвращать лошадь пробежавшую наибольшую дистанцию.

До этого задания все принято нормально. Я всего лишь добавил в Ippodrom 2 метода:

public Horse getWinner()
    {
        Horse winner=horses.get(0);
        for (int i=1;i<horses.size();i++)
        {
            if (winner.getDistance()<=horses.get(i).getDistance())
                winner=horses.get(i);
        }
        return winner;
    }

    public void printWinner()
    {
        System.out.println("Winner is "+ getWinner().getName()+"!");
    }


Ну и в самом main() добавил вызов: game.printWinner();

Все выдает правильно, проверено раз 20 уже. Пробовал getWinner() делать через for-each, и обращаться к списку через game.getHorses вместо напрямую horses, менял знаки равенства. Куда копать то?


package com.javarush.task.task21.task2113;

import java.util.ArrayList;
import java.util.List;

public class Hippodrome {

    private ArrayList<Horse> horses=new ArrayList<>();
    public static Hippodrome game;

    public Hippodrome (ArrayList<Horse> horses) {this.horses=horses;}

    public List<Horse> getHorses(){return horses;}

    public static void main(String[] args) throws InterruptedException {
        game = new Hippodrome(new ArrayList<Horse>());
        game.getHorses().add(new Horse("Burenka",3,0));
        game.getHorses().add(new Horse("Mustang",3,0));
        game.getHorses().add(new Horse("Przhevalsk",3,0));
        game.run();
        game.printWinner();

    }

    public Horse getWinner()
    {
        Horse winner=horses.get(0);
        for (int i=1;i<horses.size();i++)
        {
            if (winner.getDistance()<=horses.get(i).getDistance())
                winner=horses.get(i);
        }
        return winner;
    }

    public void printWinner()
    {
        System.out.println("Winner is "+ getWinner().getName()+"!");
    }

    public void run()  {
        for (int i=1; i<=100;i++)
        {
            move();
            print();
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    public void move() {
        for (Horse h: horses)  {    h.move();  }
    }
    public void print() {
        for (Horse h: horses) { h.print(); }

        for (int i=1;i<=10;i++) System.out.println();

    }

}

История трудоустройства

Всем привет!

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

И для начала расскажу как все начиналось. В 2008 году я поступил в вуз, на физтех. На первом курсе у нас был С++ и скажу честно, первые полгода я не особо понимал программирование. Но уже во втором полугодии я вник в азы и на экзамене в конце года получил 95 баллов из 100. И на этом вроде как история программирования закончилась. Но до тех пор, пока я в 2013 не вернулся в Россию…

Это был обычный день и я как и все листал ленту в ВК и нечаянно наткнулся на рекламу JavaRush. Что-то типа – лиши мозг девствености, научись программировать. Меня это действительно заинтересовало и я начал учить Java. Так как от С++ не особо отличалось, я быстро прошел первые 9 уровней и летом 2013 попытался устроиться хотя бы стажером. Откликов на мое резюме было и вовсе мало, если не сказать что их не было. Тогда я сам нашел вакансию стажера(тестировщика) в Яндексе и получил тестовое задание(проверить через Junit тесты, что данные 3 точки на плоскости представляют из себя вершины прямоугольного треугольника). Успешно его пройдя мне позвонили и… разъяснили, что (далее цитирую) – Нам нужно потратить на вас полгода, чтобы вы стали специалистом, так что до свидания.

Скажу честно, я сильно разочаровался в этой компании и забросил всю эту идею на полгода. Через следующие полгода я возобновил поиски, но они ничего не давали. Наверно потому что в моем резюме стояло 2 поля – С++ и Java. И так продолжалось до 2016. Время от времени я что-то учил, решал задачи на JavaRush и кстати купил подписку в том же году(под новый год по акции 2013) и дошел до 15 уровня. Еще я нашел курс по андроиду – как сделать свою первую игру(так как я владею английским языком было несложно найти такие курсы). Но все было бестолку, до марта 2016…

Посмотрев требования к вакансиям Java Junior я понял, что на одной Java не выйдешь и решил, что надо учить что-то еще. И я начал учить JavaScript, HTML, CSS, SQL. В этот период я работал репетитором, так что у меня было несколько часов по утрам и по вечерам. Которые я тратил на изучение языков, чтение книг(Путь программиста, чистый код, идеальный программист, Шилдт – Java 8 полное руководство, Что нас на самом деле мотивирует, Сила воли). И говоря простым языком, я начал усердно трудиться. Каждый день я решал задачи на JavaRush, постил их на GitHub, проходил по главе из каждой книги по другим языкам и по главе из других книг.

После прохождения курса Первая мобильная игра, я написал свою игру Арканоид на андроид, потом появилась идея написать вторую игру. Позже я решил написать крестики нолики на Java для консоли, далее переписал ее на JavaScript и конечно же написал для андроид. Но всего этого было мало, очень мало…

Тогда я понял, что устроиться Java Junior слишком сложно для меня и я решил полностью уйти в Андроид. В начале я хотел уйти в геймдев. Но неожиданно понял, что почти нет вакансий разработчика игр на андроид на Java. Изучил LibGDX, но и это не помогло…

Тогда я решил писать приложения на Андроид. В этом мне помогла книга HeadFirst Android и курс StartAndroid на YouTube(и еще 100500 англоязычных сайтов). Так как я ярый фанат Маяковского, посмотрел в Google Play какие есть приложения с его стихами. И не найдя ничего достойного, решил что могу сам создать достойное приложение. Именно с этого и началась белая дорога. Точнее, выкладывая на GitHub я начал получать приглашения на собеседования, но их не проходил, да и было их всего пару штук. Тогда я решил писать тестовые задания разных компаний и публиковать их на GitHub, также в мой собственный блог(johnnyblog.ru). Написав около 12 приложений(тестовых заданий и своих) я начал получать приглашения на собеседования, но их опять же было очень мало, по сравнению с отказами(за полгода мою анкету просмотрели около 500 раз)…

Я заметил, что в большинстве требований к кандидатам есть строка – наличие своих приложений на Google Play и как бы вы думали? Как только я опубликовал в магазине свои 2 приложения, предложений по работе стало гораздо больше. В общем я сходил на собеседования меньше 10 раз. На каждом собеседовании меня спрашивали из того, чего я не знал. Но зачастую дело и не доходило до приглашения на собеседование, отказывали просто узнав что я не являюсь гражданином РФ…

Итак, вроде как дела шли хорошо – я ходил на собеседования, получал отказы все чаще и больше (зачастую просто игнорировали и ничего не отвечали). Я планировал найти работу до конца лета. Но, увы, так и не нашел. И тогда я полностью разочаровался во всем и решил забить на поиски. И знаете, однажды мне на почту пришло письмо. Да да, именно то письмо, которое и стало началом моей истории. Я получил приглашение на собеседование. И знаете, если раньше я ходил на собеседования с мыслью, что – вот опять будут спрашивать какие-то каверзные вопросы и не возьмут, ну и Бог с ними, особо и не хочу я у них работать — то на этот раз я очень хотел, чтоб меня взяли на работу…

Итак, в назначенный день я пришел на собеседование. Если кому интересно, то спрашивали про многопоточность, коллекции, базовые методы класса Object. В большинстве своем я давал правильные ответы на вопросы и мне пообещали позвонить через день. И это был именно тот случай, когда действительно работодатель обещал и позвонил. Сказали, что я их устраиваю как кандидат. И вот через месяц после собеседования я вышел на работу на испытательный срок в 3 месяца. И на днях этот срок закончился. Скажу сразу, что я усердно трудился, зачастую перерабатывал, бывало что и выходил в выходной день. Но все это не зря. Труды дали свои плоды и теперь я работаю 5/2 (с 11.00 – 20.00) в офисе на Кутузовской, напротив Moscow City и пишу приложение Сбербанк Онлайн на компьютере iMac 27”, с 8 ядрами и 24 гигами озу.

upd. незамеченная история, дата публикации изменена для вывода в топ.

Техническая конференция по тестированию Гейзенбаг 2017 Piter

4 июня 2017 года в Санкт-Петербурге состоится Гейзенбаг 2017 Piter, техническая конференция по тестированию, которая соберет более 300 специалистов в области тестирования (не только тестировщиков, но и разработчиков, тимлидов и CTO). Также есть онлайн-трансляция всех докладов в прямом эфире для тех, у кого нет возможности приехать или кому просто не хочется покидать свой уютный диван.

Всего будет 17 докладов от известных экспертов в области тестирования:

– 6 докладов по подходам и правильным паттернам в тестировании (Николай Алименков – Паттерны проектирования в автоматизации тестирования, Игорь Хрол – Тестирование в мире данных);

– 3 доклада по тестированию web-проектов (Алексей Лавренюк – Нагрузочное тестирование web-сервиса, Илья Коробицын – Пишем Selenium тесты на JS для тестирования Angular: плюсы, минусы, подводные камни);

– Несколько докладов по фреймворкам, облегчающим тестирование (Артем Ерошенко – Allure 2, Dan Cuellar – Appium: The Language of Automation);

– Пара докладов «вне категорий» (Claudio Criscione – Security testing at a scale).

Почти все доклады так или иначе связаны с автоматизацией тестирования. Воды, докладов про agile, scrum и управление командами тестировщиков не будет – только хардкор!

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

Регистрация на конференцию уже открыта. Чтобы получить специальные условия от Software testing, введите кодовое слово JavaRushPromo.
Подробности смотрите на сайте конференции: goo.gl/4sXCQ0

Моя статистика обучения - печаль?

Повествование будет сумбурным.

Я перешел на платную подписку в октябре или ноябре 2016 года. Сейчас я на 28-м уровне.
с 11-го по 20-й уровень у меня было много куража и азарта, воодушевления. Бывали минуты отчаяния, они сменялись восторгом «Я могу!».

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

Восторга практически нет. Может это и есть «пустыня отчаяния»? Пробовал рассылать резюме… и результаты заставили задать себе вопрос, как люди на 27-м уровне устраиваются на работу? На 18-м уровне составил план обучения в Microsoft Project. Получилось, что у меня на уровень уходит не менее 10 рабочих дней(самое быстрое 1 день, 20-й и 25-й не вложился. Рефакторинг отложил. И две бонусные 20-го не решил). Какой надо обладать отдачей, чтобы 40 уровней за 3 месяца пройти? Слышал такие истории.

В районе 26-го уровня стало интересно, а сколько реально времени я трачу на обучение в день. Начал засекать таймером. Засекал 9 дней… их хватило, чтобы всё стало на свои места… получилось в среднем 134 минуты в день, или по медиане 112 минут в день. То есть иметь в запасе 8 рабочих часов не обязательно… любой может работать и заниматься, за исключением редких случаев. Тот же, кто может удержать своё внимание 8 часов над учёбой… будет быстро прогрессировать. Это наверное те, кто за 3 месяца весь курс проходят.

И теперь ПЕЧАЛЬ. Ютюб статистику не даёт, пришлось считать ручками. Сколько я на него времени потратил за день. Посчитал за 10-е мая 2017-го… получилось 4 часа 26 минут 16 секунд + другое втыкание (из них минут 40 лекции по джаве:) ), которое не относится к учёбе. Итого 6 часов времени в трубу и менее 2-х часов на обучение… да уж, откуда взяться восторгу от себя…

Может мои цифры наведут кого-то на мысли? А можно просто насрать в комментариях.

P.S. Работа за компьютером — не для всех? Или это часть процесса обучения?

С уважением, Артём.