Ինչպե՞ս պատրաստվել Google-ում հարցազրույցի և ձախողել այն: Երկու անգամ

Ինչպե՞ս պատրաստվել Google-ում հարցազրույցի և ձախողել այն: Երկու անգամ

Հոդվածի վերնագիրը հնչում է որպես էպիկական ձախողում, բայց իրականում ամեն ինչ այնքան էլ պարզ չէ։ Իսկ ընդհանրապես այս պատմությունը շատ դրական ավարտ ունեցավ, թեպետ ոչ Google-ում։ Բայց սա մեկ այլ հոդվածի թեմա է։ Այս նույն հոդվածում ես կխոսեմ երեք բանի մասին՝ ինչպես է անցել իմ նախապատրաստական ​​գործընթացը, ինչպես են տեղի ունեցել հարցազրույցները Google-ում և ինչու, իմ կարծիքով, ամեն ինչ այնքան էլ պարզ չէ, որքան կարող է թվալ։

Ինչպես այդ ամենը սկսվեց

Կիպրական մի ցուրտ ձմեռային երեկո, հանկարծ մտքովս անցավ այն միտքը, որ դասական համակարգչային գիտության իմ գիտելիքները շատ հեռու են նույնիսկ միջինից, և ինչ-որ բան պետք է անել դրա դեմ: Եթե, ի դեպ, ինչ-որ մեկը դեռ չի կարդացել, թե ինչու է երեկոն կիպրոսյան և ցուրտ, ապա կարող եք իմանալ դրա մասին այստեղ. Որոշ մտածելուց հետո որոշվեց սկսել առցանց դասընթաց անցնելով ալգորիթմների և տվյալների կառուցվածքների վերաբերյալ: Իմ նախկին գործընկերներից մեկից ես լսել եմ Ռոբերտ Սեջվիկի դասընթացի մասին Coursera-ում: Դասընթացը բաղկացած է երկու մասից (մաս 1 и մաս 2) Եթե ​​հանկարծ հղումները փոխվեն, դուք միշտ կարող եք Google-ում հեղինակի անունը: Յուրաքանչյուր մասը տևում է 6 շաբաթ։ Դասախոսությունները կարդում են շաբաթվա սկզբին, իսկ շաբաթվա ընթացքում դեռ պետք է վարժություններ անել։ Դասընթացի առաջին մասը ներառում է տվյալների հիմնական կառուցվածքները, տեսակավորման հիմնական տեսակները և ալգորիթմների բարդությունը: Երկրորդ մասն արդեն ավելի առաջադեմ է՝ սկսած գրաֆիկներից և վերջացրած այնպիսի բաներով, ինչպիսիք են Գծային ծրագրավորումը և անլուծելիությունը: Մտածելով վերը նշված բոլորի մասին՝ ես եկա այն եզրակացության, որ դա հենց այն է, ինչ ինձ պետք է։ Ի դեպ, հետաքրքրասեր ընթերցողը կարող է հարցնել՝ ի՞նչ կապ ունի Google-ը դրա հետ։ Եվ իսկապես, մինչ այս պահը նա ընդհանրապես կապ չուներ դրա հետ։ Բայց ինձ նպատակ էր պետք, քանի որ երեկոյան 12 շաբաթ առանց նպատակի սովորելը որոշ չափով դժվար է։ Ո՞րը կարող է լինել նոր գիտելիքներ ձեռք բերելու նպատակը: Իհարկե, դրանց կիրառումը գործնականում։ Առօրյա կյանքում դա բավականին խնդրահարույց է, բայց մեծ ընկերության հետ հարցազրույցի ժամանակ դա հեշտ է: Արագ Google-ը ցույց տվեց, որ Google-ը (ներիր տավտոլոգիան) Եվրոպայի ամենամեծ ընկերություններից մեկն է (իսկ ես հատուկ նայում էի Եվրոպային), որը նման հարցազրույցներ է անցկացնում։ Մասնավորապես, նրանց գրասենյակը գտնվում է Շվեյցարիայի Ցյուրիխ քաղաքում։ Այսպիսով, որոշված ​​է. եկեք ուսումնասիրենք և գնանք Google-ում հարցազրույցի:

Նախապատրաստվելով առաջին մոտեցմանը

12 շաբաթը արագ անցավ, և ես ավարտեցի երկու դասընթացները: Դասընթացներից իմ տպավորություններն ավելի քան դրական են, և ես կարող եմ դրանք խորհուրդ տալ բոլոր ցանկացողներին: Ինձ դուր եկավ դասընթացները հետևյալ պատճառներով.

  • Դասախոսը խոսում է բավականին պարզ անգլերեն
  • Նյութը լավ կառուցված է
  • Հիասքանչ ներկայացումներ, որոնք ցույց են տալիս յուրաքանչյուր ալգորիթմի ներսը
  • Նյութի իրավասու ընտրություն
  • Հետաքրքիր վարժություններ
  • Կայքում ավտոմատ կերպով ստուգվում են վարժությունները, որից հետո գեներացվում է հաշվետվություն

Դասընթացների վրա իմ աշխատանքը սովորաբար անցնում էր այսպես. Ես 1-2 օրում լսեցի դասախոսություններ։ Այնուհետև նրանք անցան նյութի վերաբերյալ իրենց գիտելիքների արագ ստուգում: Շաբաթվա մնացած ժամանակահատվածը ես վարժությունը կատարեցի մի քանի կրկնություններով: Առաջինից հետո ստացա իմ 30-70 տոկոսը, հաջորդները արդյունքը հասցրին 97-100 տոկոսի։ Վարժությունը սովորաբար ներառում էր ինչ-որ ալգորիթմի իրականացում, օրինակ. Կարի փորագրություն կամ bzip.

Դասընթացներն ավարտելուց հետո հասկացա, որ շատ գիտելիքը գալիս է մեծ վշտի հետ։ Եթե ​​նախկինում ես պարզապես գիտեի, որ ոչինչ չգիտեմ, ապա հիմա սկսեցի հասկանալ, որ ես էի, որ չգիտեի:

Քանի որ ընդամենը մայիս ամիսն էր, և ես նշանակեցի հարցազրույցը աշնանը, որոշեցի շարունակել կրթությունս։ Թափուր պաշտոնին ներկայացվող պահանջները վերանայելուց հետո որոշվեց զուգահեռաբար գնալ երկու ուղղությամբ՝ շարունակել ալգորիթմների ուսումնասիրությունը և մեքենայական ուսուցման հիմնական դասընթաց անցնել։ Առաջին նպատակի համար ես որոշեցի դասընթացներից անցնել գրքի և ընտրեցի Սթիվեն Սկիենայի «Ալգորիթմներ. Ալգորիթմի ձևավորման ձեռնարկ: Ոչ այնքան մոնումենտալ, որքան Կնուտինը, բայց դեռ. Երկրորդ գոլի համար ես վերադարձա Կուրսերա և գրանցվեցի Էնդրյու Նգի կուրսին: Machine Learning.

Անցավ ևս 3 ամիս և ես ավարտեցի դասընթացն ու գիրքը։

Սկսենք գրքից։ Ընթերցանությունը բավականին հետաքրքիր ստացվեց, թեև ոչ հեշտ։ Սկզբունքորեն խորհուրդ կտայի գիրքը, բայց ոչ միանգամից։ Ընդհանուր առմամբ, գիրքն ավելի խորը հայացք է տալիս դասընթացի ընթացքում իմ սովորածին: Բացի այդ, ես հայտնաբերեցի (ֆորմալ տեսանկյունից) այնպիսի բաներ, ինչպիսիք են էվրիստիկա և դինամիկ ծրագրավորում: Բնականաբար, ես դրանք օգտագործել էի նախկինում, բայց չգիտեի, թե ինչպես են դրանք կոչվում: Գիրքը պարունակում է նաև մի շարք հեքիաթներ հեղինակի կյանքից (Պատերազմի պատմություն), որոնք որոշակիորեն թուլացնում են ներկայացման ակադեմիական բնույթը: Ի դեպ, գրքի երկրորդ կեսը կարելի է բաց թողնել՝ ավելի շուտ առկա խնդիրների նկարագրություն և դրանց լուծման մեթոդներ։ Օգտակար է, եթե այն պարբերաբար օգտագործվի գործնականում, այլապես այն անմիջապես կմոռացվի։

Ես ավելի քան գոհ էի դասընթացից: Հեղինակը հստակ գիտի իր իրերը և հետաքրքիր ձևով է խոսում։ Գումարած դրա բավականին մեծ մասը, մասնավորապես՝ գծային հանրահաշիվը և նեյրոնային ցանցերի հիմունքները, ես հիշեցի համալսարանից, ուստի առանձնահատուկ դժվարություններ չեմ ունեցել: Դասընթացի կառուցվածքը բավականին ստանդարտ է։ Դասընթացը բաժանված է շաբաթների։ Ամեն շաբաթ կան դասախոսություններ՝ միախառնված կարճ թեստերով։ Դասախոսություններից հետո ձեզ տրվում է հանձնարարություն, որը պետք է կատարեք, ներկայացնեք, և այն ավտոմատ կերպով կստուգվի։ Համառոտ դասընթացի ընթացքում դասավանդվող բաների ցանկը հետևյալն է.
- ծախսերի գործառույթ
- գծային ռեգրեսիա
- գրադիենտ վայրէջք
- հատկանիշի մասշտաբավորում
- նորմալ հավասարում
- լոգիստիկ ռեգրեսիա
- բազմադասերի դասակարգում (մեկ ընդդեմ բոլորի)
- նեյրոնային ցանցեր
- հետբազմացում
- կանոնավորացում
- կողմնակալություն/տարբերություն
- սովորելու կորեր
- սխալի չափումներ (ճշգրտություն, հետկանչում, F1)
— Աջակցող վեկտորային մեքենաներ (մեծ մարժան դասակարգում)
— Կ–նշանակում է
- Հիմնական բաղադրիչների վերլուծություն
- անոմալիաների հայտնաբերում
- համատեղ զտիչ (հանձնարարական համակարգ)
— ստոխաստիկ, մինի-խմբաքանակի, խմբաքանակի գրադիենտ իջումներ
- առցանց ուսուցում
- քարտեզի կրճատում
- առաստաղի վերլուծություն
Դասընթացն ավարտելուց հետո այս բոլոր թեմաների ըմբռնումը ներկա էր: 2 տարի անց գրեթե ամեն ինչ բնականաբար մոռացվեց։ Ես այն խորհուրդ եմ տալիս նրանց, ովքեր ծանոթ չեն մեքենայական ուսուցմանը և ցանկանում են լավ պատկերացում կազմել հիմնական բաների մասին, որպեսզի առաջ շարժվեն:

Առաջին վազքը

Արդեն սեպտեմբեր էր, և ժամանակն էր մտածել հարցազրույցի մասին։ Քանի որ կայքի միջոցով դիմելը բավականին աղետալի է, ես սկսեցի ընկերներ փնտրել, ովքեր աշխատում են Google-ում: Ընտրությունն ընկավ datacompboy, քանի որ նա միակն էր, ում անմիջականորեն ճանաչում էի (թեկուզ ոչ անձամբ): Նա համաձայնեց փոխանցել իմ ռեզյումեն, և շուտով ես նամակ ստացա հավաքագրողից, որն առաջարկում էր իր օրացույցում տեղ պահել առաջին զրույցի համար: Մի քանի օր անց զանգը տեղի ունեցավ: Մենք փորձեցինք շփվել Hangouts-ի միջոցով, բայց որակը սարսափելի էր, ուստի անցանք հեռախոսին: Նախ, մենք արագ քննարկեցինք ստանդարտը, թե ինչպես, ինչու և ինչու, հետո անցանք տեխնիկական զննմանը: Այն բաղկացած էր տասնյակ հարցերից՝ «ինչ դժվարությամբ է տեղադրվում հեշ քարտեզի մեջ», «ինչ հավասարակշռված ծառեր գիտեք»: Դժվար չէ, եթե այս բաների մասին տարրական գիտելիքներ ունես: Սքրինինգը լավ է անցել և արդյունքների հիման վրա որոշել են մեկ շաբաթից կազմակերպել առաջին հարցազրույցը։

Հարցազրույցը տեղի է ունեցել նաև Hangouts-ի միջոցով։ Սկզբում մոտ 5 րոպե խոսեցին իմ մասին, հետո անցան խնդրին։ Խնդիրը գրաֆիկների վրա էր: Ես արագ հասկացա, թե ինչ է պետք անել, բայց սխալ ալգորիթմ ընտրեցի։ Երբ ես սկսեցի կոդ գրել, ես դա հասկացա և անցա մեկ այլ տարբերակի, որը լրացրեցի: Հարցազրուցավարը մի քանի հարց տվեց ալգորիթմի բարդության վերաբերյալ և հարցրեց, թե արդյոք դա կարելի է ավելի արագ անել: Ես ինչ-որ կերպ ձանձրացա և չկարողացա դա անել: Այս պահին ժամանակը սպառվեց, և մենք հրաժեշտ տվեցինք: Այնուհետև մոտ 10 րոպե հետո հասկացա, որ իմ օգտագործած Dijkstra ալգորիթմի փոխարեն այս կոնկրետ խնդրի դեպքում ես կարող եմ օգտագործել լայնության առաջին որոնումը, և դա կլինի ավելի արագ: Որոշ ժամանակ անց հավաքագրողը զանգահարեց և ասաց, որ հարցազրույցն ընդհանուր առմամբ լավ է անցել, և որ պետք է կազմակերպվի ևս մեկը: Մենք պայմանավորվեցինք ևս մեկ շաբաթ:

Այս անգամ ամեն ինչ վատացավ։ Եթե ​​առաջին անգամ հարցազրուցավարը ընկերասեր ու շփվող էր, ապա այս անգամ նա որոշ չափով մռայլ էր։ Ես չկարողացա անմիջապես պարզել խնդիրը, չնայած այն գաղափարները, որոնք ես առաջ քաշեցի, սկզբունքորեն կարող էին հանգեցնել դրա լուծմանը: Ի վերջո, հարցազրուցավարի մի քանի հուշումներից հետո լուծումը եկավ ինձ։ Այս անգամ պարզվեց, որ դա կրկին լայնածավալ որոնում էր, միայն մի քանի կետերից։ Ես գրել եմ լուծումները, ժամանակին հանդիպել եմ, բայց մոռացել եմ եզրային պատյանների մասին։ Որոշ ժամանակ անց հավաքագրողը զանգահարեց և ասաց, որ այս անգամ հարցազրուցավարը դժգոհ է, քանի որ իր կարծիքով ինձ չափից շատ ակնարկներ են պետք (3 կամ 4 կտոր) և ես անընդհատ փոխել եմ կոդը գրելիս։ Երկու հարցազրույցների արդյունքների հիման վրա որոշվեց ավելի հեռուն չգնալ, այլ ցանկության դեպքում հաջորդ հարցազրույցը հետաձգել մեկ տարով։ Դրա համար մենք հրաժեշտ տվեցինք։

Եվ այս պատմությունից ես մի քանի եզրակացություն արեցի.

  • Տեսությունը լավ է, բայց դուք պետք է արագ նավարկեք այն
  • Տեսությունն առանց պրակտիկայի չի օգնի։ Մենք պետք է խնդիրներ լուծենք և կոդավորումը հասցնենք ավտոմատության:
  • Շատ բան կախված է հարցազրուցավարից: Եվ դրա դեմ ոչինչ անել հնարավոր չէ:

Պատրաստվում է երկրորդ վազքին

Իրավիճակի մասին մտածելուց հետո որոշեցի մեկ տարուց նորից փորձել։ Եվ մի փոքր խմբագրեց նպատակը. Եթե ​​նախկինում հիմնական նպատակը սովորելն էր, իսկ Google-ում հարցազրույցը նման էր հեռավոր գազարի, ապա այժմ հարցազրույց անցնելը նպատակ էր, իսկ սովորելը` միջոց:
Այսպիսով, մշակվեց նոր պլան, որը ներառում էր հետևյալ կետերը.

  • Շարունակեք ուսումնասիրել տեսությունը՝ կարդալով գրքեր և հոդվածներ:
  • Լուծել ալգորիթմական խնդիրներ 500-1000 հատի չափով։
  • Շարունակեք սովորել տեսությունը՝ դիտելով տեսանյութեր։
  • Շարունակեք ուսումնասիրել տեսությունը դասընթացների միջոցով:
  • Ուսումնասիրեք Google-ում հարցազրույցների հետ կապված այլ մարդկանց փորձը:

Ես պլանն ավարտեցի մեկ տարվա ընթացքում։ Հաջորդը ես նկարագրելու եմ, թե կոնկրետ ինչ եմ արել յուրաքանչյուր կետի համար:

Գրքեր և հոդվածներ

Ես նույնիսկ չեմ հիշում կարդացածս հոդվածների քանակը, դրանք կարդացել եմ և՛ ռուսերեն, և՛ անգլերեն: Հավանաբար ամենաօգտակար կայքը այս մեկը. Այստեղ դուք կարող եք գտնել մեծ թվով հետաքրքիր ալգորիթմների նկարագրությունը կոդի օրինակներով:

Ես կարդացել եմ 5 գիրք՝ Ալգորիթմներ, 4-րդ հրատարակություն (Sedgewick, Wayne), Introduction to Algorithms 3rd Edition (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4-րդ հրատարակություն (Gayle Laakmann), Programming Interviews Exposure (2nd Suojenan) , Գիգեր), ծրագրավորման հարցազրույցների տարրեր (Ազիզ, Լի, Պրակաշ)։ Դրանք կարելի է բաժանել 2 կատեգորիայի. Առաջինը ներառում է Սեջվիքի և Քորմանի գրքերը։ Սա տեսություն է։ Մնացածը հարցազրույցի նախապատրաստությունն է։ Սեդգվիքը գրքում պատմում է նույն բանի մասին, ինչ իր դասընթացներում։ Պարզապես գրավոր. Այն ուշադիր կարդալը շատ իմաստ չունի, եթե անցել եք դասընթացը, բայց ամեն դեպքում արժե այն շրջել: Եթե ​​դուք չեք դիտել դասընթացը, իմաստ ունի կարդալ այն: Կորմենն ինձ չափազանց ձանձրալի թվաց։ Ճիշտն ասած, դժվարությամբ էի տիրապետում դրան։ Ես պարզապես հանեցի այն այնտեղից վարպետության տեսություն, և մի քանի հազվադեպ օգտագործվող տվյալների կառուցվածքներ (Ֆիբոնաչիի կույտ, վան Էմդե Բոաս ծառ, արմատական ​​կույտ):

Հարցազրույցին պատրաստվելու համար արժե գոնե մեկ գիրք կարդալ: Նրանք բոլորը կառուցված են մոտավորապես նույն սկզբունքով։ Նրանք նկարագրում են հարցազրույցի գործընթացը խոշոր տեխնոլոգիական ընկերություններում, տալիս են հիմնական բաներ Համակարգչային գիտությունից, խնդիրներ այս հիմնական բաների համար, խնդիրների լուծումներ և լուծումների վերլուծություն: Վերոնշյալ երեքից ես հավանաբար խորհուրդ կտայի Cracking the Coding Interview-ն որպես հիմնական, իսկ մնացածը կամընտիր են:

Ալգորիթմական խնդիրներ

Սա թերևս նախապատրաստության ամենահետաքրքիր կետն էր։ Կարելի է, իհարկե, նստել ու հիմարաբար հարցեր լուծել։ Դրա համար կան բազմաթիվ տարբեր կայքեր: Ես հիմնականում օգտագործում էի երեքը. Hackerrank, CodeChef и LeetCode. CodeChef-ում խնդիրները բաժանվում են ըստ դժվարության, բայց ոչ թեմայի: Hackerrank-ի վրա և՛ ըստ բարդության, և՛ թեմայի:

Բայց ինչպես անմիջապես պարզեցի ինքս ինձ համար, կա ավելի հետաքրքիր միջոց. Իսկ դրանք մրցույթներ են (ծրագրավորման մարտահրավերներ կամ ծրագրավորման մրցույթներ): Բոլոր երեք կայքերը տրամադրում են դրանք: Ճիշտ է, LeetCode-ի հետ կապված խնդիր կա՝ անհարմար ժամային գոտի: Այդ պատճառով ես չմասնակցեցի այս կայքին: Hackerrank-ը և CodeChef-ը տրամադրում են բավականին մեծ թվով տարբեր մրցույթներ, որոնք տևում են 1 ժամից մինչև 10 օր: Տարբեր ձևաչափերն ունեն տարբեր կանոններ, բայց մենք կարող էինք երկար խոսել այդ մասին։ Հիմնական կետը, թե ինչու են մրցույթները լավ, դա մրցակցային (և կրկին նույնաբանության) տարրի ներդրումն է ուսումնական գործընթացում:

Ընդհանուր առմամբ, Hackerrank-ում մասնակցել եմ 37 մրցույթի։ Դրանցից 32-ը վարկանիշային են եղել, իսկ 5-ը կամ հովանավորվել են (նույնիսկ մեկում ստացել եմ $25) կամ զվարճանքի համար: Վարկանիշային աղյուսակում 10 անգամ եղել եմ լավագույն 4%-ում, 11 անգամ՝ լավագույն 12%-ում և 5 անգամ՝ լավագույն 25%-ում։ Լավագույն արդյունքները եղել են 27/1459 3-ժամյա և 22/9721 շաբաթվա ընթացքում:

Ես անցա CodeChef-ին, երբ Hackerrank-ը սկսեց ավելի հազվադեպ անցկացնել մրցույթներ: Ընդհանուր առմամբ հասցրել եմ մասնակցել 5 մրցույթի։ Տասնօրյա մրցույթում լավագույն միավորը 426/5019 էր։

Ընդհանուր առմամբ, մրցույթներին և հենց այդպես, ես 1000-ից մի փոքր ավելի խնդիր եմ լուծել, որոնք տեղավորվել են պլանի մեջ։ Հիմա, ցավոք, չկա ազատ ժամանակ մրցակցային գործունեությունը շարունակելու համար, ինչպես չկա նպատակ, որի համար կարելի է դուրս գրել անազատ ժամանակը։ Բայց դա զվարճալի էր: Սրանով հետաքրքրվողներին խորհուրդ եմ տալիս գտնել համախոհներ։ Միասին կամ խմբով շատ ավելի հետաքրքիր է։ Ես զվարճացա այս ընկերոջ հետ, այնպես որ միգուցե այն լավ անցավ:

Դիտեք տեսանյութը

Սկիենայի գիրքը կարդալուց հետո ինձ սկսեց հետաքրքրել, թե ինչով է նա զբաղվում: Ինչպես Սեդգվիքը, նա էլ համալսարանի պրոֆեսոր է: Այս կապակցությամբ նրա դասընթացների տեսանյութերը կարելի է գտնել առցանց: Ես որոշեցի վերանայել դասընթացը COMP300E - Ծրագրավորման մարտահրավերներ - 2009 HKUST. Չեմ կարող ասել, որ այն ինձ շատ է դուր եկել։ Նախ, տեսանյութի որակն այնքան էլ լավ չէ։ Երկրորդ՝ ես ինքս չեմ փորձել լուծել կուրսում քննարկված խնդիրները։ Այսպիսով, նշանադրությունը շատ բարձր չէր:
Նաև խնդիրներ լուծելիս, փորձելով գտնել ճիշտ ալգորիթմը, հանդիպեցի Տուշար Ռոյի տեսանյութին։ Նա աշխատել է Amazon-ում, իսկ այժմ աշխատում է Apple-ում: Ինչպես հետո ինքս իմացա, նա ունի youtube ալիք, որտեղ նա տեղադրում է տարբեր ալգորիթմների վերլուծություն։ Գրելու պահին ալիքը պարունակում է 103 տեսանյութ։ Եվ պետք է ասեմ, որ նրա վերլուծությունը շատ լավ է արվել։ Փորձեցի դիտել այլ հեղինակների, բայց ինչ-որ կերպ չստացվեց: Այսպիսով, ես կարող եմ անպայման խորհուրդ տալ այս ալիքը դիտելու համար:

Դասընթացներ անցնելը

Ես այստեղ առանձնահատուկ բան չեմ արել: Դիտեցի տեսանյութ Google-ի Android Developer Nanodegree-ից և դասընթաց անցավ ITMO-ից Ինչպես հաղթել կոդավորման մրցույթներում. Չեմպիոնների գաղտնիքները. Nanodegree-ը բավականին լավն է, թեև ես բնականաբար նոր բան չեմ սովորել դրանից: ITMO-ի դասընթացը մի փոքր շեղված է տեսության առումով, բայց խնդիրները հետաքրքիր էին: Ես խորհուրդ չէի տա սկսել դրանով, բայց սկզբունքորեն դա լավ ծախսված ժամանակ էր:

Սովորեք ուրիշների փորձից

Իհարկե, շատ մարդիկ փորձեցին մտնել Google-ը: Ոմանք ստացան, ոմանք՝ ոչ: Ոմանք այս մասին հոդվածներ են գրել: Հետաքրքիր բաներից, հավանաբար, կնշեմ Այս մեկը и Այս մեկը. Առաջին դեպքում մարդն իր համար պատրաստեց ցուցակը, թե ինչ պետք է սովորի, որպեսզի դառնա ծրագրային ապահովման ինժեներ և մուտք գործի Google: Այն ի վերջո ավարտվեց Ամազոնում, բայց դա այլևս այնքան էլ կարևոր չէ: Երկրորդ ձեռնարկը գրվել է Google-ի ինժեներ Լարիսա Ագարկովայի կողմից (Լարր) Բացի այս փաստաթղթից, կարող եք նաև կարդալ նրա բլոգը.

Իմաստ ունի կարդալ հարցազրույցների ակնարկներ Glassdoor-ում: Նրանք բոլորը քիչ թե շատ նման են, բայց դուք կարող եք ստանալ որոշ օգտակար տեղեկություններ:

Ես այլ փոքր հոդվածների հղումներ չեմ տրամադրի, դրանք հեշտությամբ կարող եք գտնել Google-ում:

Երկրորդ վազք

Իսկ հիմա անցել է մեկ տարի։ Ուսումնական առումով շատ ինտենսիվ է ստացվել։ Բայց ես նոր աշնանը մոտեցա շատ ավելի խորը տեսական գիտելիքներով ու զարգացած գործնական հմտություններով։ Դեռ մի քանի շաբաթ էր մնացել մինչև նախապատրաստվելու համար հատկացված տարվա ավարտին, երբ հանկարծ Google-ից հավաքագրողի նամակն ընկավ փոստի մեջ, որտեղ նա ինձ հարցնում էր, թե դեռ ցանկություն ունեմ աշխատելու Google-ում և կ Ես դեմ եմ խոսել նրա հետ: Բնականաբար, դեմ չէի։ Պայմանավորվեցինք զանգահարել մեկ շաբաթից։ Ինձնից էլ խնդրեցին թարմացված ռեզյումե, որին ավելացրի համառոտ նկարագրություն, թե ինչ եմ արել տարվա ընթացքում աշխատավայրում և ընդհանրապես։

Ցմահ շփվելուց հետո որոշեցինք, որ մեկ շաբաթից Hangout-ի հարցազրույց է լինելու, ինչպես անցյալ տարի։ Անցավ մեկ շաբաթ, հարցազրույցի ժամանակն էր, բայց հարցազրուցավարը չներկայացավ։ Անցավ 10 րոպե, ես արդեն սկսել էի նյարդայնանալ, երբ հանկարծ ինչ-որ մեկը ներխուժեց չաթ. Ինչպես պարզվեց մի փոքր ուշ, հարցազրուցավարս ինչ-ինչ պատճառներով չկարողացավ ներկայանալ, և շտապ նրան փոխարինող գտավ։ Անձը ինչ-որ չափով անպատրաստ էր թե՛ համակարգիչը տեղադրելու, թե՛ հարցազրույցը վարելու առումով։ Բայց հետո ամեն ինչ լավ անցավ։ Ես արագ լուծեցի խնդիրը, նկարագրեցի, թե որտեղ են հնարավոր որոգայթները և ինչպես կարելի է դրանք շրջանցել: Մենք քննարկեցինք խնդրի մի քանի տարբեր տարբերակներ և ալգորիթմի բարդությունը: Հետո մենք խոսեցինք ևս 5 րոպե, ինժեները մեզ պատմեց Մյունխենում աշխատելու իր տպավորությունները (նրանք, ըստ երևույթին, շտապ փոխարինող չգտան Ցյուրիխում), և մենք բաժանվեցինք։

Նույն օրը հավաքագրողը կապվեց ինձ հետ և ասաց, որ հարցազրույցը լավ է անցել, և իրենք պատրաստ են ինձ հարցազրույցի հրավիրել գրասենյակ: Հաջորդ օրը մենք զանգահարեցինք Hangouts-ի միջոցով և քննարկեցինք մանրամասները: Քանի որ ես պետք է դիմեի վիզայի համար, որոշեցինք հարցազրույց նշանակել մեկ ամսից։

Մինչ ես փաստաթղթեր էի պատրաստում, ես միաժամանակ քննարկեցի առաջիկա հարցազրույցը հավաքագրողի հետ: Google-ում ստանդարտ հարցազրույցը բաղկացած է 4 ալգորիթմական հարցազրույցից և մեկ System Design հարցազրույցից: Բայց քանի որ ես դիմում էի Android-ի ծրագրավորողի աշխատանքի համար, ինձ ասացին, որ հարցազրույցի մի մասը հատուկ կլինի Android-ին: Ես չկարողացա դուրս հանել այն հավաքագրողից, թե կոնկրետ ինչ և ինչ կլինի: Սա, որքան հասկացա, համեմատաբար վերջերս է մտցվել, և ինքն էլ այնքան էլ տեղյակ չէր։ Ես նաև գրանցված էի երկու թրեյնինգի համար՝ ինչպես անցնել ալգորիթմական հարցազրույց և ինչպես անցնել System Design հարցազրույց: Նիստերը միջին օգտակարության էին։ Այնտեղ նույնպես ոչ ոք ինձ չէր կարող ասել, թե ինչ են հարցնում Android ծրագրավորողներին: Հետևաբար, իմ պատրաստությունն այս ամսվա համար հանգեցրեց հետևյալին.

  • Մարկերային տախտակ գնելը և դրա վրա հիշողությամբ 2-3 տասնյակ ամենահայտնի ալգորիթմներ գրելը։ Ամեն օր 3-5 հատ։ Ընդհանուր առմամբ, յուրաքանչյուրը գրվել է մի քանի անգամ։
  • Թարմացրեք ձեր հիշողությունը Android-ի տարբեր տեղեկությունների մասին, որոնք ամեն օր չեք օգտագործում
  • Դիտելով մի քանի տեսանյութ Մեծ մասշտաբի և նման բաների մասին

Ինչպես արդեն ասացի, միևնույն ժամանակ ես փաստաթղթեր էի պատրաստում ճանապարհորդության համար։ Սկզբից ինձնից տեղեկություն խնդրեցին հրավեր-նամակ պատրաստելու համար։ Հետո երկար ժամանակ փորձում էի պարզել, թե Կիպրոսում ով է Շվեյցարիայի վիզա տալիս, քանի որ Շվեյցարիայի դեսպանատունը դրանով չի զբաղվում։ Ինչպես պարզվեց, դա անում է Ավստրիայի հյուպատոսությունը։ Զանգեցի ու պայմանավորվեցի։ Նրանք մի փունջ փաստաթղթեր խնդրեցին, բայց առանձնապես հետաքրքիր բան չկա։ Լուսանկար, անձնագիր, կացության թույլտվություն, մի փունջ տարբեր վկայականներ և, իհարկե, հրավեր նամակ։ Մինչդեռ նամակը չհասավ։ Ի վերջո, ես գնացի սովորական տպագրությամբ, և այն բավականին լավ աշխատեց: Նամակն ինքնին հասավ 3 օր անց, և Կիպրոսի FedEx-ը չկարողացավ գտնել իմ հասցեն, և ես ստիպված էի ինքս գնալ այն ստանալու: Միևնույն ժամանակ ես նույն FedEx-ից ստացա ծանրոց, որը նույնպես չկարողացան ինձ հասցնել, քանի որ չէին գտել հասցեն, և որը այնտեղ պառկած էր հունիսից (5 ամիս, Կարլ): Քանի որ ես չգիտեի այդ մասին, բնականաբար, չէի ենթադրում, որ նրանք դա ունեն։ Ես ժամանակին ստացա վիզա, որից հետո ինձ հյուրանոց պատվիրեցին և թռիչքի տարբերակներ առաջարկեցին։ Ես հարմարեցրել եմ տարբերակները, որպեսզի ավելի հարմար լինի։ Այլևս ուղիղ չվերթեր չկային, ուստի ես այնտեղ թռչեցի Աթենքով և վերադարձա Վիեննայով:

Ուղևորության հետ կապված բոլոր ձևականությունները հարթվելուց հետո անցավ ևս մի քանի օր, և ես իրականում թռա Ցյուրիխ: Հասել է այնտեղ առանց միջադեպի: Օդանավակայանից քաղաք գնացի գնացք՝ արագ և հարմար: Մի փոքր քաղաքում թափառելուց հետո հյուրանոց գտա ու տեղավորվեցի։ Քանի որ հյուրանոցը պատվիրված էր առանց սննդի, ես ընթրեցի կողքին և գնացի քնելու, քանի որ թռիչքն առավոտյան էր, և ես արդեն ուզում էի քնել։ Հաջորդ օրը նախաճաշեցի հյուրանոցում (հավելյալ գումարի դիմաց) և գնացի Google-ի գրասենյակ։ Google-ը մի քանի գրասենյակ ունի Ցյուրիխում։ Հարցազրույցս կենտրոնականում չէր։ Եվ ընդհանուր առմամբ, գրասենյակը բավականին սովորական տեսք ուներ, ուստի ես հնարավորություն չունեի նայելու «նորմալ» Google գրասենյակի բոլոր բարիքները: Գրանցվեցի ադմինիստրատորի մոտ ու նստեցի սպասելու։ Որոշ ժամանակ անց հավաքագրողը դուրս եկավ և ինձ ասաց օրվա ծրագիրը, որից հետո ինձ տարավ այն սենյակ, որտեղ պետք է անցկացվեին հարցազրույցները։ Փաստորեն, պլանը ներառում էր 3 հարցազրույց, ճաշ և ևս 2 հարցազրույց։

Հարցազրույց թիվ մեկ

Առաջին հարցազրույցը հենց Android-ում էր: Եվ դա ընդհանրապես կապ չուներ ալգորիթմների հետ։ Անակնկալ, սակայն. Դե, լավ, սա ավելի տարածված է այս ձևով: Մեզ խնդրեցին ստեղծել որոշակի UI բաղադրիչ: Նախ քննարկեցինք, թե ինչ և ինչպես: Նա առաջարկեց լուծում պատրաստել RxJava-ի միջոցով, նկարագրեց, թե կոնկրետ ինչ է անելու և ինչու։ Նրանք ասացին, որ դա, անշուշտ, լավ է, բայց եկեք դա անենք՝ օգտագործելով Android-ի շրջանակը: Եվ միաժամանակ ծածկագիրը գրատախտակին կգրենք։ Եվ ոչ միայն բաղադրիչ, այլ ամբողջ Գործունեությունը, որն օգտագործում է այս բաղադրիչը: Սա այն է, ինչին ես պատրաստ չէի։ Մի բան է գրատախտակին գրել 30-50 տող ալգորիթմ, և մեկ այլ բան է գրել Android-ի կոդի լապշա, նույնիսկ հապավումներով և մեկնաբանություններով «դե, ես դա չեմ գրի, քանի որ դա արդեն ակնհայտ է» ոգով: Արդյունքը մի տեսակ վինեգրետ էր 3 տախտակի համար: Նրանք. Ես լուծեցի խնդիրը, բայց այն հիմար տեսք ուներ։

Հարցազրույց թիվ երկու

Այս անգամ հարցազրույցը ալգորիթմների մասին էր։ Եվ երկու հարցազրուցավար կար: Մեկը իրական հարցազրուցավարն է, իսկ երկրորդը՝ երիտասարդ փադավան (ստվերային հարցազրույց վարող): Անհրաժեշտ էր որոշակի հատկություններով տվյալների կառուցվածք ստեղծել։ Նախ, մենք սովորականի պես քննարկեցինք խնդիրը։ Ես տարբեր հարցեր տվեցի, հարցազրուցավարը պատասխանեց. Որոշ ժամանակ անց նրանց խնդրեցին գրատախտակին գրել հորինված կառուցվածքի մի քանի մեթոդներ։ Այս անգամ ես քիչ թե շատ հաջողակ էի, թեև մի քանի աննշան սխալներով, որոնք ուղղեցի հարցազրուցավարի հուշումով:

Հարցազրույց թիվ երեք

Այս անգամ System Design-ը, որը հանկարծ պարզվեց նաև Android-ը։ Անհրաժեշտ էր որոշակի ֆունկցիոնալությամբ հավելված մշակել։ Մենք քննարկեցինք հավելվածի, սերվերի և հաղորդակցման արձանագրության պահանջները: Այնուհետև ես սկսեցի նկարագրել, թե ինչ բաղադրիչներ կամ գրադարաններ կօգտագործեմ հավելվածը կառուցելիս: Եվ հետո, Job Scheduler-ի մասին հիշատակելիս, որոշակի շփոթություն առաջացավ։ Բանն այն է, որ ես այն երբեք գործնականում չեմ օգտագործել, քանի որ թողարկման պահին ես նոր էի անցել աջակցող հավելվածների, որտեղ դրա օգտագործման համար առաջադրանքներ չկային։ Նույնը եղավ հաջորդները մշակելիս։ Այսինքն՝ ես տեսականորեն գիտեմ, թե ինչ է այս բանը, երբ և ինչպես է օգտագործվում, բայց օգտագործման փորձ չունեմ։ Իսկ հարցազրուցավարին դա կարծես այնքան էլ դուր չեկավ: Հետո ինձ խնդրեցին ինչ-որ կոդ գրել։ Այո, հավելված մշակելիս պետք է անմիջապես կոդ գրել։ Կրկին Android կոդը տախտակի վրա: Նորից սարսափելի ստացվեց.

Լանչ

Մեկ այլ մարդ պետք է գար, բայց նա չեկավ։ Իսկ Google-ը սխալներ է թույլ տալիս։ Արդյունքում ես գնացի ճաշի նախորդ հարցազրուցավարի, նրա գործընկերոջ հետ, և քիչ անց միացավ հաջորդ հարցազրույցը վարողը: Ճաշը բավականին պարկեշտ էր: Կրկին, քանի որ սա Ցյուրիխի գլխավոր գրասենյակը չէ, ճաշասենյակը բավականին սովորական տեսք ուներ, թեև շատ գեղեցիկ:

Հարցազրույց թիվ չորս

Վերջապես, ալգորիթմներն իրենց մաքուր ձևով: Ես լուծեցի առաջին խնդիրը բավականին արագ և անմիջապես արդյունավետ, թեև բաց թողեցի մեկ եզրային դեպք, բայց հարցազրուցավարի հուշումով (նա տվեց հենց այս եզրային դեպքը) ես գտա խնդիրը և ուղղեցի այն: Իհարկե, ես ստիպված էի կոդը գրել տախտակին: Հետո տրվեց նմանատիպ առաջադրանք, բայց ավելի բարդ։ Դրա համար ես գտա մի երկու ոչ օպտիմալ լուծում և գրեթե գտա օպտիմալը, 5-10 րոպեն բավարար չէր միտքն ավարտելու համար։ Դե, ես ժամանակ չունեի դրա կոդը գրելու համար:

Հարցազրույց թիվ հինգ

Եվ կրկին Android հարցազրույց. Հետաքրքիր է, թե ինչու եմ ամբողջ տարի ուսումնասիրել ալգորիթմները:
Սկզբում կային մի քանի պարզ հարցեր. Այնուհետև հարցազրուցավարը գրատախտակին գրեց ծածկագիր և խնդրեց դրանում խնդիրներ գտնել: Գտա, բացատրեց, ուղղեց: Քննարկվել է. Եվ հետո սկսվեցին մի քանի անսպասելի հարցեր «Ինչ է անում Y մեթոդը X դասում», «Ի՞նչ կա Y մեթոդի ներսում», «Ինչ է անում Z դասը» ոգով: Իհարկե, ես ինչ-որ բան պատասխանեցի, բայց հետո ասացի, որ վերջերս իմ աշխատանքում նման բան չեմ հանդիպել և բնականաբար չեմ հիշում, թե ով ինչով և ինչպես է անում մանրամասն։ Դրանից հետո հարցազրուցավարը հարցրեց, թե ինչով եմ ես հիմա զբաղվում։ Եվ հարցերը գնացին այս թեմայի շուրջ։ Այստեղ ես արդեն շատ ավելի լավ եմ պատասխանել։

Վերջին հարցազրույցի ավարտից հետո վերցրեցին իմ անցաթուղթը, հաջողություն մաղթեցին ու ճանապարհեցին։ Մի փոքր շրջեցի քաղաքում, ընթրեցի և գնացի հյուրանոց, որտեղ քնեցի, քանի որ թռիչքը կրկին վաղ առավոտյան էր։ Հաջորդ օրը ես ապահով հասա Կիպրոս։ Հավաքագրողի խնդրանքով ես կարծիք գրեցի հարցազրույցի վերաբերյալ և հատուկ ծառայությունում լրացրեցի ձևաթուղթ՝ ծախսված գումարը վերադարձնելու համար: Բոլոր ծախսերից Google-ը ուղղակիորեն վճարում է միայն տոմսերի համար: Հյուրանոցը, սնունդը և ճանապարհորդությունը վճարվում են թեկնածուի կողմից: Հետո լրացնում ենք ձևաթուղթը, կցում անդորրագրերը և ուղարկում հատուկ գրասենյակ։ Նրանք մշակում են դա և բավականին արագ գումար են փոխանցում հաշվին:

Հարցազրույցի արդյունքները մշակելու համար պահանջվել է մեկուկես շաբաթ։ Որից հետո ինձ տեղեկացրին, որ ես «մի քիչ ցածր եմ բարից»։ Այսինքն՝ ես մի քիչ ցածր եմ ընկել։ Ավելի կոնկրետ՝ 2 հարցազրույց լավ է անցել, 2-ը մի քիչ ոչ այնքան լավ, և System Design՝ ոչ այնքան լավ։ Հիմա, եթե գոնե 3-ը լավ անցներ, ապա մենք կկարողանայինք մրցել, այլապես հնարավորություն չկա: Նրանք առաջարկեցին մեկ տարի հետո վերադառնալ։

Սկզբում, իհարկե, տխուր էի, քանի որ նախապատրաստական ​​աշխատանքների վրա մեծ ջանքեր էին ծախսվել, իսկ հարցազրույցի պահին արդեն մտածում էի Կիպրոսից հեռանալու մասին։ Google-ին միանալը և Շվեյցարիա տեղափոխվելը հիանալի տարբերակ էր թվում:

Ամփոփում

Եվ ահա մենք հասնում ենք հոդվածի վերջին հատվածին։ Այո, ես երկու անգամ ձախողեցի Google-ի հարցազրույցը: Տխուր է. Հավանաբար հետաքրքիր կլիներ այնտեղ աշխատել։ Բայց, կարելի է հարցին մյուս կողմից նայել։

  • Մեկուկես տարվա ընթացքում ես ահռելի քանակությամբ բաներ սովորեցի՝ կապված ծրագրային ապահովման մշակման հետ:
  • Ես շատ զվարճացա՝ մասնակցելով ծրագրավորման մրցույթներին։
  • Մի երկու օրով գնացի Ցյուրիխ։ Ե՞րբ եմ նորից գնալու այնտեղ:
  • Ես հետաքրքիր հարցազրույցի փորձ ունեցա աշխարհի խոշորագույն ՏՏ ընկերություններից մեկում:

Այսպիսով, այն ամենը, ինչ տեղի է ունեցել այս մեկուկես տարվա ընթացքում, պարզապես կարելի է վերապատրաստում կամ մարզում համարել։ Եվ այս մարզման արդյունքներն իրենց զգացնել տվեցին։ Կիպրոսից հեռանալու իմ գաղափարը հասունացավ (ընտանեկան որոշ հանգամանքների պատճառով), ես հաջողությամբ անցա մի քանի հարցազրույց մեկ այլ հայտնի ընկերության հետ և 8 ամիս անց տեղափոխվեցի։ Բայց դա բոլորովին այլ պատմություն է: Այնուամենայնիվ, կարծում եմ, որ դեռ պետք է շնորհակալություն հայտնեմ Google-ին թե՛ ինքս ինձ վրա աշխատած մեկուկես տարվա, թե՛ Ցյուրիխում անցկացրած 2 հետաքրքիր օրերի համար։

Ի վերջո, ի՞նչ կարող եմ ասել. Եթե ​​աշխատում եք ՏՏ ոլորտում, պատրաստվեք Google-ում հարցազրույցների (Amazon, Microsoft, Apple և այլն): Միգուցե մի օր կգնաք այնտեղ՝ այնտեղ հասնելու համար: Եթե ​​նույնիսկ չես ուզում, հավատա ինձ, նման նախապատրաստությունը քեզ ավելի վատ չի դարձնի։ Այն պահին, երբ դուք հասկանաք, որ կարող եք (թեկուզ միայն բախտի բերումով) հարցազրույց ստանալ այս ընկերություններից մեկի հետ, շատ ավելի շատ ճանապարհներ կբացվեն ձեզ համար, քան նախքան նախապատրաստվելը: Եվ ճանապարհին ձեզ անհրաժեշտ է միայն նպատակ, համառություն և ժամանակ: Ձեզ հաջողություն եմ ցանկանում :)

Source: www.habr.com

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