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

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

Текст задания:

Assignment

Your objective is to perform a set of tasks described below. Please try to complete as much as possible within given time-frame, even if you do not finish the assignment.

Tools and Technologies

Problem Description

Create the back-end for Sales Order Application which contains:

  • Product: The Inventory products that organization sell.
  • Customer: The buyers of products from organization.
  • Sales Order: The process of selling product to customer. Each sales order consist of one or more order lines.
  • Order Lines: The actual products and quantities that a customer need to buy.

The back end will validate the following information with each sales order

  • Quantities that have been requested are less than or equal current inventory balance.
  • Total price of sales order is less than or equal (Customer Credit Limit — Customer Current Credit).

If Sales Order is valid, your back end  will reduce Inventory Quantities and increase current credit.

Your back end should also handle delete and update of sales order

Requirements

  • All Project(s) you will create will be under maven control.
  • You will use web services to implement communication between your backend & our front-end .
  • You will use tomcat as your web container.
  • You will use hibernate as an ORM implementation.
  • You will use MySQL as your database.
How to integrate your code:
  • Your code will replace marker //TODO by the candidate (You can list them by opening Markers view in eclipse then expand Java Task it should be 15 Item)
  • Every Marker has a comment of what should you do.
  • Don’t waste your time in improve or refactor the front end code

Build, Deployment and Testing

  • Provide full details of how to build, deploy and run the application (this should be in howto file).
  • Create JUnit for all basic operations (e.g. validations, sales order CRUD operations ..).
  • Application should be built using a single command.
  • Execute unit tests should be done using a single command.

To be evaluated

  • Functionalities and output.
  • Database design.
  • Code quality (style, documentation and performance).
  • Fulfilment of running and deployment Instructions.

Readme Document

Create a txt file with the following information

  1. Instructions to install and configure prerequisites or dependencies, if any

  2. Instructions to create and initialize the database

  3. Assumptions you have made — it is good to explain your thought process and the assumptions you have made

  4. Requirements that you have not covered in your submission, if any

  5. Instructions to configure and prepare the source code to build and run properly

  6. Issues you have faced while completing the assignment, if any

  7. Constructive feedback for improving the assignment

Design Document

Create a design document containing the following

  1. High level requirement analysis

  2. High level presentation of the data model

  3. Architecture diagrams describing the composition and working of the system, explaining the component interaction and process, control and data flows.

  4. Explain the breakdown of the system into components with technical implementation details of each component along with the design patterns involved and with reasons that justify your choices.

  5. Present the UI screens and how they are connected through user interactions with those screens

  6. Use both visual elements (diagrams) and text descriptions to maximise the amount of information conveyed while keeping the document as compact as possible

Delivery / What to submit

Please, read and follow this section carefully.Any delivery that does not follow this section will score much less or simply won’t be evaluated.

Delivery for this assignment should consist of:

Archive named <your_name — Java Engineer>.zip containing the following:

  • README.txt  -> containing report about work done.
  • Design.doc   -> contains your design implementation.
  • Wink Folder -> Wink video shows you application running, and perform required functionality.
  • Code Folder -> contains your solution and frontend project after modification.
  • SQL Folder   -> All SQL scripts.
  • Deployment -> all artifacts and detailed instructions to deploy your solution.

So the resulting structure of your delivery should be:

    • <your_name — Java Engineer>.zip
    • <your_name — Java Engineer>.zip \ README.txt
    • <your_name — Java Engineer>.zip \ Design.doc
    • <your_name — Java Engineer>.zip \Code\
    • <your_name — Java Engineer>.zip \SQL\
    • <your_name — Java Engineer>.zip \Deployment\
    • <your_name — Java Engineer>.zip \Wink\

ATTENTION! YOUR APPLICATION WILL BE REJECTED IF IT:

— Does not compile
— Does not contain unit tests
— Unit tests are failing

Выполнение

В общем задание требует порядочно времени, которое вы потратите впустую:).  Можно нормально сделать, только если вы будете все три дня полный рабочий день заниматься этим.

У меня получилось следующее:

Код на GitHub.

Я воссоздал обычную структуры Spring приложения. Возможно, стоило воспользоваться Spring Roo и сэкономить немного времени, но я в принципе и без него довольно быстро создаю структуру. Общается клиентская и серверная часть с помощью Spring HTTP Invoker. Используется Hibernate, MySQL и т. д.

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

Особо здесь расписывать не буду.

Архив, который я им отправил:

crossoverassignmentjava

(Название файла было не таким, как здесь. Всё было в соответствии с их правилами, но на этот сайт я стараюсь не выкладывать файлы с различным регистром букв, пробелами и прочими вещами. Таков мой стандарт.)

Их ответ

Dear Urvanov,

Thank you for taking the time to apply for the Java Software Engineer position at Crossover.

The application process has been extremely competitive, and we greatly appreciate your contribution to that competition. After carefully considering your application, we are sorry to inform you that your Project Evaluation did not score high enough to proceed. You can see our evaluator’s comments at the end of this email.

Although we are unable to continue with your application, we want to thank your for your interest in Crossover and for the valuable time and effort you have invested in this process.

We wish you the best in your professional endeavors!

Here are some good points in your submission:
— Readme with instructions
— Demo show all features
— Script for database creation
— Application compiles and run without problems
— Code well organized with good separation between server and client code
— Minimal static code analisys issues
— Good modularity
— Application layered
— Have dependency injection
— All unit tests passing (with mocks and average coverage)
— Some level of patterns usage
— Good level of code abstractions usage

We have found some issues with your application:
— Important requirement missing: Web service integration
— Design document missing information about architecture and high-level decisions
— Design document with few diagrams
— Demo without voice
— Poor exception handling
— Minimal code comments/docs
— Server validation incomplete

These have affected negatively your overall score.

Thank you,
The Crossover Team

В начале пара стандартных абзацев, из шаблона письма, видимо. Потом плюсы и минусы. Большая часть получена анализатором кода, похоже. В принципе, я знаю, что у меня мало документации и описания. Времени просто не хватило. Были и другие дела, однако. А вот с отсутствием веб-сервиса я не согласен. Spring HTTP Invoker — это тоже веб-сервис. Или в их понимании веб-сервисом можно назвать только SOAP и REST?

Результат тестового задания: куча потерянного времени и никаких плюсов, однако.

Сама фирма мне не очень нравилась с самого начала. Слишком мутное описание вакансии. Я обычно такие отфильтровывал. А судя по отзывам в интернете они заставляют устанавливать на свой компьютер специальное приложение для слежения, которое в любой момент может использовать камеру, записывать нажатия клавиш, движения мышки и делать скриншоты. Это означает, что для работы с ними вам нужен будет отдельный физический компьютер и отдельный уголок комнаты, чтобы в их данные не попали ваши фотографии в труселях и без, пароли от банков, соцсетей, блогов, хостингов и почты. Источники: раз,  два. Люди там пишут, что в туалет лучше лишний раз не ходить. Да и вакансии как спам по всем сайтам появляются. Странно это.


Поделиться:

Тестовое задание Crossover Java: 6 комментариев

  1. > Или в их понимании веб-сервисом можно назвать только SOAP или REST
    Скорее всего web-service у них это WSDL+SOAP. Возможно, могли засчитать REST, но тут уже зависимость от трактовки.

  2. Мне даже не описали причин отказаЁ написали6 не удалось набрать минимальное колическтво баллов.

  3. Тестовое задание — это подозрительно. Крайне подозрительно. Всё ясно из личной беседы, на худой конец, есть испытательный срок. Рекомендую алчущих тестовых заданий сразу отправлять куда следует.

    1. Зря вы; нет ничего подозрительного в тестовых заданиях. Далеко не все ясно из личной беседы — я в свое время много людей интервьюирвал. Я лично год назад удачно прошел тестирование на Java Senior Developer, просто все сделал аккуратно, включая документацию. С тех пор и работаю.

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

Добавить комментарий

Ваш e-mail не будет опубликован.

*