Тогда мы идем к вам!
Если ты квалифицированный разработчик и тебе надоело терпеть на oDesk демпинг цен индусами, то новый сервис для тебя!
Сразу оговорюсь, что я не причастен к разработке сервиса и не состою в каких-либо отношениях с их командой. Узнал о нем случайно от друга, который скинул мне ссылку в скайп. Прошу не расценивать это как PR, просто делюсь сервисом и рассказываю как это было у меня.
Итак, сервис называется TopTal.
Это еще одна площадка для фрилансеров. Такая же как oDesk, freelancer и elance. Но, есть одно отличие.
Они проводят с вами 4 раунда собеседования перед тем как вы сможете принимать заказы!
По пунктам:
0. Вы регистрируетесь
1. Через час или два вам в скайп стучится девушка и просит 5-10 минут вашего времени чтобы провести вводное интервью. На этом этапе она себе примерно записывает у себя кто вы такой и вы узнаете немножко о том кто они такие.
2. Вам в почту падает ссылка на прохождение теста. Тест состоит из трех задач, которые нужно решить за 90 минут. После его прохождения результаты автоматически отсылаются в toptal и в случае успеха переходим к пункту 3.
3. К вам стучится программист ( в моем случае это был старший инженер toptal) и просит вас решить две задачи при нем. Открываете screenshare в скайпе, свою среду разработки и пишете код :) В случае успешного прохождения переходим к п.4
4. Вам на почту падает небольшое практическое задание, которое вы должны выполнить сами. После выполнения к вам снова стучится человек и просит вас показать что вы там натворили.
5. В случае успешного прохождения предыдущих пунктов вам приходит письмо со ссылкой для доступа на toptal, где вы изменяете свой пароль и заполняете профиль. После полного заполнения профился и его модерации вам открывают полный доступ к сервису.
Таким образом на получение этого доступа у меня ушла неделя. Зарегистрировался я там в прошлую пятницу, а закончил все процедуры буквально вчера.
Что мы имеем в сухом остатке: 3 раунда нелегкого технического интервью на английском, котороые автоматически отсеивает львиную долю школьников, работающих за еду и других любителей демпинга.
С сервисом работают крупные фирмы. Если хорошо зарекомендовать себя, то есть возможность найти себе работу вне сервиса у этих же клиентов (как впрочем и на любом другом фриланс-сайте).
Три вида получения денег: банковский перевод, payoneer и paypal — большинству должно хватить.
Вот собственно и все.
Не все.
Как бонус, выкладываю тут задания, которые мне пришлось решать походу дела.
Задания
Этап 1 (пункт 2). Тест на 90 минут и три задания:
Write a function
function solution($blx1, $bly1, $trx1, $try1, $blx2, $bly2, $trx2, $try2);
that, given eight integers representing two rectilinear rectangles (one with lower-left corner (K, L) and upper-right corner (M, N), and another with lower-left corner (P, Q) and upper-right corner (R, S)), returns the area of their intersection. The function should return 0 if the intersection is a point or a line segment, or if the rectangles do not intersect. The function should return −1 if the area of the intersection exceeds 2,147,483,647.
Assume that:
· blx1, bly1, trx1, try1, blx2, bly2, trx2 and try2 are integers within the range [−2147483648..2147483647].
For example, given integers:
K = 0 L = 2 M = 5 N = 10
P = 3 Q = 1 R = 20 S = 15
the function should return 16.
The intersection of the two rectangles is a rectilinear rectangle whose lower-left corner is (3,2) and upper-right corner is (5,10), and its area equals 16.
Complexity:
· expected worst-case time complexity is O(1);
· expected worst-case space complexity is O(1).
· P ≤ Q / 2 and
· S[K] = S[K+P] for 0 ≤ K < Q − P.
For example, 8 is the period of «codilitycodilityco».
A positive integer M is the binary period of a positive integer N if M is the period of the binary representation of N.
For example, 4 is the binary period of 955, because the binary representation of 955 is «1110111011» and its period is 4. On the other hand, 102 does not have a binary period, because its binary representation is «1100110» and it does not have a period.
Write a function:
function solution($N);
that, given a positive integer N, returns the binary period of N. The function should return −1 if N does not have a binary period.
For example, given N = 955 the function should return 4, and given N = 102 the function should return −1, as explained in the example above.
Assume that:
· N is an integer within the range [1..1,000,000,000].
Complexity:
· expected worst-case time complexity is O(log(N)2);
· expected worst-case space complexity is O(log(N)).
A LOGO turtle stands at (0,0) heading North. It moves A[0] steps forward and turns by 90 degrees clockwise. Then it moves A[1] steps forward and turns clockwise by 90 degrees. And so on.
For example, given:
A[0] = 1 A[1] = 3 A[2] = 2
A[3] = 5 A[4] = 4 A[5] = 4
A[6] = 6 A[7] = 3 A[8] = 2
The turtle walks as follows:
(0,0) -> (0,1) 1st move, 1 step North
(0,1) -> (3,1) 2nd move, 3 steps East
(3,1) -> (3,-1) 3rd move, 2 steps South
(3,-1) -> (-2,-1) 4th move, 5 steps West
(-2,-1) -> (-2,3) 5th move, 4 steps North
(-2,3) -> (2,3) 6th move, 4 steps East
(2,3) -> (2,-3) 7th move, 6 steps South
(2,-3) -> (-1 3) 8th move, 3 steps West
(-1,-3) -> (-1,-1) 9th move, 2 steps North
In the 7th and 9th moves the turtle touches its previous path, namely:
at point (2,1) in the 7th move,
at point (2,-1) in the 7th move,
at point (-1,-1) in the 9th move
Write a function:
function solution($A);
that, given a description of the turtle's walk in array A, returns the number of the first move in which the turtle touches its previous path, or 0 if no such situation occurs.
For example, given array A as defined above, the function should return 7, because the turtle touches its previous path at point (2,1) in the 7th move.
Assume that:
· N is an integer within the range [1..100,000];
· each element of array A is an integer within the range [1..1,000,000].
Complexity:
· expected worst-case time complexity is O(N);
· expected worst-case space complexity is O(1), beyond input storage (not counting the storage required for input arguments).
Elements of input arrays can be modified.
Этап 2 (пункт 3). 2 задания, на каждое по 20 минут:
decimal representation of that number grouped by commas after every 3 digits. You can't
solve the task using a built-in formatting function that can accomplish the whole
task on its own.
Assume: 0 <= n < 1000000000
1 -> «1»
10 -> «10»
100 -> «100»
1000 -> «1,000»
10000 -> «10,000»
100000 -> «100,000»
1000000 -> «1,000,000»
35235235 -> «35,235,235»
wl.txt.
«Anagram»: An anagram is a type of word play, the result of rearranging the letters of a word or
phrase to produce a new word or phrase, using all the original letters exactly once; for example
orchestra can be rearranged into carthorse.
anagrams(«horse») should return:
['heros', 'horse', 'shore']
Этап 3 (пункт 4). Задание:
I can:
— register and log in
— I can have my todo list displayed
— I can manipulate my list (add/remove/modify entries)
— Assign priorities to the entries.
— I could do the same using a very simple REST api.
— The front-end is using Ajax exclusively.
I don't need any design/UI/logo, etc plain html is fine.
Вот и все. Регистрируйтесь на TopTal!
Автор: xytop
Задания и тесты мы меняем. Не стоит пробовать читить — мы это отслеживаем и проверяем. :)
У нас много проектов, и мы всегда ищем новых талантливых программистов с уверенным знанием английского языка для отличной удаленной работы.
Чтобы избежать слухов и кривотолков – готов ответить так сказать “из первых уст” на любые другие интересующие Вас вопросы относительно Toptal и как разработчик, и как рекрутер (dmitry@toptal.com / skype – pavlovdmitry). Отвечу всем. Не стесняйтесь.