Olen saanut haastattelutehtävän ohjelmistokehittäjälle. Minulla on luettelo lapsista, ja tehtävä on: lajitella lapset nousevaan syntymäpäivämäärän aikaleiman mukaan, katkaista siteet ID: n mukaan
Lapsen rakenne on:
"child": { "id": "14" "name": "John" "birth_date": "1990-12-20T11:50:48Z" }
En voi ymmärtää lauseen ”katkaise siteitä” merkitystä annetussa yhteydessä. Luulen, että se voi olla yksi seuraavista:
- jos
birth_date
on sama – ensin lapsi, jolla on alempiid
- lajitellessasi
birth_date
-ohjelmaa, ohita-
-merkki.
kommentit
- Se ' on luultavasti ensimmäinen antamasi vaihtoehto.
- tämä on englanninkielinen kysymys
- Kuten muut ovat huomauttaneet, se ' on melkein varmasti ensimmäinen tulkinta. Haluan kuitenkin antaa vain neuvon: jos haastattelu suoritetaan henkilökohtaisesti tai jos ' on helppo tapa ottaa heihin yhteyttä, voit kysyä selvennykseksi juuri silloin. Kukaan järkeä ei pidä sitä sinua vastaan.
Vastaa
A tie-break on ylimääräinen peli, kun kahdella pelaajalla on sama määrä pisteitä voittajan valitsemiseksi.
En ole koskaan kuullut tätä ilmaisua lajittelussa, mutta siirtämällä tenniksestä tälle alueelle, se tarkoittaa, että kaikki muut asiat ovat tasa-arvoisia, teet ylimääräinen vertailu tunnukseen päättääksesi kuka on ensin.
Puhutko linkitetystä luettelosta, epäröin enemmän, koska tasapeli on myös linkki tai yhteys. Mutta jopa tällä merkityksellä lajittelun yhteydessä ainoa järkevä yhteys voisi olla tasa-arvo.
Kommentit
- " siteiden " käsite lajittelussa on varmasti tarpeeksi yleinen, jotta sillä olisi avainsana SQL: ssä. " tasan jakaminen " ei ole tekninen termi, vaan yksinkertaisesti tarkoittaa siteiden käsittelemistä ottamalla lisäaskeleen ainutlaatuisten sijoitusten varmistamiseksi – usein vaihe, joka on luonteeltaan väärä tai satunnainen (kuten kolikon heittäminen jalkapallo-ottelun määrittämiseksi tai tietojen sijoittaminen I d).
- @Steve Kiitos tästä valaisevasta vahvistuksesta. Itse asiassa SQL YLIMPI SIDOSIIN viittaa samoihin arvoihin. Toisella puolella C ++ näkee siteet hyvin eri tavoin, std :: tie on joukko elementtejä, jotka on kytketty toisiinsa. ' käytetään myös lajittelussa, mutta vain leksikografisen järjestyksen luomiseksi elementtien välille.
Vastaa
Lajittelun yhteydessä tie-rikkominen tarkoittaa koko järjestyksen varmistamista.
Tutustu esimerkkitietoihin:
"id": "14" //made up data "name": "John" //real data "birth_date": "1990-12-20T11:50:48Z" //real data
Todellisia tietoja on täsmälleen kaksi, mitä tapahtuu, jos on olemassa kaksi henkilöä, joilla on sama nimi ja syntymäaika?
Lajittelualgoritmi ei voi päättää kumpi menee ensin, tai vaikka ne olisivat olennaisilta osin sama asia, ja se on vain hävitettävä kopiossa.
Tämä on todellinen ongelma, koska luettelon kahden erillisen kopion lajitteleminen voi johtaa kahteen eri järjestykseen, vertaamalla niitä elementtiparit (a[0] == b[0] && a[1] == b[1] && ...
) tuottavat tällöin epätosi.
Siksi kokonaisjärjestys on tärkeä.
Nyt ei ole enää todellisia tietoja erottamiseksi, joten miten aiomme varmistaa, että elementit lajitellaan aina samaan järjestykseen. hänen vastauksensa on rikkoa tasapeli käyttämällä muodostettuja tietoja. Se on täysin mielivaltainen, mutta nyt ei ole väliä kuinka usein luetteloa sekoitetaan ja käytetään, se lajittelee elementit aina samoihin paikkoihin, mikä mahdollistaa vertailun vertaamalla kutakin elementtiparia.