КРАЙНО РЪКОВОДСТВО

Foobar Challenge: Тайният процес на наемане на Google

Всичко, което трябва да знаете за Google Foobar Challenge

Наскоро, докато търсех ключова дума „безглав хром“ в Google, получих необичаен изскачащ прозорец на моя прозорец със съобщение:

Известно е, че любопитните разработчици търсят интересни проблеми. Решаване на един от Google?

Бях изненадан да видя, че Google ми изпрати предизвикателство за решаване и го приех веднага! Щракването върху „Искам да играя“ ме отведе на страницата „Foobar на Google“.

Това беше Google Foobar Challenge!

Какво точно представлява Google Foobar Challenge?

Предизвикателството на Google Foobar е таен процес на наемане от компанията за набиране на топ програмисти и разработчици по целия свят. И е известно, че няколко разработчици в Google са наети от този процес.

Предизвикателството се състои отпет нива с общо девет въпроса, като нивото на трудност се увеличава на всяко ниво.

Какво да направите, след като получите предизвикателството?

След като изберете опцията „Искам да играя“, вие попадате на уебсайта на Foobar, който има подобен на Unix интерфейс на обвивката, включително някои стандартни Unix команди като help, cd, ls, cat and etcetera.

И така, предизвикателството започва с научнофантастичен приключенски сюжет (в синия текст по-горе). За да започнем ограниченото във времето предизвикателство, трябва да въведем команда request в обвивката.

След заявяване на предизвикателството, в папката на командния ред се добавят четири файла: solution.java, solution.py, readme.txt и constraints.txt , до които трябва да имаме достъп с помощта на команда cat and ls (посочена в help).

Имаме избор да разрешим въпроса или в javaилиpython 2.7.

За да започнем да пишем кода, трябва да изпълним командата edit file.py или edit file.java и ще се отвори редактор на код на същата уеб страница (и save кода с помощта на клавишите за бърз достъп). Можем да проверим нашия код по всяко време, като изпълним командата verify file. Кодът ще бъде проверен чрез изпълнение на няколко тестови случая, два от които са видими, а останалите са скрити тестови случаи. След като кодът премине точно всички тестови случаи, можем да изпратим нашето решение на този въпрос, изпълнявайки командатаsubmit file.

Пет нива на foobar предизвикателство

Нивото на трудност продължава да нараства с напредването на предизвикателството.

Ниво 1:Това ниво има само един въпрос, който беше доста ясен и лесен за решаване. Не изисква специален алгоритъм за решаването му. За решаването на този въпрос са дадени четиридесет и осем часа.

Ниво 2:На този етап има два въпроса с време от седемдесет и два часа за решаване на всеки въпрос. И двата въпроса се основават на основните принципи на линейната алгебра и математика.

След като разрешим и двата въпроса на това ниво, получаваме връзка за препоръка, т.е. можем да поканим нашия единствен приятел да вземе Google Foobar Challenge!

Ниво 3:Тук предизвикателството започва да става малко сложно. За да преминем това ниво, трябва да решим три въпроса с време от седем дни за всеки въпрос.

За да се решат тези въпроси, бяха необходими добри познания по математика и концепции за програмиране като динамично програмиране, верига на Марков и др.

Но не е нужно да се притеснявате, ако не знаете тези концепции, винаги можете да научите тези концепции онлайн. Challenge ви дава достатъчно време, за да разберете концепцията и да я приложите в даден програмен проблем. В един от въпросите реших проблема с най-интуитивния метод, но той не беше достатъчно оптимален за големи стойности и изискваше прилагане на динамично програмиране за получаване на резултата.



След завършване на ниво 3 ще бъдем помолени да попълним данните си, за да се свърже с нас специалист от Google за подбор на персонал!

Те искат вашата основна информация: име, телефонен номер, имейл адрес, държава, автобиография (по избор) и дали сте студент или професионалист.

Ниво 4:Намерих това ниво за най-трудното от всичките пет. Изискваше се прилагането на няколко концепции за решаване на един проблем. Има общо два въпроса на това ниво и се дава време от общо две седмици за решаване на всеки въпрос.

На това ниво са необходими задълбочени познания за алгоритми и структури от данни.

Първият въпрос се основаваше на концепцията за теорията на числата и графиките. Трябваше да внедря алгоритъма на Белман-Форд, за да реша този въпрос.

Отне ми много време да разбера тези концепции и да ги приложа, за да реша тези въпроси. Но успях да реша и двата въпроса навреме.

След успешното завършване на ниво 4 получавате друга препоръчана връзка, за да поканите още един ваш приятел да опита това предизвикателство!

Ниво 5:Това беше вторият най-труден проблем от цялото предизвикателство и се основаваше на чисто математическа концепция. Последното ниво имаше само един въпрос и бяха дадени двадесет и два дни за решаването на този проблем!

Проблемът изискваше разбиране на пермутации и комбинации и прилагане на теоремата за изброяване на Поляи лемата на Бърнсайд. След разбирането на тези две теореми частта за кодиране беше доста проста.

С изпращането на този въпрос предизвикателството на Google Foobar е завършено!

След като завърших предизвикателството, получих шифрован низ, който беше лесен за дешифриране с помощта на base64.

import base64
encrypted="THE ENCRYPTED MESSAGE"
my_eyes=str.encode("MY USER NAME")
decoded=base64.b64decode(encrypted)
decrypted=""
for i in range(0,len(decoded)):
decrypted+=chr((my_eyes[i%len(my_eyes)] ^ decoded[i]))
print(decrypted)

Това беше кодът, който използвах за дешифриране на съобщението. Дешифрираното съобщение беше:

{'success' : 'great', 'colleague' : 'esteemed', 'efforts' : 'incredible', 'achievement' : 'unlocked', 'rabbits' : 'safe', 'foo' : 'win!'}

Какво ще се случи след изпълнение на предизвикателството?

След успешното завършване на всичките пет нива, шансовете са, че ще се свържете с вас от Google за подбор на персонал за интервю.

Може да получите имейл или телефонно обаждане и ако сте пропуснали интервюто, можете да бъдете нает в Google.

Как да получите Foobar Challenge?

За съжаление, това предизвикателство не е достъпно за всички и Google го изпраща само на конкретни разработчици (може да се основава на тяхната история на търсене — технически ключови думи).

Не се притеснявайте, ако все още не сте получили тази покана, това не е единственият начин да си намерите работа в Google.

Не намирайте Foobar, оставете Foobar да ви намери!

Заключение

Бих казал, че това е чудесна възможност да научите и бих ви препоръчал да разрешите въпросите, ако получите покана.

Докато решавате проблемите, не се стремете да бъдете наети в Google, а да научите новите техники и да изпитате едно от най-добрите предизвикателства при програмирането.

Foobar е повече за учене и прилагане, вместо да знае всичко преди!

Ако имате някакви въпроси или коментари, моля, публикувайте ги в секцията за коментари.

За да подобрите кода си, вижте нашата статия тук.

Вижте това: https://www.fiverr.com/share/LDDp34

Първоначално публикувано на: www.patataeater.blogspot.com

Resources:
https://foobar.withgoogle.com/
https://www.freecodecamp.org/news/the-foobar-challenge-googles-hidden-test-for-developers-ed8027c1184/