• ,

Учеба на JavaRush. Поиск работы и прохождение собеседований. Часть 2.

Добрый день! В этой части я расскажу вам о составлении резюме, портфолио, поиске работы, прохождении собеседований, а так же выполнении тестовых заданий. Первая часть

Составление резюме и портфолио. Как всем вам известно, для поиска работы нужно составлять резюме. Существует множество разных статей и советов как это делать, я же расскажу только свое мнение.

Резюме желательно составлять на английском языке и желательно формы CV (на некоторых вакансиях только такую и требуют). Вот ссылка на сайт, где это можно сделать онлайн, но не обязательно придерживаться такой формы как там). Если же будете делать на этом сайте, то убирайте логотипы с резюме (они идут как колонтитулы в ворде).

На первой странице нужно указать всю самую важную информацию, что бы hr заинтересовался вами. Я там писал знание языков, прохождение курса JavaRush и кратко что изучал, прохождение стажировки и какие там были технологии. Далее, поскольку я шел на Android Developer, то писал все технологии и библиотеки какие знал по данной платформе. Далее можно написать про паттерны проектирования, системы контроля версий, системы сборки (maven, gradle), а так же в каких средах разработки вы работали.

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

Поиск работы. Начал я отправлять резюме где-то в средине весны 2017. На удивление вакансий на Android Developer даже в Киеве совсем немного, если посмотреть на самых популярных сайтах поиска работы, то их наберется до 30 штук, больше половины которых хотят уровень middle/senior. Но все же они постоянно обновляются и за весь период поиска думаю до сотни резюме я отправил.

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

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

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

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

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

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

На втором собеседовании было очень круто. Спрашивал меня их тим лидер целый час по теории и все, что я не знал он мне объяснял. Я остался очень доволен, хоть меня туда и не взяли.

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

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

Если говорить о том, что нужно железно знать на позицию Android Developer (думаю на позицию Java Developer так же), то это ОПП. Там сразу будет понятно или ты только заучил как называются основные принципы или же ты знаешь их саму суть и можешь нормально использовать на практике. Так же нужно знать жизненные циклы активити, фрагментов. Про паттерн Observable часто спрашивают, так как он довольно часто используется и даже лежит в основе библиотеки RxJava. А вообще о чем будут спрашивать не угадаешь – могут больше уклон делать на java, а могут на android. Я, например, очень старался сделать хорошим свое портфолио, а меня о моем одном проекте спросили только на последнем собеседовании.

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

В предыдущей статье я писал, что у меня друг работает android разработчиком. Вот недавно ему предложили работу в другой компании и так как он уходил, то на его место искали нового кандидата. Он порекомендовал провести со мной собеседование. Изначально мне прислали сделать тестовое задание и дали время 1 неделю с учетом того, что чем быстрее сделаешь, тем лучше. Сделал я задание за 4 дня (друг мне как честный человек в этом деле не помогал). После этого меня пригласили на собеседование.

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

Собеседование было по больше мене с уклоном на практическую сторону и по времени длилось час. После мне сказали, что дадут ответ в течении двух недель, так как хотят еще посмотреть других кандидатов. И вот недавно мне пришло письмо, что я приглашен на испытательный срок на позицию Android Developer – радости было не отнять:)

Если вы изучаете андроид, все задания на startandroid и других ресурсах уже прошли, то что я могу вам посоветовать попрактиковать. Есть хороший сайт. Там генерируете список json обьектов. Создайте андроид приложение в котором вы будете загружать этот список (в отдельном потоке или в сервисе или с помощью сторонних либ) и отображать его потом пользователю. Базу данных используйте либо SqlLite либо сторонние либы Realm. В списке пусть будет краткая информация, а при нажатии на эл списка – открывается фрагмент с полной информацией. Еще для усложнения задания сделайте адаптацию на планшеты – разделение на два экрана в повороте в горизонтальное положение, в вертикальном же один экран (для этого используйте фрагменты). Так же можно добавить navigation drawer и там какие-то пункты настроек (смена языка приложения, фона, шрифта и т.д.). Что-то похожее было в моем тестовом задании.

В общем, что хочется сказать всем, кому еще предстоит поиск работы – напишите хорошее резюме, так как это самое первое, что вас характеризирует. Выбирайте стажировки и вакансии только в хороших компаниях (по крайней мере в тех, кто не поленился нормально составить описание вакансии). Учите теорию – хоть иногда и кажется, что это только для собеседований, а на практике гугл всегда под рукой, но по своему опыту скажу, что со знанием всей основной теории программировать становится легче. После каждого собеседования изучайте все вопросы, на которые не знали ответа и в которых были не очень уверены – так уже после 4-5 собеседования вы будете знать ответы на все самые распространенные вопросы. Хотелось еще сказать, что бы не волновались, но это все естественно и этого не отнять – мы же не машины :)

Ссылка на все вопросы, что у меня были на собеседованиях (ответы ищете в гугле) – вопросы на собеседованиях
Всем спасибо за внимание и всем удачного трудоустройства!

Тестовое задание: Управление пользователями (Junior Java Developer, стажёр)

Необходимо разработать веб-приложение, позволяющее управлять пользователями
(создавать, редактировать, просматривать список и детали, удалять)

Функциональные требования к веб-приложению:
  1. Наличие RESTful интерфейса;
  2. Поддержка операций управления (создания, чтения, редактирования и удаления) пользователями.
    Пользователь определяется следующими значениями:
    • Имя
    • Фамилия
    • Дата рождения
    • Логин
    • Пароль
    • Поле ввода “О себе”
    • Адрес проживания
  3. Наличие пользовательского WEB-интерфейса

Нефункциональные требования:
  • JEE стек технологий
  • Фреймворки, библиотеки: Hibernate, Spring
  • Система хранения данных: PostgreSQL
  • Код приложения необходимо снабдить комментариями
  • Приложение должно собираться при помощи maven без установки или настройки каких либо дополнительных компонент;
  • Архив с результатом тестового задания должен содержать текстовый файл readme.txt с инструкцией по сборке, настройке, конфигурированию и развертыванию приложения (если необходимо).
  • ,

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

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

Тестовое задание в одну из крупных 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)

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

Тестовое задание на стажировку JavaRush: Полезные ссылки и хинты

Хочу поделиться с вами полезными ссылками, хинтами и советами, которые помогут при выполнении тестового задания на стажировку в реальный проект на JavaRush.

Конечно, можно просто бездумно накопировать решение тестового задания из интернета, благо примеров хватает, но мы-то хотим разобраться, что делаем :) Этот пост для тех, кто не обнаружил среди стека технологий, требующихся по заданию, знакомых слов и хочет это исправить)
  • ,

Тестовое задание: "Написать Интерпретатор на язык BrainFuck"

Привет всем!

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

Тестовое задание "Image Comparison"

Привет всем, дорогие читатели и форумчане!

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

  • ,

Тестовое задания для Trainee

Вобщем-то простенькое тестовое задание на позицию Trainee Functional Developer, так сказать, для затравки. Я проходил собеседование 2 года назад, поэтому не думаю, что сделаю что-то страшное выложив задание.

"Привет, мир!" или не засиделся ли ты в учениках?

Приветствую! Здесь я буду рассказывать о себе и своём опыте в Java. Речь не пойдёт об одном Javarush, я буду писать о различных случаях из жизни ученика, стажёра и джуна. О том, почему я решил сменить сферу деятельности. Про свои набитые шишки. О Python, с которым познакомился. О программировании в быту и о программировании «for fun». О собеседованиях и тестовых заданиях, менторах и знакомствах. Про английский и ВО. И про многое другое. Обо всём по-очереди, не пугайтесь.

Если будет получаться интересно и у меня будет свободное время — буду вести этот мини-блог. Ну, а новичкам, возможно я помогу обрести уверенность в себе (ох, как же она нужна) и, возможно, узнать что-то новое. Может даже, повысить свой уровень знаний.

Об этом самом понимании своего уровня, кстати, и пойдёт сегодня речь. Я думаю, что не только я столкнулся с подобной проблемой и возможно, кому-то мой совет пойдёт на пользу.
  • ,

Тестовое задание

Всем привет.
Предыстория в двух словах. Решал задачи, читал книги, решил, что пора попробовать свои силы в какой-ниюудь компании, получил тестовое задание (описываю своими словами):
«Система ввода и отображения студентов — две вкладки: студенты и группы, и редактирование всей этой информации, бд — любая встроенная»

Самая основная проблема то, что я не знаю как проектировать программы (uml я тоже не умею пользоваться, просто постарался представить как это могло быть):


Так, вот вопросы:
1. Когда правильно подключаться к бд?
— Создается единственное подключение и потом, каким-то образом работаем с данными, в конце программы закрываем соединение(например, получили данные из таблицы, запихали их в вектор, по ходу программы редактируем их или отображаем, а когда надо сохранить — записываем их в бд, я считаю этот подход ахинеей, но может быть =)) )
— Выполняем коннект каждый раз, например, когда кликаем по кнопке.

Подскажите, как быть в этой ситуации, на какую литературу обратить внимание.