Care este motivul meu pentru eșecul sarcinii de testare Yandex

Bună ziua, recent, a decis să te testeze într-un stagiu de vară în Yandex, doar o vacanta va fi. I de studiu la Moscova, anul 2, acesta nu părea prost. nu foarte inteligent, dar pare a fi încercarea de a compensa teoria lor de cunoștințe, numai practica nu este de ajuns, o altă întrebare. Pe baza calculelor pe care internship vă va face din soldatul Mămăligă, calcularea și cu sânge rece, care în prezent nu dețin. Deci, trimite o cerere, am trimis lucrarea:

Cer detalii prin e-mail, cum anume se poate rezolva problema, nu a răspuns. Ei bine, așa cum am înțeles problema și de a rezolva aceasta a început. Rapoarte trimise:

O săptămână mai târziu, el a spus:


Din nou, mi sa spus cunoștințe că nu va explica modul de a rezolva problema, și ce ați făcut greșit, sarcina lor este „un set de carne în Yandex“.

Întrebare publicului: Ceea ce am făcut greșit, care a pus pe mine? Poate doar să fac bydlokodingom corectată că, pentru a studia, și modul în care a fost necesar pentru a rezolva aceste probleme? Ce fel de experiență pot fi trase din aceasta? Fie că este în valoare de urcare în Stagiul companiile mari, chiar dacă nici o experiență de luptă, precum și modul în care experiența de luptă pentru a obține atunci când nu luați într-adevăr nicăieri?

Ei bine, lasă-mă critică:

1) nu v-ați dat seama cum să declare metode în prototip cu noua notație `class`:

2) nu știi cum să folosească excepții.


const 3) utilizarea care lasă acolo să fie utilizate

4), în principiu, utilizarea variabilelor în cazul în care acestea nu ar trebui să fie

5) ai un motiv sau altul au pus în aplicare o funcție de sortare, nu am văzut în cerințele lipsei de posibilitatea de a utiliza bun vechi Array.prototype.sort

6) Observații generale privind Coding Style. snake_case în cazul în care ar trebui să CamelCase, a scrie o scrisoare de capital, care ar trebui să existe o mică etc.

8) În cazul în care punctul de a șaptea corect este că clasa noastră se transformă într-o funcție.

În continuare. luați următorul fișier al cărui nume se termină

2) De ce trebuie să faci în linie pentru a împinge funcțiile obiect prototip pentru parsarea CSS. Astfel, încalcă principiul responsabilității unice. Și, în general, să se extindă, fără a fi nevoie să prototip obiecte într-un fel nu este in regula.

Un pic mai departe proskrolil - încercați să se extindă liniile de prototip pentru ceea ce ar face API jquery? uh, prietene.

3) o mulțime de duplicare.

4) foarte prost cu variații protejate.

1) Asta e ceea ce am vrut să fac la început, dar acestea nu funcționează proprietate privată, de ce?

clasa Travelsort lista lasa; // greșit, dar din punct de vedere al proprietății private C ++
constructor () <>
sortTickets (bilete) <>
>

Ei bine, bine, atunci, în cazul în care constructorul lista lasa declar. De ce sortTickets () nu vede această variabilă, pentru că nu este la nivel mondial, ci ca la nivel mondial nu?

2) Este foarte rare excepții bucurat, întotdeauna înveliș personalizate scris, chiar și în C ++ auzit că încercați<> catch () <> Acesta nu este folosit întotdeauna din cauza pierderii de productivitate.

ValueError - după cum am înțeles, clasa noastră excepție?

3) în cazul în care const nu este schimbat ceva, am acolo fiecare variabilă matrice a fost supusă de a schimba în viitor, cu excepția cazului în Len - o serie de dimensiuni variabile, dar este, de asemenea, un caz special, obiceiul de a scrie a rămas var. În plus, în viitor, putem folosi aceeași len variabilă pentru a stoca o altă dimensiune matrice.

4) Și în cazul în care nu ar trebui să existe nici o schimbare?

5) Așa că am sortate numai pe el, a inventat algoritmul sau standardul de sortare pentru a angaja? Hmm, atunci am clasa ar fi practic gol

6) printError. și sort_ticket?

7) Ei bine, el poate scrie doar propria listă privată de rute, cu excepția că nu poate avea o interfață de ieșire? Ciudat ..

8) În acel moment, în timp ce era necesar pentru a rezolva problema?

dar totuși am decis să potetstit acest punct, dar este foarte confortabil, fără numele obiectului doar în paranteze indică (dom) și să aplice metodele, convenabil și funcționează în cazul rezolvării mele ciclurilor liniare și bloc

Ei bine, ce sa întâmplat exact, dar ca o violare a integrității structurii de date care stau la baza? Suntem cu corzi încă de lucru ..

3) Duplicarea mult, dar am făcut-o, și așa tot scos în funcții separate pentru fiecare dintre noii metode

4) protejate de variații, dar ce este? și cum să lucreze cu ea?

2) Da, excepții afectează negativ performanța, dar codul Prodakshen trebuie deloc o excepție (în mod ideal). În cazul în care excepțiile încep să afecteze performanța de cod js - prin urmare, aveți un bug pe undeva.

3) Mai întâi, s-au schimbat matrice în sine, iar matricele sunt stocate într-un link js, adică, puteți utiliza în condiții de siguranță Const. În al doilea rând, în loc de statutul de mutatie (de modul în care am uitat să menționez că apatridă stateful întotdeauna mai bine) ar putea construi doar o nouă matrice. Și din nou ne întoarcem la pasul 1 - nu știm cum să lucreze cu obiecte (proprietăți, metode, prototip obiect)

4) proprietățile variabilelor.

5) „standard de sortare“ poate trece o funcție de sortare, care pune în aplicare aceste norme.

6) numele tuturor funcțiilor și metodelor - CamelCase, constructori de obiect (sau numele de clasă, dacă suntem pe cale de zahăr peste Object.create) - CamelCase.

7) trebuie să furnizeze statului și de a lucra cu document.write ar trebui oricine altcineva. Dacă ar fi funcții separate - ar fi bine (și ar putea fi doar unele caracteristici). Și astfel vom lăsa un obiect în încălcarea principiului responsabilității unice.

Dave. Ei bine, hai să vorbim. Cererea Junior de la înțelegerea necesității de a încapsula sau nu? Sau suficient de ea pentru a defini memorat pentru securitatea socială?

A nu se confunda Junior si stagiar. Diferența dintre Junior și sinerom fi de fapt numai în faptul că, chiar și cu proprietatea de a înțelege principii solide la început nu prima încercare se va dovedi a nu perturba șansa acestor principii, și de multe ori au remodeleze și de multe ori de experiment.

E ca „De ce Junior, capabil să scrie teste.“ Este din cauza acestei abordări, cele mai multe dintre dezvoltatorii sunt atât de slabe și puteți găsi sute de „sinerov“ care nu știu ce datoria tehnică.

Pe de altă parte, din cauza costului lui Junior atât de scăzut, da. Pentru că jumătate dintre ei nu au nici Junior.

Și cine a încercat vreodată să rezolve această problemă? Eu sunt acum foarte interesat de modul în care argumentele pro decid astfel de întrebări.

Máximo progreso Hemos alcanzado en Minimo Seso.

Tin. SIFCO Githabe privit în cazul în care întregul proces este arătat în mod clar, codul nu arata chiar.

Ei bine, uite, este clar, de asemenea, că informațiile cu privire la rutele, astfel încât toate aceste tekstiki, cum ar fi, „de la Stockholm la Riga feribot, cabină 6a ...“, este de a fi generat din datele, nu mânerele într-un textarea pentru a scrie :)

Trebuia să gândească literalmente din API pentru tine de a utiliza și ce date provin de la el - de la aceste date pentru a crea toate înregistrările și tot drumul.

Datorită sus și alte date ... - și totuși, pentru tot ceea ce au nevoie de localizare (nu la fel și în textele rusești vor fi), și totuși toate acestea, este necesar să scadă, dacă facem perfecționist nu - sunt de acord că „de la Stockholm la Riga ...“ sună groaznic .

Și tu doar tot ce este scris în caseta de text - atunci este necesar să se facă un câmp de text în loc de toate formele și butoanele, iar în cazul în care operatorul scrie o grămadă de text în sine, cu o grămadă de greșeli, nesistematic :)

Acum, ia tot ce ai făcut, și imaginați-vă că numărul de zbor sa schimbat, sau numărul locului sa schimbat (ai schimbat cu cineva, și-au schimbat locul și cealaltă persoană) - pe măsură ce se va ocupa? Du-te în fiecare traseu și se ocupă de editarea de text într-un textarea?

Și pentru date și screening-ul, elementare - date cele mai comune zhisonchik, ordinare, o serie de obiecte. Sortează după cheie stânga și la dreapta, seturi imbricate, astfel încât să puteți crea trasee de orice adâncime, de exemplu, nu numai Riga → Stockholm, precum și între traseele de rute Riga și Stockholm. Ei bine, ca un copac, puteți deschide o cale, și acolo subroute.

1) „Ei bine, uite, este clar, de asemenea, că informațiile cu privire la rutele, astfel încât toate aceste tekstiki, cum ar fi:“ De la Stockholm cu feribotul spre Riga, cabină 6a ... „este de a fi generat de date, nu mânerele într-un textarea pentru a scrie.“

În ce sens? Noi înșine trebuie să creeze aceste carduri. Și cum faci asta depinde de tine. Pe Internet, înainte am avut o mulțime de moduri, am ales ..

2) De la și alte date ... - și totuși, pentru tot ceea ce au nevoie de localizare (nu la fel și în textele rusești vor fi), și totuși toate acestea, este necesar să scadă, dacă facem perfecționist face - sunt de acord „de la Stockholm la Riga ...“ sună teribil.

În acel moment, este deja apa limpede NLP timp de o săptămână fără mame practică o astfel de sarcină nu a reușit rapid să fac. Am încercat să rezolve problema cu folosind expresii regulate:
Cum de a găsi un oraș într-un rând?

Dar, fără nici un rezultat, peste tot au existat bancuri de nisip, toate acestea implica existenta de intrare stricte.

Așa că am decis că datele stricte de intrare vor doar INPUT cum și în cazul în care, indiferent de limba pe care scrie, întotdeauna în cazul nominativ sunt oraș, și despre informațiile de card ar fi independent, astfel încât nu este nevoie pentru a analiza textul cardului și pentru a verifica în declin, și că îmi pare rău, sarcina rigid aici este tocmai faptul că problema inițial, în exemplul dat în limba engleză.

Am fost algoritm de sortare, astfel, INPUT Cum de-a.

3) Da, am fost tot într-un textarea, noi nu am spus a fost că totul a trebuit să fie creat de către operatorul de sistem, acesta poate fi călătorul însuși a scris pentru el însuși pe o bucată de hârtie. Probabil că ar fi trebuit să se spală în jos cu o interfață simplă și selectivă, astfel ar fi API. Dar am crezut că a fost plictisitor, așa că am făcut un fel de INPUT Cum de-a, repet, dar mi-a plăcut genul că, chiar și a lucrat perfect, algoritmul pe găsirea unor modalități într-un grafic direcționat. Și a fost o realizare pentru mine. Aparent, este complicat.

4) „Acum, ia tot ce ai făcut, și imaginați-vă că numărul de zbor sa schimbat, sau numărul locului sa schimbat (ai schimbat cu cineva, și-au schimbat locul și cealaltă persoană) - cum te descurci va seturi? la fiecare rută și se ocupă de editarea de text într-un textarea? "

Ei bine, eu nu TK a scris o declarație formală a obiectivelor stabilite la munca propriu-zisă, toate acestea s-ar fi discutat cu conducerea echipei, și el ar trebui să pună un cadru formal și pentru a evidenția capcanele pentru a se asigura că proiectul a fost în stare perfectă.

5) În cazul meu, a fost de obicei js-matrice, JSON-decupa aceeași practică.

wkololo_4ever. asa cum am scris, există o parte din toate, există sortare. Nu există corduri - a crea un nou lanț. După aderarea cardului la lanțul - verifica start-sfârșitul tuturor celorlalte unități, în cazul în care există o grămadă - alăturați-vă un șir de caractere la altul. Și vom lua un nou card din coada de intrare. Și așa până atunci, până la partea de capăt a tuturor.
Gradarea final va fi unul (dacă toate cărțile sunt interconectate prin punctele de început și sfârșit) sau mai multe lanțuri (dacă există cărți fără legătură, de exemplu - „pierdut“).