- Скажи сколько тебе ПОТЕНЦИАЛЬНО надо для решения поставленной задачи
- Ты покажешь, что в состоянии адекватно оценить свои навыки и сложность поставленной задачи
- Получишь больше информации о своих потенциальных работодателях, как минимум, станет понятен темп "гребли" ;-)
- Возможно, больше ничего делать не понадобится...
- Тут уже надо смотреть по ситуации:
- За спрос денег не берут! Попроси дать больше информации по непонятным для вас требованиям.
- Скажите об этом. Возможно это часть проверки вашей компетентности ;-)
- "Подарить" 2-4 часа своей жизни на выполнение тестового задания вполне нормально. Если считаете, что и оно должно быть оплачено то лучше сразу об этом сказать.
- Как минимум, предупредите людей чтобы они не ждали от вас решения. Уважайте своей и чужое время! НЕ ПРОПАДАЙТЕ!
- Лучше об этом сказать сразу и прямо. Возможно, это формальная часть внутренних процессов и ради Вас ее пересмотрят, хотя скорее...
- Перед тем как начать пробегитесь по нужным вам методам через Rest Console. Изучите структуры данных в рамках данного API
Могут быть полезными:
https://www.getpostman.com/
http://jsonviewer.stack.hu/
http://www.jsonschema2pojo.org/
- Если уже работали с этим SDK, на всякий случай, просмотрите что поменялось с момента вашей предыдущей "встречи". Если не работали, то первым делом ознакомьтесь с официальными туториалы и Git аккаунтом.
- Если есть возможность, то потренируйтесь "на кошках" (соберите небольшой пример, попробуйте на нем сделать те операции которые нужны будут для выполнения тестового задания)
- Старайтесь ограничится тем с чем вы уже работали и более-менее хорошо знакомы.
P.S.: СуперНовомодныйФреймворк о котором вы вчера прочитали на Хабре - определенно не ваш выбор. Как минимум, если вы не планируете всю ночь разбираться как он работает ;-)
- Лучше если вам выбор будет как-то коррелировать с теми технологиями/инструментами которые вы обсуждали во время интервью. Если стек указан в самом тестовом задании - то выбор очевиден. Если тестовое задание предваряет интервью и в описании нет никаких указаний по стеку то не будет лишним задать вопросы по интересующему стеку.
- Слепое копирование чужого кода, без понимания сути вещей и того какую проблему он решает, почти 100% источник ошибок. Как минимум, разбирайтесь что и зачем он делает.
*а если копируете, то делайте это так чтобы никто никогда не смог вычислить настоящего автора ;-)
**Open Source - уже давно не образец качества решений, а интернет - мусорник мнений
- Прежде всего, вашему потенциальному нанимателю должно быть интересно увидеть ваш инженерный подход, как лично Вы будете решать задачи.
P.S.:"Конструкторы" чужих решений, очень легко заменяются другими, более молодыми и менее прихотливыми, помните об этом...
*а если делаете, то делайте через TODO + описание что там должно быть
public class RemoteRepository {
private static RemoteRepository instance;
private static Context context;
private RemoteRepository() {
}
public static RemoteRepository getInstance(Context ctx) {
context = ctx;
if (instance == null) {
instance = new RemoteRepository();
}
return instance;
}
}
Может пригодиться:
https://source.android.com/setup/code-style
public class Foo {
private int mPrivateInt;
private int private_int;
private int privateInt;
}
- Если что-то выглядит слишком сложно чтобы работать, скорее всего не работает.
- Придерживайтесь принципов DRY, KISS,
YAGNI
- Решайте задачу поставленную в тестовом задании, а не "тараканов: в своей голове!
- 100500 зависимостей в сборочном скрипте без законченного и работающего задания ничего не значат. Если хватает знаний/времени решить проблему быстро и эффективно без привлечения чужого кода - то так и делайте. Это только вам в плюс.
- Результат вашей работы должен делать только то что от него хотят. Лишний функционал скорее всего будет источником ошибок.
- Знание паттернов - это хорошо. Умение их правильно применить еще лучше. Но каждый паттерн является решением конкретной проблемы, не надо их пытаться применить везде только потому что вы про них что-то знаете.
- Если стоит выбор написать больше кода или больше комментариев, то пишите код. Хороший код - самодокументируемый код ;-)
- Если времени мало, то пишите комментарии только там где они реально раскрывают суть происходящих вещей.
- Если времени достаточно то можно и написать. Но делайте это осмысленно! Написать хороший тест не так просто как кажется. Можно легко "погореть" на деталях.
- Если это явно оговорено в задании - то нужно писать.
- Во всех остальных случаях лучше написать больше кода.
*если не планируете ее поддерживать то лучше сразу отключить
https://developer.android.com/studio/test/monkey.html
- Вы молодец/умница!
- Не надо "стелиться" с благодарностями за высокую оценку вашего труда, и т.п.
Ведите себя как профессионал. Вы всего лишь сделали то что должны были сделать с достаточным уровнем качества для прохождения данного этапа.
- Если есть какие-то замечания. То разберите их. Лишним не будет.
- Попросите комментарии, разберите их.
- Не стоит спорить!
Во-первых, вашей экспертизы может не хватить чтобы аргументированно доказать свою точку зрения. Все мы чего-то не знаем..
Во-вторых, вы можете попасть на крайне упёртого "персонажа" которому все равно ничего не докажите. Он уже принял решение, так тому и быть.
- НЕ НАДО ИСТЕРИТЬ!
Достойно принять негативный результат - оставить за собой шанс на дальнейшие попытки. Даже такие компании как Facebook, Google имеют практику возвращаться к рассмотрению кандидатов спустя год - полтора после неудачной попытки.
- Просят сделать что-то еще или подправить?
Тут надо смотреть по ситуации... Возможно они просто тянут время и морочат вам голову.
- Долго не отвечают?
Можно, на всякий случай, написать им письмо с просьбой подтвердить получения выполненного задания.
*Но не надо делать это каждый день и давить!
Задание 1
Вводные:
Написать приложение, которое будет состоять из карты на которой будут находится маркеры публичных мест, в соответствии с указанной локацией или данными GPS
Дополнительная опция 1: должен быть альтернативный режим для отображения объектов в виде списка (отсортированного по мере удаленности объекта от указанно локации) + поддерживаться ZoomIn/Out на карте.
Дополнительная опция 2: по нажатию на маркер должна появляться информация об объекте (например, рейтинг) + по мере прокручивания списка должна расширяться зона поиска.
Дополнительная опция 3: должен поддерживаться offline режим и выделяться маркер объекта с наибольшим рейтингом.
Задание 2
Вводные:
Написать приложение, которое будет иметь возможность интегрироваться с Twitter, показывать ленту твитов с информацией об авторе, картинкой (если она есть), описанием и датой. По нажатию на твит должны переходить на экран с расширенной информацией включающей в себя галерею связанных картинок, количеством лайков и ретвитов.
Дополнительная опция: выводить медийный контент там где он есть.