of 53 /53
Importanța algoritmilor pentru problemele de la interviuri Traian Rebedea [email protected] 13.06.22 ROSEdu Summer Workshops

Importanța algoritmilor pentru problemele de la interviuri

Embed Size (px)

Text of Importanța algoritmilor pentru problemele de la interviuri

  • 1. Importana algoritmilor pentru problemele de la interviuriTraian [email protected] ROSEdu Summer Workshops

2. Cuprins Introducere Despre interviuri Sesiunea practic Probleme pentru interviuri Niveluri de dificultate Rezolvri Sfaturi Concluzii11.07.12ROSEdu Summer Workshops 3. Despre mine Doctorand n prelucrarea limbajului natural (nspecial conversaii online), cu experien bunn ML, IR i IA n general Organizat laboratoare Analiza Algoritmilor iProiectarea Algoritmilor (de la zero) Cu ajutorul mai multor colegi de-a lungul timpului Predau cursul de Proiectarea Algoritmilor laCA & FILS englez11.07.12ROSEdu Summer Workshops 4. Utilitatea algoritmilor Dei algoritmii sunt folosii mai mult de ctredezvoltatorii software, cunoaterea lor este utiln majoritatea domeniilor IT&C ntr-o msur mai mare sau mai mic Sunt folosii i n reele, telecomunicaii,proiectare hardware, robotic, automatizri, ... Algoritmii ajung s fie stpnii bine doar prinexperien Algoritmi clasici, probleme clasice Rezolvarea ct mai multor probleme Studiul algoritmilor avansai / specializai11.07.12 ROSEdu Summer Workshops 5. Motivaia temei Muli studeni sunt interesai de ntrebrileprimite la interviuri Majoritatea companiilor de top nu cautprogramatori Java, ci dezvoltatori talentai! Cunoaterea algoritmilor...11.07.12 ROSEdu Summer Workshops 6. Ce fel de interviuri? Dezvoltare software Acele companii care nu caut angajai pentru oanumit tehnologie, ci pentru anumite caliti Gndire logic, algoritmi, rezolvare de probleme,testare, validare, concepte fundamentale nelesebine Inclusiv posibilitatea de adaptare la orice tehnologie Att din Romnia, ct i din afar11.07.12ROSEdu Summer Workshops 7. Cum se desfoar? La interviurile telefonice: rezolvarea se facentr-un tool online pentru editare colaborativ(collabedit, gdocs, etc.) La interviurile F2F (on-site): rezolvarea se facepe whiteboard, hrtie, etc. Deci nu avei la dispoziie compilator, IDE(auto-complete), documentaie API, net, etc.11.07.12ROSEdu Summer Workshops 8. Cum se desfoar? Depinde de companie, candidat, experienanterioar, poziie, etc. Presupunem c vorbim despre SDE / SDET ns exist mai multe tipuri de SDE Ne vom concentra pe SDE, generalist, fr preamult experien ca angajat, firm ce cautoameni detepi Internship-urile sunt foarte utile (chiar necesare)! Independent de tehnologii i limbaje deprogramare Pentru specialiti, interviurile sunt un pic diferite11.07.12ROSEdu Summer Workshops 9. Interviu telefonic1-2(-3) runde de aproximativ 45 de minute1-2 probleme per rundDificultate uoar-medieDe obicei, pentru internship la companiile din afara RO Pot fi i ntrebri comportamentale Avei timp s punei ntrebri la final Nu trebuie s ntrebai cum v-ai descurcat la final ns putei ntreba pe parcurs dac exist (sau vor) osoluie mai bun dect cea propus de voi11.07.12ROSEdu Summer Workshops 10. Interviu on-site 4-5 runde de 45 de minute Sunt probleme mai dificile i mai variate De obicei, pentru job full-time in afara RO 2-3 runde sunt mai orientate ctre rezolvareade probleme, algoritmi, etc. ntrebri comportamentale, de proiectare,sisteme de operare, etc.11.07.12 ROSEdu Summer Workshops 11. Abordare general Punei ntrebri ca s fii siguri c ai neles problemace trebuie sa fie rezolvat Cutai rezolvarea de complexitate optim Dac nu o gsii ntr-un timp rezonabil, nu intrai npanic i propunei o alt rezolvare mai slab De multe ori, se accept soluii mai puin eficiente Fii clari n explicaii i rezolvare, vorbii pe msur ceimplementai soluia, negociai diverse abordri,spunei dac avei mai multe variante Testai-v soluia cu 1-2 exemple, identificai cazuriextreme, gndii-v la dezavantaje, etc. Reparai greelile fcute11.07.12ROSEdu Summer Workshops 12. Cum abordezi o problem? Dac o tii sau este foarte similar cu o altproblem cunoscut Atunci e simplu Altfel Determinai probleme similare cu cea de rezolvat Rezolvai probleme din ce n ce mai mari pe baza celorde dimensiune mai mic (greedy, PD, bkt) Simplificai, rezolvai i apoi generalizai din nou Gndii-v dac anumite structuri de date vsimplific rezolvarea (hash, heap, arbori binari, liste,vectori,...) ncercai cteva exemple i generalizai o soluie11.07.12ROSEdu Summer Workshops 13. Tipuri de probleme O varietate destul de mareStructuri de date elementare (vectori, stringuri, liste, etc.)Arbori i grafuriOperaii pe biiBrain teasersPOORecursivitateSortri i cutriProbleme matematiceProbleme NP-complete (bkt, cutri, etc.)...11.07.12 ROSEdu Summer Workshops 14. Sesiunea practic Am ncercat s adun o serie de problemereprezentative Am ncercat s fie probleme pe niveluri decomplexitate diferite Teoretic, dificultatea crete cu id-ul problemei La un interviu, sunt anse s primii 1-2 astfel deprobleme / sesiune Voi vei lucra n echipe s rezolvai problema Alternative de rezolvare, ideea aleas, pseudocod,complexitate (aprox. 10 minute / problem) Eventual i cod ntr-un limbaj la alegere, poate rmnetem de cas11.07.12ROSEdu Summer Workshops 15. Problema 1 Implementai o cutare a unui element ntr-unvector care a fost sortat, dar i rotit la dreaptacu un numr oarecare de poziii. Ex: [8, 9, 10, 3, 4, 5, 6, 7]11.07.12ROSEdu Summer Workshops 16. Hint-uri Complexitate? Probleme similare?11.07.12 ROSEdu Summer Workshops 17. ntrebri suplimentare Ce se ntmpl dac avei elemente duplicate? Mai putei atinge aceeai complexitate?11.07.12ROSEdu Summer Workshops 18. Sursa 1 http://xorswap.com/questions/77-implement-bina11.07.12 ROSEdu Summer Workshops 19. Problema 2 Avnd un vector cu numere pozitive,determinai cea mai mare sum ce poate fiobinut prin adunarea numerelor aflate npoziii non-consecutive. Daca se alege numrul v[i], nu avei voie sfolosii v[i-1] sau v[i+1]11.07.12 ROSEdu Summer Workshops 20. Hint-uri ncercai pe exemple mici Complexitate intuit? Tehnici clasice?11.07.12ROSEdu Summer Workshops 21. Sursa 2 http://www.glassdoor.com/Interview/Facebook-In http://www.glassdoor.com/Interview/Find-the-ma11.07.12 ROSEdu Summer Workshops 22. Problema 3 Cum ai salva i cauta (cu auto-complete, frcorecii automate) peste 1 milion de nume?11.07.12 ROSEdu Summer Workshops 23. Hint-uri Structuri de date11.07.12ROSEdu Summer Workshops 24. Sursa 3 http://www.glassdoor.com/Interview/How-would11.07.12ROSEdu Summer Workshops 25. Problema 4 Determinai 3 elemente dintr-un vector denumere ntregi a cror suma este 0.11.07.12ROSEdu Summer Workshops 26. Hint-uri Soluia banal este evident tii o problem similar, eventual maisimpl? O soluie mai bun ar trebui s fie detectatuor Soluia cea mai bun este n O(n2)11.07.12 ROSEdu Summer Workshops 27. Sursa 4 http://www.glassdoor.com/Interview/Given-an-ar11.07.12 ROSEdu Summer Workshops 28. Problema 5 Determinai maximul dintre dou numerentregi fr a folosi intruciunile if-else i nicioperatori de comparaie.11.07.12 ROSEdu Summer Workshops 29. Hint-uri Reformulai soluia ca s respecte cerinele11.07.12 ROSEdu Summer Workshops 30. SoluieRescriem astfel: a - k * (a - b)int getMax(int a, int b) { int c = a - b; int k = (c >> 31) & 0x1; int max = a - k * c; return max;}Exist i alte soluii care folosesc modulo i mprire11.07.12ROSEdu Summer Workshops 31. Sursa 5 Cracking the Coding Interview11.07.12ROSEdu Summer Workshops 32. Problema 6 Considernd c avem urmtoarea codificare acaracterelor n numere: a -> 1, b -> 2, , z -> 26 Fiind dat un numr ntreg, afiai numrultotal de traduceri posibile n string-uriconform codificrii date. Ex: 1122311.07.12 ROSEdu Summer Workshops 33. Hint-uri Putem considera subprobleme?11.07.12ROSEdu Summer Workshops 34. ntrebri suplimentare Pot exista i numere pentru care nu existtraduceri posibile? Cum facem dac vrem s i afim toatetraducerile posibile?11.07.12ROSEdu Summer Workshops 35. Sursa 6 http://www.glassdoor.com/Interview/Suppose-we11.07.12ROSEdu Summer Workshops 36. Problema 7 Avnd 9 bile, dintre care una cntrete maipuin dect celelalte, i o balan, cum puteidetermina care dintre bile este cea maiuoar?11.07.12 ROSEdu Summer Workshops 37. ntrebri suplimentare Care este complexitatea? Generalizai pentru numere mai mari11.07.12ROSEdu Summer Workshops 38. Sursa 7 http://www.glassdoor.com/Interview/You-have-9-11.07.12 ROSEdu Summer Workshops 39. Problema 8 Determinai numrul de cifre 2 coninute detoate numerele ntre 0 i n.11.07.12ROSEdu Summer Workshops 40. Hint-uri Ce complexitate vrem? Mai mic dect?11.07.12 ROSEdu Summer Workshops 41. Sursa 8 Cracking the Coding Interview11.07.12ROSEdu Summer Workshops 42. Problema 9 Avem un generator de numere aleatoare caretrimite fiecare valoare nou generat uneifuncii ce trebuie s menin mediana tuturornumerelor primite pn la orice pas.11.07.12ROSEdu Summer Workshops 43. Hint-uri Care sunt soluiile banale? Folosii detept procesrile anterioare Structuri de date mai bune?11.07.12 ROSEdu Summer Workshops 44. Sursa 9 Cracking the Coding Interview11.07.12ROSEdu Summer Workshops 45. Problema 10 Determinai cele mai mari 1 milion de numeredintr-un vector cu un miliard de numere.11.07.12ROSEdu Summer Workshops 46. ntrebri suplimentare Putei pstra tot vectorul n memorie?11.07.12ROSEdu Summer Workshops 47. Hint-uri Soluia banal? Se poate mai bine! Structuri de date Probleme similare, algoritmi mai buni? Selection rank?11.07.12ROSEdu Summer Workshops 48. Sursa 10 Cracking the Coding Interview11.07.12ROSEdu Summer Workshops 49. Sfaturi Este esenial s v antrenai TopCoder (Arena), Infoarena Dar i cu pixul pe hrtie, cu limite de timp i problemesimilare Sunt importante i ntrebrile comportamentale Nu putei memora algoritmi sau soluii Trebuie s le nelegei corectitudinea Nu v grbii, nu vorbii foarte mult/puin Experiena la interviuri nu poate fi dect util,chiar dac primul rspuns nu este pozitiv11.07.12ROSEdu Summer Workshops 50. Consideraii finale Conteaz i alte amnunte Recomandri ale altor angajai Rspunsurile la ntrebrile comportamentale Intrebari de CS in general: structuri de date,sisteme de operare, (mai rar logic, statistic isunt bonus) Motivaia voastr, proiectele personale, ... Este foarte important s i codai pe tablsoluiile corect i eficient ntr-un limbaj la alegere11.07.12 ROSEdu Summer Workshops 51. Concluzii ntrebrile de la interviuri conin multe elemente dealgoritmi n special pentru un SDE(T) internship la companiile mari ntrebrile nu sunt foarte dificile Necesit o nelegerea foarte bun a algoritmilor de baz,dar i experien Exersai pe hrtie sau pe Topcoder Arena direct, pentru anu folosi un IDE, compilator, etc. Nu subestimai emoiile Nu subestimai ntrebrile comportamentale: evitaiarogana, individualismul, etc.11.07.12 ROSEdu Summer Workshops 52. n final Avem din ce n ce mai multe firme mari nar, care lucreaz la proiecte interesante Sunt din ce n ce mai muli romni (inclusivabsolveni de A&C) care lucreaz nstrintate Discutai cu ei pentru sfaturi i recomandri Nu trebuie s fi fost olimpic, dei acest lucrueste evident un atu V pot ndruma nspre ei sau spre recruiteri11.07.12 ROSEdu Summer Workshops 53. Link-uri Carte: Cracking the Coding Interview http://www.careercup.com/book Site-uri http://www.careercup.com/ http://infoarena.ro/missing-numbers Blog-uri http://infoarena.ro/blog/sfaturi-pentru-interviuri http://stiinte.ub.ro/admitere/53-c-anunturi-generale/282-google-zuri http://www.kmkz.ro/de-pe-teren/reportaje/cum-am-ajuns-la-interviu11.07.12ROSEdu Summer Workshops