Типичные ошибки начинающих программистов

Не так давно пробовал устраиваться на работу тестировщиком Java(мой текущий уровень — 19). Получил следующий фидбек:

К сожалению, есть ошибки в задании. Ниже фидбек от нашего специалиста:

Неявная логика в методах
Отсутствие иерархии, неумение сравнивать объекты по типу
Недостаточное знакомство с базовыми вещами в Java
Исользование громоздких конструкторов вида CLEANER (false, false, true, false, false, false, false)
Спагетти-код там, где можно было упростить логику

Соль в том, что моя программа выполняет все требования. которые были описаны в ТЗ. Для ее описания мне хватило тех знаний Java, которые на данный момент есть. Но не хватило чего-то другого. Как с этим бороться? Может, я делаю что-то не так? Мне стоит что-то перечитать или что-то сделать? Моя проблема, как и многих начинающих программистов, не в том, что я чего-то не знаю, а что не умею обращаться с тем, что знаю. Все задачи решал до этого, серьезных проблем не возникало.

Если кому-то интересен мой код — github.com/vozni4iy/office

Подготовка к онлайн тестированию на Java

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

Программирование – тяжёлая работа или лёгкий способ срубить денег?

Хорошая мотивирующая (или наоборот?) статья.
Выложил, что бы побольше людей ее прочитало. Автор не против. :)


! Статья про enterprise :) Не android.

Как стать Java разработчиком?

1. Нужно ли это Мне?

Видимо, самый важный пункт. В связи с экономическим кризисом, многие люди пытаются найти способ обеспечить себя финансово. А тут появляется “IT”, в котором все получают много денег за то, что могут написать 10 строк кода. К тому же, “программирование – это легко”.

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

В первую очередь, необходимо помнить, что разработчик программного обеспечения – это инженер. Поэтому и требования соответствующие.

Во-вторых нужно понимать, что именно представляет из себя работа программиста? Прежде всего – это перманентное решение проблем. У Вас не будет момента, когда все проблемы будут решены. Это процесс постоянный. Во-вторых – это огромное количество рутинной работы, выполнять которую по 3-4 часа в день без любви к делу, если не невожможно, то уж точно требует огромного усилия над собой.

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

2. Что именно необходимо для того, чтобы называться Java-разработчиком?

Для того, чтобы Вы с гордостью могли назвать Себя Java Developer с больше буквы “J” необходимо иметь, хотя бы, общее понимание следующих вещей:

Синтаксис языка, а именно – Java Core;
Основы Объекто-ориентированного программирования;
Основы баз данных (SQL);
JDBC;
Servlets + JSP;
ORM (например, Hibernate);
Любой популярный Web – Framework (например, Spring);
HTML, CSS, JavaScript;
VCS (GIT, SVM или подобное).
Теперь, пройдёмся по пунктам:


Java Core

Сюда входит знание и понимание иерархии классов в Java, методы класса Object и, конечно Collection Framework. Какие интерфейсы, кто и кого имплементирует и т.д.

Вот эту картинку, java-разработчик должен нарисовать в 3 утра под арт-обстрелом:



В изучении Java Core помогут такие книги, как:

Java 8. Полное руководство (Шилтд)
Философия Java (Эккель)
И конечно же, никуда не деться от

Java Platform API Specification

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

ООП

От новичка не требуется больше, чем знание и понимание трёх принципов ООП (некоторые считают, что их 4, но тут уж как попадёте и это не так существенно).

Умение на практическом примере объяснить каждый из них.

Основы баз данных и SQL

MySQL 5.0 (Виктор Гольцман)

Эта книга легко и доступно объясняет базовые понятия с илюстрацей примеров и пошаговыми инструкциями.

JDBC

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

JDBC 4.1 Specification наиболее полно раскрывает все особенности работы JDBC.

Servlets + JSP

В книгах по Шилтда и Эккель Servlet-ы описываются “вскольз”, для более глубокого понимания, что же это такое необходимо изучить что-то по-серьёзнее.

Java Servlet Specification
и
JavaServer Pages Specification
Эти две спецификации дают исчерпывающее понимание тих технологий.

Как JDBC, так и Servlets используются разработчиками в повседневной работе только в редких случаях. Но они лежат в основе всех популярных Framework-ов и понимание того, как эти framework-и утроены “внутри” поможет Вам избежать очень многих глупых ошибок, которые допускают те, кто изучал только framework-и.

Hibernate

Книга, которая является гордостью мира Java – это Java Persistence with Hibernate.

Многие разработчики, которые используют другие технологии (в частности C#), читают эту книгу для того, чтобы глубже понять что такое ORM и какие проблемы оно решает.

Если Вы умеете созлать отношения one-to-one, one-to-many и many-to-one и написать простой запрос на HQL – ваших знаний хватит для уровня новичка.

Web – Framework (например, Spring)

После того, как освоено всё, что есть выше можно уже замахнуться на Spring. Для начала написать простое CRUD приложение, а потом узнать, что такое Spring Pet Clinic. Теперь Ваших знаний будет достаточно для того, чтобы с пониманием происходящего создавать более-менее пристойное приложение, которое ходит в базу данных, что-то там делает и т.д. и т.п.

Поздравляю, теперь Вы можете написать то, что можно уже и “потрогать” и показать.

Через 5-6 месяцев, Вы захотите удалить этот код и сделать так, чтобы никто не знал, что именно Вы его автор, но пока это хорошо :)

HTML, CSS, JavaScript

Здесь всё просто и не интересно. Обычная вёрстка, которая для back-end разработчика не представляет особго интереса. Это хлеб front-end-щиков.

Но базовое понимание всего этого быть должно.

HTML Academy

HTML Book

Основы JavaScript

Этого Вам хватит с головой.

VCS

Любой проект, в котором работает больше 0 разработчиков не делается без СКВ (системы контроля версий). GIT – наиболее удобная и часто применяемая, конкурирует с ней SVN. Будете знать одну из них – и будет Вам счастье.

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

Важно понимать, что спрос на новичков крайне низкий, несмотря на все попытки показать, что программистов не хватает. Не хватает высококвалифицированных разработчиков с опытом работы от 3-х лет, а новичков с избытком.

Для того, чтобы зацепиться и “войти в IT” Вам поможет адский труд в течение от 6 месяцев до 1 года. Но если это Ваше и Вы готовы для этого вложить такое количество усилий, то дерзайте.

Удачи Вам!

От себя хотел бы добавить, что реально для изучения java core ничего лучше javarush, по-крайней мере в рунете — нет. ИМХО.

Всем удачи еще раз.


Статья: proselyte.net/how-to-become-java-developer/
Автор: proselyte.net/faq/

Задачи окружающего мира решаемые Java

Прим. автора поста: Перевод местами сделан не совсем гладко. В попытке сгладить шероховатости, были сделаны вольные дополнения, которые нисколько не портят смысл статьи. Оригинал статьи вот здесь
Целевая аудитория статьи — люди, которые колеблются пуститься в плавание в мире Java.


Редакция dzone.com побеседовала с 11 профессионалами в бизнесе, плотно работающих большую часть, если не больше, свой карьеры в экосистеме Java. Спросили их о задачах в реальном мире, которые решаются Java.
  • ,

Java и xml

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

Java-конференция для разработчиков

⚠ Интересное мероприятие от наших партнеров

Если вы подписаны на нас больше пары месяцев, вы знаете, что мы любим мотивировать писать код: утром, днем, вечером, ночью, – неважно! Важно то, что сегодня мы ловим исключение!
Если вы находитесь на 20+ уровне, то в пятницу-субботу на этой неделе мы советуем вам погрузиться в мир Java – 22-23 апреля состоится главная в России Java-конференция для разработчиков JPoint 2016: javapoint.ru/

И если Java вам реально интересна, пропускать нельзя: 50 докладов и 1000 единомышленников – конференции открывают второе дыхание для занятий и помогают взглянуть на задачи с нового ракурса.

А если вы еще не достигли высшего мастерства – то в воскресенье 24 апреля рекомендуем посетить студенческий день JPoint 2016 SD. В программе — 2 Java-чемпиона, разработчик JVM, разработчик Hazelcast, обладатель Duke's Choice Award и другие гуру мирового уровня, а также стенды работодателей и стажировки: students.javapoint.ru/
  • ,

level18.lesson10.home07

/* Поиск данных внутри файла
Считать с консоли имя файла
Найти в файле информацию, которая относится к заданному id, и вывести ее на экран в виде, в котором она записана в файле.
Программа запускается с одним параметром: id (int)
Закрыть потоки. Не использовать try-with-resources

В файле данные разделены пробелом и хранятся в следующей последовательности:
id productName price quantity

где id — int
productName — название товара, может содержать пробелы, String
price — цена, double
quantity — количество, int

Информация по каждому товару хранится в отдельной строке
*/

import java.io.*;

public class Solution {
    public static void main(String[] args) throws IOException
    {
        Integer argu = Integer.parseInt(args[0]); // Добавил такой костыль, т.к. в условии сказано что id - int
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        File file1 = new File(reader.readLine());
        BufferedReader readLineFromFile = new BufferedReader(new FileReader(file1));
        reader.close();
        String tmpStrFromFile;
        while ((tmpStrFromFile= readLineFromFile .readLine())!=null){
            if (tmpStrFromFile.charAt(0) == String.valueOf(argu).charAt(0) ){
                System.out.println(tmpStrFromFile);
            }
        }
        readLineFromFile .close();
    }
}

Что не так? Я не вижу просто, где тут несоответствие заданным условиям.

Это удивительно!

Привет всем!

Я хочу написать о том, что программирование это удивительно!

Сегодня на работе, еще не программистом, мне потребовалось обработать файл от 1000 (тысячи!) сотрудников, мне необходимо было собрать по ним по всем список ПО, которое стоит у них на компах.
В экселевском файле были огромные строки с большим количеством ПО, в этих строка были по разному разделены названия программ. И этих строк было 1200 (!).
Когда я впервые увидел файл, я, честно говоря, испугался. Такое количество тупой обработки, копипаст отсюда сюда. ЖЕСТЬ!

И тут руки сами потянулись к IDEA.
Я скопировал 1200 строк из опросника (экселевская колонка со списком программ) в текстовый документ.
Руки сами по себе накидали скрипт (спасибо за такое количество практики на курсе (!)).
Открыть файл
считать из файла
все поместить в TreeSet с новым компаратором, который не учитывает регистр
все вывести в другой файл.

В итоге 230 строчек, которые хоть и не были уникальны совершенно, но это 230 строчек АККУРАТНО уложенного и отсортированного списка программ вместо 1200 строк слипшегося, простите меня, плохо пахнущего вещества.
А так как все отсортировано, то похожие название уже рядом, и мне остается лишь немного доработать список вручную.
И все это за 1600 мс.
Меньше, чем за 2 секунды (!).
А я бы потратил на это перелопачивание руками часа 2 или 3, я бы возненавидел всех тех нерадивых сотрудников за такие списки, проклял бы тот день, когда я сел за баранку этого пылесоса.
А так 2 секунды.
Я ВОСХИЩЕН!

Спасибо всем тем, кто все это придумал. Множество умных людей все это создавали годами. Внутри Java огромные мощности. Фантастика!!!
Спасибо создателям курса за то, что научили этому всему.

Программирование РЕАЛЬНО облегчает жизнь людям.

p.s. буду дальше скрипт допиливать, чтобы сделать еще несколько отчетов по по этому ( а дальше еще будет) опроснику.
p.p.s. хочу для этой цели, если пойдет, освоить Apache Lucene, потому что есть еще одна задачка по поиску этих названий в базе. Поэтому, если кто захочет составить компанию, то с радостью поизучаю эту технологие в компании.
Также было бы здорово поработать с наставником.
  • ,

Вопрос по добавлению элементов в множество Set

Здравствуйте!

Недавно писал программу решения одной задачи в java, в ней в цикле шел перебор возможных решений. Решение представляет собой массив известной длины. Создал множество таких массивов solutions, в которое в цикле добавлял подходящие решения (они были в массиве sol):

solutions.add(sol);

Первое найденное решение добавлялось, а вот последующие уже нет. Первая мысль — решение повторяется, но нет, они все оригинальные… Решения стали добавляется после добавления процедуры clone():

solutions.add(sol.clone());

Почему первый вариант команды не добавлял элементы, а второй — добавлял?
  • ,

Найти IT Санкт-Петербург!

Жаварашовцы из Питера, те кто смог попасть на форум, обращаюсь к вам)))
Давайте MeetUp-немся перед началом event-a.
Узнаем, что, как и каким образом смог или нее смог добиться успеха.
Кто как не мы можем изменить этот мир!

Пожалуй оставлю свой Telegram: @vodka_balalayka. Пишите и будете отвеченными)
Обязательно отписывайтесь в комментариях.

Регистрируйтесь на сайте.

Коротко о сабже:
  • ,

+1 Java developer

Добрый вечер всем ученикам JavaRush, которые проводят уйму времени за решением задач, проклиная ненавистный popup «Программа не прошла тестирование». Придя в очередной раз с работы, решил написать все-таки свою историю, которая уверен до боли похожа на многие другие истории учеников.

На данный момент я уже полтора года работаю Java программистом в одной из киевских компаний. Занимаемся довольно серьезными и интересными вещами.

Начиналось все скорее всего так-же, как и у многих других студентов 5-6 курса, которые начинают уже задумываться что его делать после окончания. Когда приходит осознание того, что та работа, которой занимался со второго курса, особо таких перспектив на которые рассчитываешь, не имеет. И приходит понимание того, что кроме программирования, в универе другие предметы тебя так не цепляли.

JavaRush действительно в тот момент была находкой. С первых же лекций пришло понял то, что мой преподаватель по C++ в универе просто сволочь, что не умеет показать все прелести профессии программиста и процесса собственноручного создания программы. С каждой лекцией это убеждение становилось все больше и больше. И когда за день решаешь такое-же количество задач, которые нужно решить за пол года на лабораторных работах, приходит мысль о том, что КПИ дает очень важное, но к сожалению единственное умение — учиться.

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

Поэтому главным на том этапе было решить как можно больше задач. Когда был на уровне 19-20, ребята сделали реальный проект «Рейтинги». Было безумно приятно увидеть что делают люди на несколько уровней выше тебя, с которыми часто переписываешься и консультируешься на info. И конечно же сразу захотелось войти в ТОП по решенным задачам.

После 27 уровня задачи почти закончились. Выхода было два — идти на реальный проект JavaRush, либо бороться за интернатуру в одной из ИТ компаний Украины. После нескольких собеседований и тестирований, подготовка к которым была целыми днями без выходных, посчастливилось попасть в одну их них. На английский тогда кстати сделал очень большой упор, целыми днями сидел разбирал типичные разговоры на собеседованиях по английски.

И только после интернатуры, когда получил минимальный практический опыт с Git, Spring, Spring MVC, Hibernate, REST, JPA, JSP, MySQL, TomCat, jUnit, Spring Testing, была возможность пытаться на позиции Java Junior Programmer.

Несколько месяцев назад получил рассылку от JavaRush с вопросами. Одним из них был — «Если бы вы знали о JavaRush в самом начале обучения то, что знаете сейчас, сколько бы вы были готовы заплатить?». Ответ был $500, хотя в свое время ушло около $150. И не потому что знаю о примерных зарплатах в этой сфере. Дело скорее в человеческой жадности, если ты заплатил за это не малые деньги, то тебя жаба задавит если весь день ты ничего не учил. А мотивация это по моему самая главная движущая сила в обучении.

Именно поэтому и захотелось написать историю — как мотивацию учиться для всех тех, кто готов экран разбить когда видит очередное мать его «Программа не прошла тестирование».

Спасибо что дочитали до конца!

Автор: https://vk.com/id8743837