Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-is:laboratoare:12 [2021/01/20 22:59]
sergiu.craioveanu [Structuri de Date si Algoritmi]
poo-is:laboratoare:12 [2021/01/23 18:45] (current)
sergiu.craioveanu [Concluzii]
Line 11: Line 11:
   * Domain knowledge (Github, informatii specifice domeniului in care aplicati (e.g. REST API pentru Web Dev sau Baze de Date))   * Domain knowledge (Github, informatii specifice domeniului in care aplicati (e.g. REST API pentru Web Dev sau Baze de Date))
  
-Daca aplicati si la firme gen FAANG (Facebook, Apple, Amazon, Netflix, Gogu) sau chiar Bloomberg, J.P. Morgan, se mai cer: +Daca aplicati si la firme gen FAANG (Facebook, Apple, Amazon, Netflix, Gogu) sau chiar Bloomberg, J.P. Morgan, Palantir, se mai cer: 
-  * Systems Design (e.g. Cum ai proiecta Twitter? Cum ai construi un site care iti genereaza link-uri random?)+  * Systems Design (e.g. Cum ai proiecta Twitter?)
   * **Structuri de Date si Algoritmi** (dar cu BOLD - ca trebuie sa le stiti la un nivel ceva mai mare)   * **Structuri de Date si Algoritmi** (dar cu BOLD - ca trebuie sa le stiti la un nivel ceva mai mare)
   * Mentalitatea adecvata si genul potrivit de ambitie (e.g. Mi-ar placea sa te am ca si coleg? - Nu subestimati acest aspect)   * Mentalitatea adecvata si genul potrivit de ambitie (e.g. Mi-ar placea sa te am ca si coleg? - Nu subestimati acest aspect)
Line 53: Line 53:
 Normal, you already know what it is: [[https://​ocw.cs.pub.ro/​courses/​sda-ab|CLICK ME BBY]]. Asta pentru SDA in C, dar mai mult pentru felul in care sunt prezentate conceptele. Normal, you already know what it is: [[https://​ocw.cs.pub.ro/​courses/​sda-ab|CLICK ME BBY]]. Asta pentru SDA in C, dar mai mult pentru felul in care sunt prezentate conceptele.
  
-Acum, exista mai multe alternative,​ odata ce vreti sa evoluati pe C+++Acum, exista mai multe alternative,​ odata ce vreti sa evoluati pe SDA. Indiferent de limbaj, aveti nevoie de exercitiu
  
 +<note important>​Rezolvarea problemelor de SDA poate fi impartita ca la meciurile de sah: Exista "​normal chess" si "​lightning chess"​. Diferenta e de viteza. Cand rezolvati singuri problemele, e normal chess. Cand sunteti la interviu, e lightning chess. In general, desi cei ce sustin interviul vostru va vor da hint-uri, daca nu exista acel "​know-how"​ dinainte, e improbabil sa va prindeti de vreun super skepsis pe moment (mai ales cand e presiunea momentului asa de mare). Unele probleme trebuie sa devina reflex. </​note>​
  
-** CEA OBLIGATORIE,​ ESTE BAZA VOASTRA. FARA ASTA, NU SE POATE** +<note warning>**CEA OBLIGATORIE,​ ESTE BAZA VOASTRA. FARA ASTA, NU SE POATE** [[https://​leetcode.com/​|Leetcode]] 
-[[https://​leetcode.com/​|Leetcode ]]+</​note>​ 
 +In principiu, exista destui oameni care vor sa invete un limbaj nou si sa il foloseasca pe acela mai departe. Optiunile generale sunt Java, Python sau Javascript. Oricum ar fi, uitati [[https://​medium.com/​javarevisited/​7-best-courses-to-learn-data-structure-and-algorithms-d5379ae2588|un link cu top 7 cursuri de SDA]], in functie de limbaj. Pun [[https://​www.youtube.com/​watch?​v=RBSGKlAvoiM&​list=WL&​index=56|aici]] si un link catre un video de 8 ore de SDA in Java de la un inginer Gogu. 
  
 +Indiferent de limbaj, "pick one and stick to that one". In timpul interviului nu veti schimba limbaje. Invatati unul si bine. Faceti probleme pe Leetcode cu acel limbaj. Exista mock interviews pe Leetcode. **Ce e un mock interview?​** Intrebare buna - simuleaza experienta unui interviu real (e.g. de la Google), inclusiv problemele care pica la interviu + eventualele hint-uri pe care le-ai primi de la inginerul cu care sustii acel interviu. **Cate probleme sa fac???** Pana cand iti faci mock interviews de la Google si ti se par prea usoare. In general vreo 300-400 de probleme (50% easy, 35% medium, 15% hard) ar trebui sa fie in general o masura OK. Don't focus on that too much. Focus on the process of learning.
 +
 +Sfat de abordare al problemelor:​ La inceput, toate problemele o sa para **noi**. Nu sta mai mult de 30 de minute per problema. Daca nu iti vine ideea in 30 de minute, cauta solutiile pe net (adica indieni, dar nu neaparat). Asigura-te ca intelegi rationamentul,​ apoi incearca sa rezolvi singur.
 +
 +Poate te gandesti: "Ba da io nu vreau in afara, eu vreau in Romania"​. E splendid, doar ca tot mai multe firme din Romania au inceput sa implementeze acelasi tip de proces de angajare, axat pe probleme de SDA mai presus de tot, ca un fel de test suprem pentru un Software Engineer. Exista dus si intors pentru aceasta abordare, dar vom lasa parerile criticilor. You focus on what matters - cat mai mult exercitiu.
  
  
Line 65: Line 72:
  
 Resursa principala este asa-numita "​Cartea cu dizonaurul"​ (Operating System Concepts Essentials). ​ {{:​poo-is:​laboratoare:​operating_system_concepts_essentials_2nd_-_abraham_silberschatz.pdf| Click aici.}} Resursa principala este asa-numita "​Cartea cu dizonaurul"​ (Operating System Concepts Essentials). ​ {{:​poo-is:​laboratoare:​operating_system_concepts_essentials_2nd_-_abraham_silberschatz.pdf| Click aici.}}
 +
 +===== Domain Knowledge ===== 
 +
 +Cum am zis la inceput, depinde de domeniul in care vreti sa aplicati. Ar fi destul de greu sa discutam despre toate domeniile in parte. Cu toate astea, exista un tool pe care mai toate il au in comun: [[poo-is:​basics_git|Github]].
 +
 +In functie de limbajul in care vreti sa lucrati, ar trebui sa stiti sa manipulati tot ce tine de acel limbaj (inclusiv setup, instalari, IDE).
 +
 +Ca sfat general, un skill de nepretuit este acela de **a cauta**. Nimeni nu se naste cu lucrurile stiute, dar cei mai buni **cauta**. Cautatul pe Google este o arta, desi nu pare.
 +
 +===== Systems Design ===== 
 +Asta e o sectiune putin mai avansata si e in general dedicata mai mult celor ce aplica in afara. Cu toate acestea, exista si firme din Romania care mai intreaba chestii de genul.
 +
 +Concret, ce mai e si siztems disaign? Uite cateva exemple:
 +  * How would you design a tinyURL System? (TinyUrl is an URL service that allows users to enter a long URL, then returns a shorter, unique URL)
 +  * How would you design a Search Engine?
 +  * How would you design a shared drive?
 +  * How would you design a garbage collection system?
 +  * How would you design a recommendation system?
 +
 +In zona de Systems Design, combini tot ce stii de la POO (inclusiv Design Patterns), SDA si Sisteme de Operare ca sa structurezi tu arhitectura sistemelor cerute. Pare savant - am sa recunosc, e putin. De data asta nu mai pot sa zic ca nu. Cu toate astea, exista suficiente resurse online pentru a va informa. ​
 +
 +Sunt genul de intrebari cerute des (a se citi **mereu**) la Facebook, Amazon, Palantir etc.
 +Un exemplu ceva mai lung [[https://​www.youtube.com/​watch?​v=q0KGYwNbf-0|aici]]. Macar sa va faceti o idee.
 +
 +Cel mai bun playlist pe YT pe care l-am gasit: [[https://​www.youtube.com/​playlist?​list=PL73KFetZlkJSZ9vTDSJ1swZhe6CIYkqTL| aici]]
 +
 +Toata greutatea consta in faptul ca nu exista limita superioara de complexitate a intrebarilor. Teoretic, daca ai fi suficient de bun, ai putea sa proiectezi toate aplicatiile la cel mai mic detaliu - doar ca probabil daca puteai sa o faci, te chema Mark Zuckerberg. In general, nivelul complexitatii variaza, dar te "​plimba"​ prin mai multe concepte astfel incat cel ce sustine interviul sa isi faca o idee despre nivelul cunostintelor tale.
 +
 +===== Concluzii ===== 
 +
 +Desi continutul de mai sus a fost scris mai in gluma, mai in serios, e important sa intelegeti ca ce alegeti mai departe va dicta viitorul vostru. Asadar, pentru o incheiere, v-am lasat niste citate care sa va ghideze.
 +
 +Daca alegeti sa tintiti sus (profesional,​ dar nu numai), in cel mai rau caz veti fi cu mult superiori fata de ce ati fi fost daca nici nu ati fi incercat. Daca alegeti sa mergeti la minim de efort, asta se va reflecta mai departe in oportunitatile ce vor aparea (sau vor intarzia sa apara). ​
 +
 +<note tip>** Each day we pay a price - it can either be the price of success or the price of failure. Choose to always pay the price of success.**- Cel ce a scris aceasta postare (Sergiu "​Aurelius"​ Craioveanu)</​note>​
 +
 +<note tip>​**I’m a great believer in luck. The harder I work, the more luck I have.** - Thomas Jefferson</​note>​
 +
 +De multe ori va veti uita in jur si veti vedea colegi sau oameni mai buni ca voi. Intotdeauna va exista cineva mai bun. E important sa nu va descurajati si sa fiti perseverenti in ceea ce vreti sa realizati - oricat de ambitios ar fi acel tel, indiferent in ce punct va aflati. Adevarata competitie sunteti chiar voi.
 +
 +<note tip>​**There is nothing noble in being superior to your fellow men (or women). True nobility lies in being superior to your former self.** - Ernest Hemingway</​note>​
 +
 +<note tip>​**I'​d rather attempt to do something great and fail than do nothing and succeed.** - Robert H. Schuller</​note>​
 +
 +Cu siguranta, de-a lungul anilor ce urmeaza, va veti lovi de multe obstacole si dificultati,​ mai ales ca ingingeri. Dificultatile vor veni, dar important este cum le faceti fata.
 +
 +<note tip>**Do not pray for an easy life. Pray to be stronger.** - John F. Kennedy (kind of) </​note>​
 +
 +Spor in tot ce va propuneti mai departe!
 +
 +**Echipa POO**
 +
  
  
  
  
poo-is/laboratoare/12.1611176388.txt.gz · Last modified: 2021/01/20 22:59 by sergiu.craioveanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0