nginx 1.17.6 և njs 0.3.7 թողարկում

nginx 1.17.6 և njs 0.3.7 թողարկում

Հոդվածի վերնագիրը թվում է որպես էպիկական ձախողում, բայց իրականում ամեն ինչը այդքան մątավորված չէ: Ընդհանուր առմամբ, այս պատմությունը ավարտվեց բավականին դրական, և չնայած Google-ին, սա արդեն մեկ այլ հոդվածի թեմա է: Այս հոդվածում ես պատմելու եմ երեք բաների մասին: Ինչպես էր ընթանում իմ պատրաստության գործընթացը, ինչպես անցնում էին հարցրույցները Google-ում և ինչու, իմ կարծիքով, ամեն բան այնքան էլ պարզ չէ, ինչպես կարող է թվալ:

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

Մի ցուրտ կիպոսյան ձմեռային երեկո ինձ մի միտք եկավ, որ իմ գիտելիքները դասական Computer Science -ում բավականին հեռու են նույնիսկ միջինից, և պետք է ինչ-որ բան անել այդ մասին: Եթե ինչ-որ մեկի համար դեռ չեն պատահել, թե ինչու է երեկոն կիպոսյան և ցուրտ, կարելի է դա իմանալ: այստեղ. Հեռանկարային մտքերից որոշ ժամանակ անց որոշվեց սկզբում անցնել օնլայն ամենատրամաբանման և տվյալների կառուցվածքներին վերաբերող դասընթաց: Դեռ մի նախկին գործընկերից լսել էի Ռոբերտ Սեդջվիկի (Robert Sedgewick) դասընթացի մասին Coursera-ում: Դասընթացը բաղկացած է երկու մասից (մաս 1 և մաս 2). Եթե միևնույն ժամանակ հղումները փոխվեն, միշտ կարելի է որոնել հեղինակին: Յուրաքանչյուր մասը տևում է 6 շաբաթ: Շաբաթվա սկզբում տրվող лекցիաները, իսկ շաբաթվա ընթացքում պետք է կատարել առաջադրանքներ: Դասընթացի առաջին մասը ծածկում է հիմնական տվյալների կառուցվածքները, հիմնական դասակարգման տեսակները և ալգորիթմի բարդությունը: Երկրորդ մասը արդեն ավելի առաջադեմ է, սկսվում է գծերով և ավարտվում է այնպիսի բաներով, ինչպիսիք են Linear Programming և Intractability: Ելնելով վերոհիշյալից, ես եկել եմ եզրակացության, որ սա հենց այն է, ինչը ինձ անհրաժեշտ է: Այստեղ մտահոգող ընթերցողը կարող է հարցնել, թե ինչ հարաբերություն ունի Google-ը: Եվ իսկապես, մինչև այս պահը այն այստեղ փոխկապակցված չէր: Բայց ինձ նպատակ էր հարկավոր, որովհետև 12 շաբաթ երեկոներ առանց նպատակ ունենալով զբաղվել մի փոքր դժվար է: Եվ ինչպիսի նպատակ կարող է լինել նոր գիտելիքներ ձեռք բերելու մեջ: Իհարկե, դրանց կիրառումը գործնականում: Օրական կյանքում դա բավականին խնդիրներ է առաջացնում, սակայն մեծ ընկերությունում հարցազրույց անցնելու դեպքում հեշտ է: Ազդեցիկ որոնումը ցույց տվեց, որ Google-ը (ներեցեք կրկնողության համար) Եվրոպայում ամենամեծ ընկերություններից մեկն է (ես նպատակային էի ընտրել Եվրոպան), որտեղ անցկացվում են նման հարցազրույցներ: Իհարկե, նրանց գրասենյակը տեղակայված է Ցյուրիխում, Շվեյցարիա: Ուստի որոշվեց՝ ուս ուսունի ու գնում ենք հարցազրույցի Google-ում:

Առաջին հարձակումին պատprepareություն

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

  • Օգտվողը խոսում է բավականին պարզ անգլերենով
  • Материал хорошо структурирован
  • Թանկարժեք համապետական պրեզենտացիաներ, որոնք ցույց են տալիս յուրաքանչյուր ալգորիթմի ներքին կառուցվածքը
  • Նախքան նյութի խոհրդանիշները
  • Հետաքրքիր առաջադրանքներ
  • Ավելին, վարժություններն ինքնաբերաբար ստուգվում են կայքում, ապա պատրաստվում է հաշվետվություն

Ես սովորաբար աշխատանքս դասընթացների վրա կատարում էի հետևյալ կերպ: 1-2 օրվա ընթացքում լսում էի դասախոսությունները: Այնուհետև արագ թեստ էի անցնում նյութի իմացության համար: Որոշ շաբաթներ ես մի քանի.iterasiyայի ընթացքում կատարում էի վարժություն: Առաջինից ստանում էի 30-70%, հաջորդները բերում էին արդյունքը 97-100%-ի: Վարժությունը սովորաբար բաղկացած էր որևէ ալգորիթմի իրականացման մասին, օրինակ Seam carving կամ bzip.

Դասընթացների ավարտից հետո realizala-lereի զգացի, որ շատ գիտելիքներ շատ ցավեր են: Եթե նախկինում միայն գիտեի, որ ոչինչ չեմ գիտակցում, հիմա սկսել եմ գիտակցել, թե ինչ EXACT չգիտեմ:

Երբ դեռ մայիսի ամսվա ընթացքում էի, իսկ հարցազրույցս պլանավորված էր աշնանը, ես որոշեցի շարունակել իմ կրթությունը: Հետաքրքրիչ ԱՄՆ աշխատավարձի պահանջները դիտելուց հետո, որոշեցի երկուսի կողմերից միևնույն ժամանակ շարունակել ուսումնասիրությունը՝ շարունակելով ալգորիթմների ուսումնասիրությունը և անցնելով հիմնարար դասընթաց մեքենայական ուսուցման: Առաջին նպատակին ես որոշեցի փոխել դասընթացները գրքային մակարդակում և ընտրեցի Ստիվեն Սկիենայի «Ալգորիթմներ: Մշակումների ուղեցույց» գիրքը: Վերջապես, ոչ այնքան մոնումենտալ, որքան Կնուտի, բայց դեռևս: Երկրորդ նպատակին ես կրկին կատարեցի Coursera-ում և գրանցվեցի Էնդրյու Դա (Andrew Ng) դասընթացի մեջ Machine Learning.

Իհարկե, անցել է ևս 3 ամիս, և ես ավարտել եմ դասընթացն ու գիրքը:

Մ开始 ենք գրքից: Ընթերցումը բավական հետաքրքիր էր, թեև դժվար: Ընդհանուր առմամբ, ես գիրքը խորհուրդ կտայի, բայց ոչ հենց այնպես: Ընդհանուր առմամբ, գիրքը տալիս է ավելի խորացված վերլուծություն այն, ինչ ես սովորեցի դասընթացներին: Բացի այդ, ես բացեցի ինձ համար (формальная տեսակետով) այնպիսի բաներ, ինչպիսիք են էվրիստիկները և դինամիկ ծրագրավորումը: Իհարկե, նախկինում ես դրանք օգտագործում էի, բայց ինչպես են կոչվում, չէի գիտակցում: Կիրառողների կենսագրությունը նույնպես կա գրքում (War Story), որը մի քիչ ակտիվացնում է ակադեմիական ընկալումը: Գիրքի երկրորդ կեսը, BTW, կարելի է թողնել, այնտեղ ավելի շատ գնահատում է գոյություն ունեցող խնդիրները և դրանց լուծման մեթոդները: Ժամանակ առ ժամանակ օգտակար է, եթե կանոնավոր պրակտիկա կիրառվում, հակառակ դեպքում անմիջապես կմոռացվի:

Դասընթացն ինձ շատ ուրախացրեց: Ավագ գիտենալու խոսքն ինձ հետաքրքիր է: Բացի այդ, գրեթե ամբողջ ժամանակ, այսինքն՝ գծային ալգորիթմն ու նեյրոնային ցանցերի հիմնահարցերը, ես հիշում էի դեռ համալսարաններից, հետևաբար դժվարին խնդիրներ չունեի: Դասընթացի կառուցվածքը բավական ստանդարտ է: Դասընթացը բաժանված է շաբաթների: Ինչպես յուրաքանչյուր շաբաթում, կարճ թեստերի ժամանակ սկսվում են դասախոսությունները: Դասախոսություններից հետո տրվում է աշխատանք, որը պետք է կատարել, ուղարկել և ինքնաբերաբար գնահատվել: Կարճ ասած, դասընթացում ուսուցանվածը հետևյալն է:
— ծախսի ֆունկցիա
— գծային ռեգրեսիա
— գրադիենտային վերապահում
— նկարագրական կշիռների ամրագրում
— նորմալ հավասարում
— լոգիստիկ ռեգրեսիա
— բազմակողմանի դասակարգում (մեկի նկատմամբ բոլորը)
— նեյրոնային ցանցեր
— հետադարձ փոխանցում
— կանոնակարգում
— նախակարգում/բիաս
— ուսուցման գծեր
— սխալների չափանիշներ (ստուգում, հիշողություն, F1)
— Support Vector Machines (համալրված չափազանցման դասակարգում)
— K-պատկերներ
— Տնօրեն Երկրային Նախագծում
— անոմալիայի հայտնաբերում
— համագործակցային զետեղում (գնահատող համակարգ)
— ստոխաստիկ, փոքր խմբի, խմբային աստիճանական նվազեցումներ
— օնլայն ուսուցում
— քարտեզի նվազեցում
— առաստաղային վերլուծություն
Աղյուսակն անցնելուց հետո, այս թեմաներով իմացությունը պահպանվում էր: Երկու տարի անց, զարմանալիորեն, գրեթե ամենը մոռացվել էր: Ես խորհուրդ կտայի նրանց, ովքեր չունեն մեքենայական ուսուցման գիտելիքներ և ցանկանում են լավ հասկանալ հիմունքները շարունակելու համար.

Առաջին փորձ

Սեպտեմբերի ժայռին, ժամանակն էր մտածելու հարցազրույցի մասին: Որպեսզի կայքի միջոցով դիմելը բավականին դժվար գործ էր, ես սկսեցի որոնել ծանոթներից, ովքեր աշխատում էին Google-ում: Ընտրությունը կանգնեց datacompboy, քանի որ նա միակն էր, ում ես առանց посредник հայտնի էի (իհարկե, ոչ անձամբ): Նա համաձայնեց փոխանցել իմ ռեզյումեն, և շուտով որակավորողից ներկայացվեց նամակ, առաջարկելով ամրագրել ժամանում նրա օրացույցում առաջին խոսակցության համար: Մի քանի օրից տեղի ունեցավ զանգ: Փորձեցինք կապ հաստատել Hangouts-ով, բայց որակը ужасный էր, ուստի անցանք հեռախոսին: Նախ արագ քննարկեցինք ստանդարտ հարցեր, և հետո անցանք տեխնիկական սկրինինգին: Այն բաղկացած էր մի քանի հարցերից «ինչ complexity-ով է հասնում hash map-ում», «որ balance եղեգնեներ գիտեք»: Մոռացեք, եթե ունեք հիմնարար գիտելիք այդ մասին: Սկրինինգը լավ անցավ և արդյունքների հիման վրա որոշեցինք կազմակերպել առաջին հարցազրույցը մեկ շաբաթում:

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

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

Այս պատմությունից մի քանի եզրահանգում արեցի.

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

Պատրաստվել երկրորդ փորձին

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

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

Պլանը կատարեցի մեկ տարվա ընթացքում: Далее я опишу, что именно делал по каждому из пунктов.

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

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

Ես կարդացել եմ 5 գիրք՝ Algorithms, 4-րդ թողարկում (Sedgewick, Wayne), Introduction to Algorithms 3-րդ թողարկում (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4-րդ թողարկում (Gayle Laakmann), Programming Interviews Exposed 2-րդ թողարկում (Mongan, Suojanen, Giguere), Elements of Programming Interviews (Aziz, Lee, Prakash): դրանք կարելի է բաժանել 2 կատեգորիայի: Առաջինում են Sedgewick-ի և Cormen-ի գրքերը, որոնք վերաբերում են տեսությանը, մյուսները՝ հարցազրույցների պատրաստմանը: Sedgewick-ը գրքում պատմում է մոտավորապես այն, ինչ է իրենց դասերին: Պարզապես գրավոր տարբերակի մեջ: Եթե դուք անցել եք դասընթացը, չունեք մեծ իմաստ ուշադրություն դարձնել, բայց միևնույն է արժե կարդալ: Եթե դասընթացը չեք դիտել, ունենալու է իմաստ կարդալ: Cormen-ը ինձ շատ ձանձրալի թվաց: Իրականում, դժվարությամբ հաղթահարվեցի դրան: Այնտեղից միայն master theorem, ինչպես նաև մի քանի հազվադեպ օգտագործվող տվյալների կառուցվածքներ (Fibonacci heap, van Emde Boas tree, radix heap):

Հարցազրույցների պատրաստման համար անհրաժեշտ է կարդալ գոնե մեկ գիրք։ Դրանք բոլորը կառուցված են մոտավորապես մեկ սկզբունքով: Կենտրոնանում են մեծ տեխնոլոգիական ընկերությունների հարցազրույցի գործընթացի վրա, տրամադրում են ընդհանուր բաներ Computer Science-ից, խնդիրներ այդ ընդհանուր բաներից, լուծումներ խնդիրների և حلول حل ها: Առանձնացված երեքից, հավանաբար, առաջարկելու եմ Cracking the Coding Interview որպես հիմնական, իսկ մնացածը՝ ցանկությամբ:

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

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

Բայց ինչպես ես անմիջապես նկատեցի, կա ավելի հետաքրքիր տարբերակ: Դա մրցույթներն են (programming challenges կամ programming contests): Այս երեք կայքերում դրանք առկա են: Բայց LeetCode-ի հետ կա մի խնդիր՝ անհարմար ժամանակային գոտի: Այս պատճառով ես մասնակցեցի այդ կայքը: Hackerrank և CodeChef-ը բավական մեծ քանակությամբ տարբեր մրցույթներ են առաջարկում, որոնք տևում են 1 ժամից մինչև 10 օր: Տարբեր ձևաչափերով կան տարբեր կանոններ, բայց դրա մասին կարող եմ երկար պատմել: Կոնկրետ նպատակը, թե ինչու են մրցույթները լավ, դա մրցակցային (եւ կրկին tautology) տարրի ներդւծումը ուսումնական գործընթացում:

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

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

Ես ընդհանուր առմամբ մրցույթներում և պարզապես այնպես լուծել եմ ավելի քան 1000 խնդիր, ինչը մտնում էր պլանի մեջ: Ցավոք, հիմա ազատ ժամանակ չունեմ մրցութային ակտիվության շարունակության համար, ինչպես նաև նպատակի, որի համար կարելի է օգտագործել ազատ ժամանակը: Բայց դա հետաքրքիր էր: Խորհուրդ եմ տալիս նրանց, ովքեր հետաքրքրված են этим, գտնել միախոսիկներ: Երկուսով կամ խմբով շատ ավելի հետաքրքիր է: Ես այս ամենով զվարճանում էի ընկերոջս հետ, ուստի դա այնքան էլ լավ ստացվեց:

Տեսանյութերի դիտում

Սկիենայի գրքույկը կարդալով, ես սկզբունքորեն հետաքրքրվել եմ նրանով, ինչով նա զբաղվում է: Ինչպես Սեդջվիկը, նա էլ է համալսարանի պրոֆեսոր: Այս պատճառով, ցանցում կարող եք գտնել նրա դասընթացների տեսանյութեր: Խորհուրդ եմ տվել դիտել դասընթացը: COMP300E — Ծրագրավորման մարտահրավերներ — 2009 HKUST. Չեմ կարող ասել, որ շատ դուր եկավ: Նախ և առաջ, տեսանյութերի որակը այնքան էլ լավ չէ: Երկրորդ, ես ինքս չեմ փորձել լուծել դասընթացի շրջանակներում քննարկվող խնդիրները: Այսպիսով, ներգրավվածությունը այնքան էլ alta չի եղել:
Ինչպես նաև խնդիրները լուծելու գործընթացում, փորձում եմ գտնել ճիշտ ալգորիթմ, ես հանդիպել եմ Tushar Roy-ի տեսանյութերին: Նա աշխատել է Amazon-ում, իսկ հիմա աշխատում է Apple-ում: Ինչպես հետո պարզեցի, նա ունի YouTube ալիք, որտեղ նա հրապարակում է տարբեր ալգորիթմների քննումներ: Ստ article գրեցի այդ պահին ալիքը բերում էր 103 տեսանյութ: Եվ պետք է ասել, որ նրա կատարումը բավականին լավ է: Ես փորձել եմ դիտել ուրիշ հեղինակներին, բայց ինչ-որ կերպ դա ինձ դուր չի եկել: Այսպես թե այնպես, այս ալիքը հաստատ խորհուրդ եմ տալիս դիտել:

Դասընթացների անցումն

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

Անցնել այլ մարդկանց փորձը

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

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

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

Երկրորդ փորձ

Ահա, տարին անցավ: ուսման առումով շատ насыщված էր։ Բայց նոր աշնանը ես մոտեցել էի ավելի խորածիր տեսական գիտելիքների և մշակված գործնական հմտություններով: Մինչեւ ինձ սահմանված ժամկետի ավարտը մնացել էր մի քանի շաբաթ, ինչպես հանկարծ ինձ մտահոգեց Google-ից մի ռեքրոուտերին հասցեագրված նամակ, որտեղ հարցնում էր, արդյոք ես դեռ ցանկանում եմ աշխատել Google-ում և համաձայն եմ նրա հետ խոսել: Իհարկե, ես համաձայն, որ ցավում էի այդ մասին: Համաձայնվեցի մի շաբաթ անց հեռախոսով խոսել: Նրանք նաև խնդրեցին ինձ աութոացված ռեզյումե, որի մեջ ես ավելացրեցի այդ տարվա ընթացքում կատարած աշխատանքիս կարճ նկարագիրը:

Կյանքի մասին խոսելուց հետո որոշեցինք, որ հաջորդ շաբաթ կհոգային Hangouts հարցազրույց, ամեն ինչ ինչպես անցյալ տարում: Մեկ շաբաթ անց անցավ հարցազրույցի ժամանակը, բայց հարցազրույց անցկացնողը չայցելեց: 10 րոպե անց, ես արդեն սկսեցի անհանգստանալ, ինչպես հանկարծ ktoś ներխուժեց զրույց: Ինչպես պարզվեց մի քիչ հետ, իմ հարցազրույց անցկացնողը պատճառի պատճառով չկար, և նրան արագোখ գտան փոխարինող: Բանը մի փոքր անհարմար էր, թե՛ համակարգի կարգավորման առումով, թե՛ հարցազրույցի անցկացման առումով: Բայց հետո ամեն ինչ բարեկեցյալ եղավ: Ես արագ բացատրեցի խնդիրը, նկարագրեցի, որտեղ կարող են լինել ջարդեր, ինչպես դրանք շրջանցել: Քննարկեցինք մի քանի տարբերակ խնդրի և ալգորիթմի բարդությունը: Իսկ հետո ևս 5 րոպե խոսեցինք, ինժեներն պատմեց Մյունխենում աշխատանքի մասին իր տպավորությունները (Ցյուրիխում հուսով չէին մշակում), չէի հարցնում նաև:

Այդ նույն օրը ինձ հետ կապվեց ռեքրոուտերն ու հայտնեց, որ հարցազրույցը անցել է գերազանց և նրանք պատրաստ են ինձ հրավիրել հարցազրույցի գրասենյակ: Հաջորդ օրը հեռախոսով խոսեցինք Hangouts-ում և քննարկեցինք մանրամասները: Որպեսզի ինձ վիզա կազմելու անհրաժեշտություն ունենայի, որոշեցինք հարցազրույցը նշանակել մեկ ամիս անց:

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

  • Մարկերային թուղթ գնելու և դրա վրա հիշողությամբ գրելու 2-3 տասնյակ ամենահանրահայտ լինելիք ալգորիթմները: Նախօրոք 3-5 ից յուրաքանչյուր օր: Ուստի, ամեն մեկը մի քանի անգամ գրել էր:
  • Android-ի մասին տարբեր տեղեկություններ մտքում թարմացնել, որոնք չեմ օգտագործում ամեն օր:
  • Բարձր զգացողության մասին մի քանի վիդեո դիտելուց հետո, բոլորս էլ տեսանք

Ինչպես արդեն ասել եմ, ես միաժամանակ պատրաստում էի ուղևորության փաստաթղթերը։ Նախ ինձ տվեցին տեղեկատվություն հրավեր գրելու համար։ Հետո ես երկար ժամանակ փորձեցի պարզել, թե Կիպրոսում ով է Աշխարհի Վիզաներ անում Շվեյցարիայի համար, քանի որ Շվեյցարիայի դեսպանում դա չի արվում։ Քանի որ պարզվեց, որ դրա համար կազմոմի ավստրիական հյուպատոսությունը։ Զանգահարեցի և գրանցվեցի ընդունելության։ Там затребовали пачку документов, но ничего особо интересного. Фото, паспорт, вид на жительство, кучу разных справок и естественно пригласительное письмо. В то же время письмо все не приходило. В итоге я поехал с обычной распечаткой, и это вполне прокатило. Само же письмо пришло еще дня через 3, причем кипрский FedEx не сумел найти мой адрес, и пришлось ехать за ним самому. Заодно получил все в том же FedEx’e посылку, которую они тоже не смогли мне доставить, так как не нашли адрес, и которая там лежала с июня (5 месяцев, Карл). Так как я о ней не знал, что естественно и не предполагал, что она у них есть. Визу я получил вовремя, после чего мне забронировали отель и предложили варианты перелета. Варианты я подкорректировал, чтобы было удобнее. Прямых рейсов уже не было, в итоге летел туда через Афины, а обратно через Вену.

Այն բանից հետո, երբ ծրագրի բոլոր կողմից ձևավորումները գտնվում էին տեղերում, դեռ несколько дней прошло, և я сам же вылетел в Цюрих. Добрался без приключений. От аэропорта до города доехал на поезде — быстро и удобно. Нем немного поплутав по городу нашел отель и заселился. Так как отель был забронирован без еды, отужинал по соседству и завалился спать, ибо рейс был утренний и спать уже хотелось. На следующий день позавтракал в отеле (за отдельные деньги) и отправился в офис Google. Всего в Цюрихе у Google несколько офисов. Мое собеседование было не в центральном. И в общем-то офис выглядел достаточно обычно, так что не довелось мне посмотреть на все плюшки «нормального» офиса Google. Зарегистрировался у администратора и сел ждать. Через какое-то время вышел рекрутер и рассказал мне план на день, после чего отвел в комнату, где и должны были проходить интервью. Собственно в плане значились 3 интервью, обед и еще 2 интервью.

Первое собеседование

Աhead է հանդիպումը Android-ի վերաբերյալ։ Սակայն դա որևէ կերպ չի կապված ալգորիթմների հետ։ Անհանգստություն, սակայն։ Միանշանակ, առայժմ այդպես էլ ավելի սովորական է։ Պահանջեցին ստեղծել որոշակի UI կոմպոնենտ։ Նախ քննարկեցինք, թե ինչ և ինչպես։ Ներդրեցի լուծում RxJava-ով, նկարագրեցի, թե ինչն եմ անում և ինչու։ Ընթացքում ասացին, որ, իհարկե, դա լավ է, սակայն եկեք անենք Android-ի ֆրեյմվորկի միջոցներով։ Պատահեց, որ պետք էր գրել կոդը՝ տախտակին։ Եվ ոչ միայն կոմպոնենտը, այլ ամբողջ Activity-ը, որն օգտագործում է այդ կոմպոնենտը։ Չէի պատրաստված նման բաների։ Մի բան է գրել տախտակում ալգորիթմ՝ 30-50 տողերի, իսկ մեկ այլ բան է Android կոդը թելել, նույնիսկ եթե գնացի կրճատումների և մեկնաբանություններով, այն իսկապես ակնհայտ է։ Ստացվեց ինչ-որ տասը տախտակ։ Այո, խնդիրը լուծեցի, բայց դա տեսողականորեն շփոթվեցնում էր։

Հանդիպում երկու

Այս անգամ հանդիպումը եղել է ալգորիթմների վերաբերյալ։ Եվ հարցազրույց իրականացնողներն էին երկուսը։ Մեկը իրական հարցազրույց իրականացնողը, իսկ մյուսը երիտասարդ падаван (shadow interviewer)։ Պետք էր մտածել տվյալների կառուցվածք որոշակի հատկություններով։ Նախ սովորաբար քննարկեցինք խնդիրը։ Ես տարբեր հարցեր էի տալիս, հարցազրույց իրականացնողը պատասխանեց։ Մի որոշ ժամանակ անց խնդրեցին գրել մի քանի մեթոդներ նախագծված կառուցվածքի վրա տախտակին։ Այս անգամ մի քիչ ավելի հաջողակ եղավ, սակայն մի քանի փոքր սխալներով, որոնք ուղղեցի հարցազրույց իրականացնողի առաջարկությամբ։

Հանդիպում երեք

Այս անգամ System Design, որը հանկարծ գտնվեց Android։ Պետք էր մշակել ծրագիր՝ որոշակի ֆունկցիոնալությամբ։-discussed պահանջները ծրագրի, սերվերի, հաղորդակցության प्रोटोकոլի վերաբերյալ। Այնուհետև սկսեցի նկարագրել, թե quais կոմպոնենտները կամ գրադարանները ես կօգտագործեի ծրագրի կառուցմանը։ Այնուհետև, երբ հիշեցին Job Scheduler-ը, տեղի ունեցավ որոշակի խափանում։ Բանն այն է, որ ես այդպեսով երբեք չեմ աշխատել, քանի որ նրա դուրս գալու պահին պարզապես անցում կատարեցի մի ծրագրերի աջակցությանը, որտեղ խնդիրներ ծագելու մասին առանցքային խնդիրներ չկային։ Ավելի ուշ մշակված ծրագրերում նույնպես նույնը։ Այնինչ, տեսության մեջ գիտեմ, թե ինչ է դա, որ երբ և ինչպես է կիրառվում, սակայն փորձի չունեմ։ Այն հարցազրույց իրականացնողին, հավանաբար, դա շատ չն خوشեցրեց։ Հետո խնդրեցին գրել կոդ։ Այո, ծրագրի մշակմանը անմիջապես պետք է գրեք կոդ։ Մ nuevamente Android կոդը տախտակում։ Կրկին ստացվեց մի փոքր մտահոգիչ։

Ճաշ

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

Հանդիպում քառորդ

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

Հինգերորդ հարցումը

Միշտ կրկին Android հարցում։ Interesting, why did I spend a year learning algorithms?
Նախ նշվեց մի քանի պարզ հարցեր։ Այնուհետև հարցնողը վահանակի վրա գրել է կոդ և խնդրել է գտնել նրա խնդիրները։ Լուծեցի, բացատրեցի, ուղղեցի։ Diskusyունեցինք։ Իսկ հետո սկսվեցին մի քանի անսպասելի հարցեր, ինչպիսին էր "ինչն է անել X դասի Y մեթոդը", "ինչ է Y մեթոդի ներսում", "ինչով է զբաղվում Z դասը"։ Կարծես թե բանտացավի որոշ հարցերին, բայց հետո ասացի որ վերջերս իմ աշխատանքում դրանով չբախվել էի և բնականաբար չեմ հիշում, ով, ինչ և ինչպես է մանրամասն անում։ Նրա հետ հարցնողը հարցրել է, թե ինչ եմ անում հիմա։ Եվ հարցերը սկսեցին այս թեմայով։ Այստեղ ես արդեն պատասխանում էի առավել լավ։

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

Հետաքրքիր է, որ հարցումների արդյունքները մշակելու համար տևեց մեկուկես շաբաթ։ Այնուհետև ինձ ասացին, որ ես էի " biraz bar ın alttında"։ Այսինքն փոքր-ինչ չեն հաջողել։ Եթե կոնկրետ, ապա 2 հարցումներն անցել են լավ, 2-ը մի կողմ լավ, իսկ System Design շատ ու հայաթաթղթային էր։ Եթե միայն 3-ը լավ անցնեին, ապա կարելի կլիներ պայքարել, բայց այսպես առանց հնարավորության։ Վճռեցին, որ կարող են կրկին ներգրավվել մեկ տարի անց։

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

Ավարտ

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

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

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

Ի՞նչ կարող եմ ասել վերջին անգամ։ Եթե դուք աշխատում եք IT ոլորտում, պատրաստեք ինքներդ ձեզ Google-ի (Amazon, Microsoft, Apple և այլն) հարցազրույցների համար։ Հ可能ություններ կան, որ մի օր դուք այնտեղ կհայտնվեք։ Հետևաբար, նույնիսկ եթե չեք ցանկանա, վստահ եղեք, որ նման պատրաստության դեպքում ձեզ վատը չի լինի։ Այդ պահին, երբ հասկանում եք, որ կարող եք (արդյունավետ իրավիճակի դեպքում) անցնել հարցազրույցը այս ընկերություններից մեկում, ձեր առջև կբացվեն շատ ավելի շատ ճանապարհներ, քան ձեր պատրաստության մեկնարկից առաջ։ Եվ ամենը, ինչ ձեզ անհրաժեշտ կլինի ճանապարհի ընթացքում, դա նպատակ, ամբարտավանություն և ժամանակ է։ Կ튙ողականություն եմ մաղթում 🙂

Ընտանիք: habr.com

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster