Paano maghanda para sa isang panayam sa Google at mabigo ito. Dalawang beses

Paano maghanda para sa isang panayam sa Google at mabigo ito. Dalawang beses

Ang pamagat ng artikulo ay parang epic fail, ngunit sa katotohanan ang lahat ay hindi gaanong simple. At sa pangkalahatan, ang kuwentong ito ay nagtapos nang napakapositibo, bagaman hindi sa Google. Ngunit ito ay isang paksa para sa isa pang artikulo. Sa parehong artikulong ito, tatalakayin ko ang tungkol sa tatlong bagay: kung paano napunta ang proseso ng aking paghahanda, kung paano naganap ang mga panayam sa Google, at bakit, sa palagay ko, ang lahat ay hindi malinaw sa tila.

Kung paano ang lahat ng ito ay nagsimula

Isang malamig na gabi ng taglamig ng Cypriot, biglang naisip ko na ang aking kaalaman sa klasikal na Computer Science ay napakalayo sa average, at may kailangang gawin tungkol dito. Kung, sa pamamagitan ng paraan, ang isang tao ay hindi pa nagbabasa kung bakit ang gabi ay Cypriot at malamig, pagkatapos ay maaari mong malaman ang tungkol dito dito. Pagkatapos ng ilang pag-iisip, napagpasyahan na magsimula sa pamamagitan ng pagkuha ng online na kurso sa mga algorithm at istruktura ng data. Mula sa isa sa aking mga dating kasamahan ay narinig ko ang tungkol sa kurso ni Robert Sedgewick sa Coursera. Ang kurso ay binubuo ng dalawang bahagi (Bahagi 1 ΠΈ Bahagi 2). Kung biglang nagbago ang mga link, maaari mong palaging Google ang pangalan ng may-akda. Ang bawat bahagi ay tumatagal ng 6 na linggo. Ang mga lektura ay ibinibigay sa simula ng linggo, at sa loob ng linggo kailangan mo pa ring magsanay. Ang unang bahagi ng kurso ay sumasaklaw sa mga pangunahing istruktura ng data, mga pangunahing uri ng pag-uuri at ang pagiging kumplikado ng mga algorithm. Ang ikalawang bahagi ay mas advanced na, nagsisimula sa mga graph at nagtatapos sa mga bagay tulad ng Linear Programming at Intractability. Pagkatapos ng pag-iisip tungkol sa lahat ng nasa itaas, ako ay dumating sa konklusyon na ito ay eksakto kung ano ang kailangan ko. Sa pamamagitan ng paraan, maaaring magtanong ang isang matanong na mambabasa, ano ang kinalaman ng Google dito? At sa katunayan, hanggang sa sandaling ito ay wala siyang kinalaman dito. Ngunit kailangan ko ng isang layunin, dahil ang pag-aaral ng 12 linggo sa gabi na walang layunin ay medyo mahirap. Ano ang maaaring maging layunin ng pagkuha ng bagong kaalaman? Siyempre, ang kanilang aplikasyon sa pagsasanay. Sa pang-araw-araw na buhay ito ay medyo may problema, ngunit sa panahon ng isang pakikipanayam sa isang malaking kumpanya ito ay madali. Ang isang mabilis na Google ay nagpakita na ang Google (patawarin ang tautolohiya) ay isa sa pinakamalaking kumpanya sa Europa (at partikular na tinitingnan ko ang Europa) na nagsasagawa ng mga naturang panayam. Ibig sabihin, ang kanilang opisina ay matatagpuan sa Zurich, Switzerland. Kaya napagpasyahan - mag-aral tayo at pumunta para sa isang panayam sa Google.

Paghahanda para sa unang diskarte

Mabilis na lumipas ang 12 linggo at natapos ko ang dalawang kurso. Ang aking mga impression sa mga kurso ay higit pa sa positibo, at maaari kong irekomenda ang mga ito sa sinumang interesado. Nagustuhan ko ang mga kurso para sa mga sumusunod na dahilan:

  • Ang lecturer ay nagsasalita ng medyo malinaw na Ingles
  • Ang materyal ay mahusay na nakabalangkas
  • Napakarilag na mga presentasyon na nagpapakita sa loob ng bawat algorithm
  • Mahusay na pagpili ng materyal
  • Mga kawili-wiling pagsasanay
  • Awtomatikong sinusuri ang mga ehersisyo sa site, pagkatapos ay nabuo ang isang ulat

Ang trabaho ko sa mga kurso ay kadalasang naging ganito. Nakinig ako sa mga lecture sa loob ng 1-2 araw. Pagkatapos ay kumuha sila ng mabilis na pagsubok sa kanilang kaalaman sa materyal. Ang natitirang bahagi ng linggo ay ginawa ko ang ehersisyo sa ilang mga pag-ulit. Matapos ang una ay nakuha ko ang aking 30-70%, ang mga kasunod ay nagdala ng resulta sa 97-100%. Karaniwang kasama sa ehersisyo ang pagpapatupad ng ilang algorithm, hal. Pag-ukit ng tahi o bzip.

Matapos makumpleto ang mga kurso, napagtanto ko na maraming kaalaman ang kasama ng maraming kalungkutan. Kung dati alam ko lang na wala akong alam, ngayon ay napagtanto ko na ako pala ang hindi nakakaalam.

Dahil buwan pa lang ng Mayo noon, at nag-iskedyul ako ng panayam para sa taglagas, nagpasya akong ipagpatuloy ang aking pag-aaral. Matapos suriin ang mga kinakailangan para sa bakante, napagpasyahan na pumunta sa dalawang direksyon nang magkatulad: magpatuloy sa pag-aaral ng mga algorithm at kumuha ng pangunahing kurso sa machine learning. Para sa unang layunin, nagpasya akong lumipat mula sa mga kurso patungo sa isang libro at pinili ang monumental na gawain ni Steven Skiena na β€œAlgorithms. Ang Algorithm Design Manual. Hindi bilang monumental bilang Knut's, ngunit pa rin. Para sa pangalawang layunin, bumalik ako sa Coursera at nag-sign up para sa kurso ni Andrew Ng. Pag-aaral ng Machine.

Lumipas ang isa pang 3 buwan at natapos ko ang kurso at libro.

Magsimula tayo sa aklat. Ang pagbabasa ay naging medyo kawili-wili, bagaman hindi madali. Sa prinsipyo, irerekomenda ko ang aklat, ngunit hindi kaagad. Sa pangkalahatan, ang aklat ay nagbibigay ng mas malalim na pagtingin sa aking natutunan sa kurso. Dagdag pa, natuklasan ko (mula sa isang pormal na pananaw) ang mga bagay tulad ng heuristics at dynamic na programming. Naturally, ginamit ko ang mga ito noon, ngunit hindi ko alam kung ano ang tawag sa kanila. Naglalaman din ang aklat ng ilang mga kuwento mula sa buhay ng may-akda (Kuwento ng Digmaan), na medyo nagpapalabnaw sa akademikong katangian ng pagtatanghal. Sa pamamagitan ng paraan, ang ikalawang kalahati ng libro ay maaaring tanggalin; naglalaman ito ng isang paglalarawan ng mga umiiral na mga problema at mga pamamaraan para sa paglutas ng mga ito. Ito ay kapaki-pakinabang kung ito ay regular na ginagamit sa pagsasanay, kung hindi man ito ay malilimutan kaagad.

Ako ay higit na nasiyahan sa kurso. Malinaw na alam ng may-akda ang kanyang mga bagay at nagsasalita sa isang kawili-wiling paraan. Dagdag pa sa isang makatarungang halaga nito, katulad ng linear algebra at ang mga pangunahing kaalaman ng mga neural network, naalala ko mula sa unibersidad, kaya hindi ako nakaranas ng anumang partikular na paghihirap. Ang istraktura ng kurso ay medyo pamantayan. Ang kurso ay nahahati sa mga linggo. Linggo-linggo ay may mga lecture na may halong maikling pagsusulit. Pagkatapos ng mga lektura, bibigyan ka ng isang takdang-aralin na kailangan mong gawin, isumite, at ito ay awtomatikong susuriin. Sa madaling sabi, ang listahan ng mga bagay na itinuro sa kurso ay ang mga sumusunod:
- function ng gastos
- linear regression
- gradient descent
- feature scaling
- normal na equation
- logistic regression
- pag-uuri ng multiclass (isa kumpara sa lahat)
- mga neural network
- backpropagation
- regularisasyon
β€” bias/variance
- mga kurba ng pag-aaral
β€” mga sukatan ng error (katumpakan, recall, F1)
β€” Suporta sa Vector Machines (malaking margin classification)
β€” K-ibig sabihin
β€”Pagsusuri ng Pangunahing Bahagi
- pagtuklas ng anomalya
β€” collaborative na pag-filter (recommeder system)
β€” stochastic, mini-batch, batch gradient descents
- online na pag-aaral
- mapa bawasan
- pagsusuri sa kisame
Matapos makumpleto ang kurso, isang pag-unawa sa lahat ng mga paksang ito ay naroroon. Pagkatapos ng 2 taon, halos lahat ay natural na nakalimutan. Inirerekomenda ko ito sa mga hindi pamilyar sa machine learning at gustong makakuha ng mahusay na pag-unawa sa mga pangunahing bagay upang magpatuloy.

Unang takbo

Setyembre na at oras na para mag-isip tungkol sa isang pakikipanayam. Dahil ang pag-apply sa pamamagitan ng site ay medyo nakapipinsala, nagsimula akong maghanap ng mga kaibigan na nagtatrabaho sa Google. Ang pagpili ay nahulog sa datacompboy, dahil siya lang ang direktang kilala ko (kahit hindi personally). Pumayag siyang ipasa ang aking resume, at hindi nagtagal ay nakatanggap ako ng liham mula sa recruiter na nag-aalok na magpareserba ng puwang sa kanyang kalendaryo para sa unang pag-uusap. Makalipas ang ilang araw, naganap ang tawag. Sinubukan naming makipag-ugnayan sa pamamagitan ng Hangouts, ngunit ang kalidad ay napakasama, kaya lumipat kami sa telepono. Una, mabilis naming tinalakay ang pamantayan kung paano, bakit at bakit, at pagkatapos ay lumipat sa teknikal na screening. Binubuo ito ng isang dosenang tanong sa diwa ng "ano ang kahirapan ng pagpasok sa isang hash map", "anong mga balanseng puno ang alam mo." Hindi mahirap kung mayroon kang pangunahing kaalaman sa mga bagay na ito. Naging maayos ang screening at base sa resulta, napagpasyahan nilang ayusin ang unang panayam sa loob ng isang linggo.

Naganap din ang panayam sa pamamagitan ng Hangouts. Una ay pinag-usapan nila ako ng mga 5 minuto, pagkatapos ay lumipat sa problema. Ang problema ay sa mga graph. Mabilis kong napagtanto kung ano ang kailangang gawin, ngunit pinili ko ang maling algorithm. Noong nagsimula akong magsulat ng code napagtanto ko ito at lumipat sa isa pang opsyon, na natapos ko. Ang tagapanayam ay nagtanong ng ilang mga katanungan tungkol sa pagiging kumplikado ng algorithm at nagtanong kung maaari itong gawin nang mas mabilis. Kahit papaano ay naging mapurol ako at hindi ko magawa. Sa puntong ito, natapos na ang oras at nagpaalam na kami. Pagkatapos, pagkaraan ng humigit-kumulang 10 minuto, napagtanto ko na sa halip na ang Dijkstra algorithm na ginamit ko, sa partikular na problemang ito ay maaari kong gamitin ang breadth-first search, at ito ay magiging mas mabilis. Pagkaraan ng ilang oras, tumawag ang recruiter at sinabing naging maayos ang interbyu sa kabuuan at dapat ayusin ang isa pa. Nagkasundo kami sa isang linggo.

This time mas lumala ang mga pangyayari. Kung sa unang pagkakataon ang tagapanayam ay palakaibigan at palakaibigan, sa pagkakataong ito ay medyo malungkot siya. Hindi ko maisip kaagad ang problema, kahit na ang mga ideya na naisip ko ay maaaring, sa prinsipyo, ay humantong sa solusyon nito. Sa huli, pagkatapos ng ilang mga senyas mula sa tagapanayam, ang solusyon ay dumating sa akin. Sa pagkakataong ito, ito ay naging isang malawak na paghahanap muli, mula lamang sa ilang mga punto. Isinulat ko ang mga solusyon, nakilala ang mga ito sa oras, ngunit nakalimutan ang tungkol sa mga kaso sa gilid. Pagkaraan ng ilang oras, tumawag ang recruiter at sinabi na sa pagkakataong ito ang tagapanayam ay hindi nasisiyahan, dahil sa kanyang opinyon kailangan ko ng napakaraming mga pahiwatig (3 o 4 na piraso) at patuloy kong binago ang code habang nagsusulat. Batay sa mga resulta ng dalawang panayam, napagpasyahan na huwag nang magpatuloy, ngunit ipagpaliban ang susunod na panayam sa loob ng isang taon, kung nais ko. Kaya naman nagpaalam na kami.

At mula sa kwentong ito gumawa ako ng ilang konklusyon:

  • Ang teorya ay mabuti, ngunit kailangan mong mabilis na i-navigate ito
  • Ang teorya na walang pagsasanay ay hindi makakatulong. Kailangan nating lutasin ang mga problema at dalhin ang coding sa pagiging awtomatiko.
  • Marami ang nakasalalay sa tagapanayam. At walang magagawa tungkol dito.

Paghahanda para sa pangalawang pagtakbo

Matapos isipin ang sitwasyon, nagpasya akong subukan muli sa isang taon. At bahagyang na-edit ang layunin. Kung kanina ang pangunahing layunin ay mag-aral, at ang isang pakikipanayam sa Google ay parang isang malayong karot, ngayon ang pagpasa sa isang pakikipanayam ay ang layunin, at ang pag-aaral ay ang paraan.
Kaya, isang bagong plano ang binuo, na kinabibilangan ng mga sumusunod na punto:

  • Ipagpatuloy ang pag-aaral ng teorya sa pamamagitan ng pagbabasa ng mga libro at artikulo.
  • Lutasin ang mga problema sa algorithm sa halagang 500-1000 piraso.
  • Ipagpatuloy ang pag-aaral ng teorya sa pamamagitan ng panonood ng mga video.
  • Ipagpatuloy ang pag-aaral ng teorya sa pamamagitan ng mga kurso.
  • Pag-aralan ang mga karanasan ng ibang tao sa mga panayam sa Google.

Nakumpleto ko ang plano sa loob ng isang taon. Susunod na ilalarawan ko kung ano ang eksaktong ginawa ko para sa bawat isa sa mga punto.

Mga libro at artikulo

Hindi ko na matandaan ang bilang ng mga artikulong nabasa ko; binasa ko ang mga ito sa Russian at sa Ingles. Marahil ang pinakakapaki-pakinabang na site ang isang ito. Dito mahahanap mo ang isang paglalarawan ng isang malaking bilang ng mga kagiliw-giliw na algorithm na may mga halimbawa ng code.

Nagbasa ako ng 5 libro: Algorithms, 4th edition (Sedgewick, Wayne), Introduction to Algorithms 3rd Edition (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4th edition (Gayle Laakmann), Programming Interviews Exposed 2nd edition (Mongan, Suojanen , Giguere), Mga Elemento ng Programming Interview (Aziz, Lee, Prakash). Maaari silang nahahati sa 2 kategorya. Kasama sa una ang mga aklat nina Sedgwick at Corman. Ito ay isang teorya. Ang natitira ay paghahanda para sa panayam. Sinasabi ni Sedgwick ang tungkol sa parehong bagay sa aklat tulad ng sa kanyang mga kurso. Sa pagsulat lang. Walang gaanong punto sa pagbabasa nito nang mabuti kung kinuha mo ang kurso, ngunit sulit pa rin itong suriin. Kung hindi mo pa napapanood ang kurso, makatuwirang basahin ito. Masyadong boring sa akin si Cormen. Sa totoo lang, nahirapan ako sa pag-master nito. Inalis ko na lang doon master theory, at ilang bihirang ginagamit na istruktura ng data (Fibonacci heap, van Emde Boas tree, radix heap).

Ito ay nagkakahalaga ng pagbabasa ng hindi bababa sa isang libro upang maghanda para sa isang pakikipanayam. Lahat sila ay binuo sa humigit-kumulang sa parehong prinsipyo. Inilalarawan nila ang proseso ng pakikipanayam sa malalaking kumpanya ng teknolohiya, nagbibigay ng mga pangunahing bagay mula sa Computer Science, mga problema para sa mga pangunahing bagay na ito, mga solusyon sa mga problema at pagsusuri ng mga solusyon. Sa tatlong nasa itaas, malamang na inirerekomenda ko ang Pag-crack ng Coding Interview bilang pangunahing isa, at ang iba ay opsyonal.

Mga problema sa algorithm

Ito marahil ang pinakakawili-wiling punto ng paghahanda. Maaari mong, siyempre, umupo at lutasin ang mga problema nang hangal. Mayroong maraming iba't ibang mga site para dito. Pangunahing ginamit ko ang tatlo: Hackerrank, CodeChef ΠΈ LeetCode. Sa CodeChef, ang mga problema ay nahahati sa kahirapan, ngunit hindi ayon sa paksa. Sa Hackerrank pareho sa pagiging kumplikado at ayon sa paksa.

Ngunit tulad ng agad kong nalaman para sa aking sarili, mayroong isang mas kawili-wiling paraan. At ito ay mga kumpetisyon (programming challenges o programming contests). Lahat ng tatlong mga site ay nagbibigay sa kanila. Totoo, may problema sa LeetCode - isang hindi maginhawang time zone. Kaya nga hindi ako sumali sa site na ito. Ang Hackerrank at CodeChef ay nagbibigay ng medyo malaking bilang ng iba't ibang mga kumpetisyon, na tumatagal mula 1 oras hanggang 10 araw. Ang iba't ibang mga format ay may iba't ibang mga panuntunan, ngunit maaari naming pag-usapan iyon nang mahabang panahon. Ang pangunahing punto kung bakit ang mga kumpetisyon ay mabuti ay ang pagpapakilala ng isang mapagkumpitensya (at muli tautolohiya) elemento sa proseso ng pag-aaral.

Sa kabuuan, lumahok ako sa 37 kumpetisyon sa Hackerrank. Sa mga ito, 32 ang rating, at 5 ang na-sponsor (nakatanggap pa nga ako ng $25 sa isa sa kanila) o para masaya. Sa mga ranggo ako ay nasa nangungunang 10% 4 beses, sa nangungunang 11% 12 beses at nasa nangungunang 5% 25 beses. Ang pinakamahusay na mga resulta ay 27/1459 sa 3 oras at 22/9721 sa linggo.

Lumipat ako sa CodeChef nang ang Hackerrank ay nagsimulang magho-host ng mga kumpetisyon nang hindi gaanong madalas. Sa kabuuan ay nakasali ako sa 5 mga kumpetisyon. Ang pinakamahusay na marka ay 426/5019 sa sampung araw na kumpetisyon.

Sa kabuuan, sa mga kumpetisyon at tulad nito, nalutas ko ang higit sa 1000 mga problema, na akma sa plano. Ngayon, sa kasamaang-palad, walang libreng oras upang ipagpatuloy ang mga aktibidad na mapagkumpitensya, tulad ng walang layunin kung saan ang walang libreng oras ay maaaring iwaksi. Ngunit ito ay masaya. Inirerekomenda ko na ang mga interesado dito ay humanap ng mga taong katulad ng pag-iisip. Magkasama o sa isang grupo ito ay mas kawili-wili. Naging masaya ako kasama ang isang kaibigan, kaya marahil ito ay naging maayos.

Panoorin ang video

Matapos basahin ang libro ni Skiena, naging interesado ako sa kanyang ginagawa. Tulad ni Sedgwick, isa siyang propesor sa unibersidad. Kaugnay nito, ang mga video ng kanyang mga kurso ay makikita online. Nagpasya akong suriin ang kurso COMP300E - Mga Hamon sa Programming - 2009 HKUST. Hindi ko masasabi na nagustuhan ko ito ng sobra. Una sa lahat, hindi masyadong maganda ang kalidad ng video. Pangalawa, hindi ko sinubukang lutasin ang mga problemang tinalakay sa kurso sa aking sarili. Kaya hindi masyadong mataas ang engagement.
Gayundin, habang nilulutas ang mga problema, sinusubukang hanapin ang tamang algorithm, nakita ko ang video ni Tushar Roy. Nagtrabaho siya sa Amazon at ngayon ay nagtatrabaho sa Apple. Tulad ng nalaman ko sa aking sarili, mayroon siya channel ng youtube, kung saan nag-post siya ng pagsusuri ng iba't ibang algorithm. Sa oras ng pagsulat, ang channel ay naglalaman ng 103 mga video. At dapat kong sabihin na ang kanyang pagsusuri ay ginawa nang napakahusay. Sinubukan kong panoorin ang ibang mga may-akda, ngunit sa anumang paraan ay hindi ito gumana. Kaya siguradong mairerekomenda ko ang channel na ito para sa panonood.

Kumukuha ng mga kurso

Wala naman akong ginawang espesyal dito. Nanood ng video mula sa Nanodegree ng Android Developer ng Google at kumuha ng kurso mula sa ITMO Paano Manalo sa Coding Competitions: Secrets of Champions. Ang nanodegree ay medyo maganda, kahit na natural na wala akong natutunan na bago mula dito. Ang kurso mula sa ITMO ay medyo skewed sa mga tuntunin ng teorya, ngunit ang mga problema ay kawili-wili. Hindi ko inirerekumenda na simulan ito, ngunit sa prinsipyo ito ay oras na ginugol nang maayos.

Matuto mula sa mga karanasan ng ibang tao

Siyempre, sinubukan ng maraming tao na makapasok sa Google. Ang ilan ay nakuha ito, ang ilan ay hindi. Ang ilan ay nagsulat ng mga artikulo tungkol dito. Sa mga kawili-wiling bagay na malamang na babanggitin ko itong isa ΠΈ itong isa. Sa unang kaso, ang tao ay naghanda para sa kanyang sarili ng isang listahan ng kung ano ang kailangan niyang matutunan upang maging isang Software Engineer at makapasok sa Google. Sa huli ay napunta ito sa Amazon, ngunit hindi na iyon mahalaga. Ang pangalawang manwal ay isinulat ng inhinyero ng Google na si Larisa Agarkova (Larrr). Bilang karagdagan sa dokumentong ito, maaari mo ring basahin kanyang blog.

Makatuwirang basahin ang mga review ng mga panayam sa Glassdoor. Ang mga ito ay higit pa o hindi gaanong magkatulad, ngunit maaari kang makakuha ng ilang kapaki-pakinabang na impormasyon.

Hindi ako magbibigay ng mga link sa iba pang maliliit na artikulo; madali mong mahahanap ang mga ito sa Google.

Pangalawang pagtakbo

At ngayon lumipas ang isang taon. Napakatindi pala sa pag-aaral. Ngunit nilapitan ko ang bagong taglagas na may mas malalim na teoretikal na kaalaman at nakabuo ng mga praktikal na kasanayan. May ilang linggo pa ang natitira bago matapos ang taon na inilaan sa akin para sa paghahanda, nang biglang may dumating na sulat mula sa isang recruiter mula sa Google, kung saan tinanong niya ako kung may pagnanais pa akong magtrabaho sa Google at Naisipan kong kausapin siya. Natural, wala akong pakialam. Napagkasunduan naming tumawag sa isang linggo. Hiniling din nila sa akin ang isang na-update na resume, kung saan nagdagdag ako ng maikling paglalarawan ng kung ano ang ginawa ko sa taon sa trabaho at sa pangkalahatan.

Pagkatapos makipag-usap habang buhay, napagpasyahan namin na sa isang linggo ay magkakaroon ng isang pakikipanayam sa Hangout, tulad noong nakaraang taon. Lumipas ang isang linggo, oras na para sa panayam, ngunit hindi sumipot ang tagapanayam. Lumipas ang 10 minuto, nagsisimula na akong kabahan, nang biglang may sumulpot sa chat. Tulad ng nangyari nang ilang sandali, ang aking tagapanayam sa ilang kadahilanan ay hindi maaaring lumitaw at ang isang kapalit ay agarang natagpuan para sa kanya. Ang tao ay medyo hindi handa pareho sa mga tuntunin ng pag-set up ng computer at sa mga tuntunin ng pagsasagawa ng panayam. Ngunit pagkatapos ay naging maayos ang lahat. Mabilis kong nalutas ang problema, inilarawan kung saan posible ang mga pitfalls, at kung paano maiiwasan ang mga ito. Tinalakay namin ang ilang iba't ibang bersyon ng problema at ang pagiging kumplikado ng algorithm. Pagkatapos ay nag-usap kami ng isa pang 5 minuto, sinabi sa amin ng inhinyero ang kanyang mga impresyon ng pagtatrabaho sa Munich (malamang na hindi sila nakahanap ng isang kagyat na kapalit sa Zurich), at pagkatapos ay naghiwalay kami.

Noong araw ding iyon, nakipag-ugnayan sa akin ang recruiter at sinabing naging maayos naman ang interbyu at handa nila akong imbitahan sa isang interbyu sa opisina. Kinabukasan tumawag kami sa pamamagitan ng Hangouts at tinalakay ang mga detalye. Dahil kailangan kong mag-apply para sa isang visa, nagpasya kaming mag-iskedyul ng isang panayam sa isang buwan.

Habang naghahanda ako ng mga dokumento, sabay-sabay kong tinalakay ang paparating na panayam sa recruiter. Ang isang karaniwang panayam sa Google ay binubuo ng 4 na algorithmic na panayam at isang panayam sa Disenyo ng System. Ngunit, dahil nag-a-apply ako para sa isang trabaho bilang isang developer ng Android, sinabi sa akin na ang bahagi ng panayam ay magiging partikular sa Android. Hindi ko maalis sa recruiter kung ano talaga at kung ano ang magiging mga detalye. Sa pagkakaintindi ko, ito ay ipinakilala kamakailan lamang at siya mismo ay hindi masyadong aware. Nag-sign up din ako para sa dalawang sesyon ng pagsasanay: kung paano makapasa sa isang algorithmic na panayam at kung paano makapasa sa isang panayam sa Disenyo ng System. Ang mga session ay may average na pagiging kapaki-pakinabang. Doon din, walang makapagsasabi sa akin kung ano ang itatanong nila sa mga developer ng Android. Samakatuwid, ang aking paghahanda para sa buwang ito ay bumagsak sa mga sumusunod:

  • Pagbili ng marker board at pagsulat ng 2-3 dosena ng mga pinakasikat na algorithm dito mula sa memorya. 3-5 piraso bawat araw. Sa kabuuan, ang bawat isa ay isinulat nang maraming beses.
  • I-refresh ang iyong memorya ng iba't ibang impormasyon sa Android na hindi mo ginagamit araw-araw
  • Panonood ng ilang video tungkol sa Big Scale at mga bagay na katulad niyan

Gaya ng nasabi ko na, kasabay ng paghahanda ko ng mga dokumento para sa biyahe. Upang magsimula, humingi sila sa akin ng impormasyon upang makagawa ng liham ng imbitasyon. Pagkatapos ay sinubukan ko nang mahabang panahon upang malaman kung sino sa Cyprus ang nag-isyu ng mga visa sa Switzerland, dahil ang Swiss embassy ay hindi nakikitungo dito. Tulad ng nangyari, ginagawa ito ng konsulado ng Austrian. Tumawag ako at nagpa-appointment. Humingi sila ng isang grupo ng mga dokumento, ngunit walang partikular na interesante. Larawan, pasaporte, permit sa paninirahan, isang grupo ng iba't ibang mga sertipiko at, siyempre, isang liham ng imbitasyon. Samantala ang sulat ay hindi dumating. Sa huli, nagpunta ako sa isang regular na pag-print at ito ay gumana nang maayos. Dumating mismo ang sulat makalipas ang 3 araw, at hindi mahanap ng Cypriot FedEx ang aking address at kinailangan kong kunin ito mismo. Kasabay nito, nakatanggap ako ng isang parsela mula sa parehong FedEx, na hindi rin nila maihatid sa akin, dahil hindi nila nakita ang address, at nakahiga doon mula noong Hunyo (5 buwan, Karl). Dahil hindi ko alam ang tungkol dito, natural, hindi ko inakala na mayroon sila nito. Natanggap ko ang aking visa sa oras, pagkatapos ay nag-book sila sa akin ng isang hotel at nag-alok sa akin ng mga pagpipilian sa paglipad. Inayos ko ang mga opsyon para gawin itong mas maginhawa. Wala nang mga direktang flight, kaya lumipad ako doon sa pamamagitan ng Athens at pabalik sa pamamagitan ng Vienna.

After all the formalities with the trip were settled, ilang araw pa ang lumipas at lumipad na talaga ako papuntang Zurich. Nakarating doon ng walang insidente. Mula sa paliparan hanggang sa lungsod sumakay ako ng tren - mabilis at maginhawa. Matapos maglibot ng kaunti sa lungsod, nakakita ako ng isang hotel at nag-check in. Dahil na-book ang hotel na walang pagkain, naghapunan ako sa tabi at natulog, dahil ang flight ay umaga at gusto ko nang matulog. Kinabukasan nag-almusal ako sa hotel (para sa dagdag na pera) at pumunta sa opisina ng Google. Ang Google ay may ilang mga opisina sa Zurich. Ang aking panayam ay wala sa gitna. At sa pangkalahatan, ang opisina ay mukhang medyo ordinaryo, kaya hindi ako nagkaroon ng pagkakataong tingnan ang lahat ng mga goodies ng isang "normal" na opisina ng Google. Nagparehistro ako sa administrator at umupo para maghintay. Pagkaraan ng ilang oras, lumabas ang recruiter at sinabi sa akin ang plano para sa araw, pagkatapos ay dinala niya ako sa silid kung saan gaganapin ang mga panayam. Sa totoo lang, kasama sa plano ang 3 panayam, tanghalian at 2 pang panayam.

Panayam numero uno

Ang unang panayam ay sa Android lamang. At wala itong kinalaman sa mga algorithm sa lahat. Surprise, bagaman. Well, okay, ito ay mas karaniwan sa ganitong paraan. Hiniling sa amin na gumawa ng isang partikular na bahagi ng UI. Una naming tinalakay kung ano at paano. Nag-alok siyang gumawa ng solusyon gamit ang RxJava, inilarawan kung ano ang eksaktong gagawin niya at bakit. Sinabi nila na ito ay tiyak na mabuti, ngunit gawin natin ito gamit ang Android framework. At sa parehong oras ay isusulat namin ang code sa pisara. At hindi lamang isang bahagi, ngunit ang buong Aktibidad na gumagamit ng bahaging ito. Ito ang hindi ko naging handa. Isang bagay ang magsulat ng 30-50 line algorithm sa board, at isa pang bagay ang magsulat ng mga pansit ng Android code, kahit na may mga pagdadaglat at komento sa diwa ng "well, hindi ko isusulat iyon, dahil halata na." Ang resulta ay isang uri ng vinaigrette para sa 3 board. Yung. Nalutas ko ang problema, ngunit mukhang pipi.

Pang-dalawang panayam

Sa pagkakataong ito ang panayam ay tungkol sa mga algorithm. At may dalawang tagapanayam. Ang isa ay ang aktwal na tagapanayam, at ang pangalawa ay isang batang padawan (tagapanayam ng anino). Kinailangan na makabuo ng istraktura ng data na may ilang partikular na katangian. Una, tinalakay namin ang problema gaya ng dati. Iba't ibang tanong ko, sagot ng interviewer. Pagkaraan ng ilang oras, hiniling sa kanila na magsulat ng ilang mga pamamaraan ng naimbentong istraktura sa pisara. Sa pagkakataong ito ay mas marami o hindi gaanong matagumpay ako, kahit na may ilang maliliit na pagkakamali, na itinuwid ko sa pahiwatig ng tagapanayam.

Pangatlong panayam

This time System Design, na bigla ding naging Android. Ito ay kinakailangan upang bumuo ng isang application na may ilang mga pag-andar. Tinalakay namin ang mga kinakailangan para sa application, server, at protocol ng komunikasyon. Susunod, sinimulan kong ilarawan kung anong mga bahagi o aklatan ang gagamitin ko sa pagbuo ng application. At pagkatapos, kapag binanggit ang Job Scheduler, nagkaroon ng ilang pagkalito. Ang punto ay hindi ko ito ginamit sa pagsasanay, dahil sa oras ng paglabas nito ay lumipat lang ako sa pagsuporta sa mga application kung saan walang mga gawain para sa paggamit nito. Ang parehong bagay ay nangyari sa pagbuo ng mga kasunod. Ibig sabihin, sa teorya, alam ko kung ano ang bagay na ito, kailan at paano ito ginagamit, ngunit wala akong karanasan sa paggamit nito. At mukhang hindi ito masyadong nagustuhan ng interviewer. Pagkatapos ay hiniling nila sa akin na magsulat ng ilang code. Oo, kapag bumubuo ng isang application kailangan mo agad na magsulat ng code. Muli Android code sa board. Nakakatakot na naman.

Tanghalian

May isa pang taong darating, ngunit hindi. At nagkakamali ang Google. Bilang resulta, sumama ako sa tanghalian kasama ang dating tagapanayam, ang kanyang kasamahan, at ilang sandali pa ay sumali na ang susunod na tagapanayam. Medyo disente ang tanghalian. Muli, dahil hindi ito ang pangunahing opisina sa Zurich, ang silid-kainan ay mukhang karaniwan, bagaman napakaganda.

Pang-apat na panayam

Panghuli, ang mga algorithm sa kanilang pinakadalisay na anyo. Nalutas ko ang unang problema nang mabilis at agad-agad nang epektibo, bagama't napalampas ko ang isang gilid na kaso, ngunit sa prompt ng tagapanayam (binigay niya ang pinakadulo na kaso na ito) nakita ko ang problema at naitama ito. Siyempre, kailangan kong isulat ang code sa pisara. Pagkatapos ay ibinigay ang isang katulad na gawain, ngunit mas mahirap. Para dito, nakakita ako ng ilang di-optimal na solusyon at halos natagpuan ang pinakamainam, 5-10 minuto ay hindi sapat upang tapusin ang pag-iisip. Well, wala akong oras para isulat ang code para dito.

Panayam bilang limang

At muli Android interview. Nagtataka ako kung bakit nag-aral ako ng mga algorithm sa buong taon?
Sa una ay may ilang simpleng tanong. Pagkatapos ay nagsulat ang tagapanayam ng code sa pisara at hiniling na maghanap ng mga problema dito. Natagpuan ito, ipinaliwanag ito, naayos ito. Napag-usapan. At pagkatapos ay nagsimula ang ilang mga hindi inaasahang tanong sa diwa ng "ano ang ginagawa ng pamamaraan Y sa klase X", "ano ang nasa loob ng pamamaraan Y", "ano ang ginagawa ng klase Z". Siyempre, may sinagot ako, ngunit pagkatapos ay sinabi ko na hindi ko pa ito nakatagpo sa aking trabaho kamakailan at natural na hindi ko matandaan kung sino ang gumagawa ng kung ano at paano nang detalyado. Pagkatapos noon, tinanong ng tagapanayam kung ano ang ginagawa ko ngayon. At ang mga tanong ay napunta sa paksang ito. Mas maganda na ang sagot ko dito.

Pagkatapos ng huling panayam, kinuha nila ang aking pass, binati ako ng swerte at pinapunta ako. Lumibot ako ng kaunti sa lungsod, naghapunan at nagpunta sa hotel, kung saan ako natulog, dahil ang flight ay muli ng madaling araw. Kinabukasan ay ligtas akong nakarating sa Cyprus. Sa kahilingan ng recruiter, sumulat ako ng feedback sa panayam at pinunan ang isang form sa isang espesyal na serbisyo upang ibalik ang perang ginastos. Sa lahat ng gastos, ang Google ay direktang nagbabayad lamang para sa mga tiket. Ang hotel, pagkain at paglalakbay ay binabayaran ng kandidato. Pagkatapos ay punan namin ang form, ilakip ang mga resibo at ipadala ito sa isang espesyal na opisina. Pinoproseso nila ito at naglilipat ng pera sa account nang medyo mabilis.

Tumagal ng isang linggo at kalahati upang maproseso ang mga resulta ng panayam. Pagkatapos nito ay sinabihan ako na ako ay "medyo nasa ibaba ng bar." Ibig sabihin, medyo nahulog ako. Mas partikular, 2 panayam ang naging maayos, 2 medyo hindi maganda, at System Design ay hindi masyadong maganda. Ngayon, kung hindi bababa sa 3 ang naging maayos, kung gayon kami ay makakalaban, kung hindi, walang pagkakataon. Nag-alok silang babalik sa isang taon.

Sa una, siyempre, nabalisa ako, dahil maraming pagsisikap ang ginugol sa paghahanda, at sa oras ng pakikipanayam ay iniisip ko na ang pag-alis sa Cyprus. Ang pagsali sa Google at paglipat sa Switzerland ay tila isang magandang opsyon.

Konklusyon

At narito na tayo sa huling bahagi ng artikulo. Oo, dalawang beses akong nabigo sa panayam sa Google. Ito ay malungkot. Marahil ay magiging kawili-wiling magtrabaho doon. Ngunit, maaari mong tingnan ang bagay mula sa kabilang panig.

  • Sa isang taon at kalahati, natutunan ko ang isang malaking halaga ng mga bagay na may kaugnayan sa pagbuo ng software.
  • Naging masaya ako sa pagsali sa mga patimpalak sa programming.
  • Nagpunta ako sa Zurich ng ilang araw. Kailan ulit ako pupunta doon?
  • Nagkaroon ako ng isang kawili-wiling karanasan sa pakikipanayam sa isa sa pinakamalaking kumpanya ng IT sa mundo.

Kaya, lahat ng nangyari sa loob ng isa at kalahating taon na ito ay maituturing na pagsasanay, o pagsasanay. At ang mga resulta ng pagsasanay na ito ay nagpadama sa kanilang sarili. Ang aking ideya na umalis sa Cyprus ay matured (dahil sa ilang mga pangyayari sa pamilya), matagumpay kong naipasa ang ilang mga panayam sa isa pang kilalang kumpanya at lumipat pagkatapos ng 8 buwan. Ngunit iyon ay isang ganap na naiibang kuwento. Gayunpaman, sa palagay ko ay dapat ko pa ring pasalamatan ang Google sa parehong taon at kalahating pinaghirapan ko ang aking sarili, at para sa 2 kawili-wiling araw sa Zurich.

Ano ang masasabi ko sa wakas? Kung nagtatrabaho ka sa IT, ihanda ang iyong sarili para sa mga panayam sa Google (Amazon, Microsoft, Apple, atbp.). Marahil balang araw ay pupunta ka doon upang makarating doon. Kahit na ayaw mo, maniwala ka sa akin, ang gayong paghahanda ay hindi ka magpapalala sa iyo. Sa sandaling napagtanto mo na maaari kang (kahit na swerte lamang) makakuha ng isang pakikipanayam sa isa sa mga kumpanyang ito, mas maraming mga kalsada ang magiging bukas para sa iyo kaysa bago mo simulan ang iyong paghahanda. At ang kailangan mo lang sa daan ay layunin, pagtitiyaga at oras. Nais kong tagumpay ka :)

Pinagmulan: www.habr.com

Magdagdag ng komento