Citat:
Är det du som skrivet den efterblivet formulerade uppgiften? Hade jag fått en sån uppgift hade jag vänt i dörren. Helvete vad dåligt.
Citat:
På riktigt, har någon ställt en så dåligt formulerad fråga på en intervju?
Ingen bryr sig om dina todo listor och pathfinding
Man vill se hur du tänker och resonerar. Och "hitta X i mängden Y" används överallt. Intressant vad du tycker är viktigt i uppgiften.
Sen behöver man inte göra allt och många saker kan diskuteras.
Du kommer knappast få detaljerade arbetsuppgifter i framtiden.
Det du ska få ut från uppgifter är krav på utrymme och minnet.
Svarstid 1ms betyder att sökningen ska gå på O(1) och du inte få plats med hela filen i minnet.
Lösningen årskurs 1, helt OK:
- Skapa MySQL Memory table med index.
- använd stream reader och läs filen rad för rad
- splittra strängen, kontrollera om id innehåller bokstäver, lägg till i db om inte.
- visa nån progress bar
- gör REST api för db.
- Vi låtsas att den ligger på AWS/etc med 99% uptime.
- vi hoppas att minnet på din bärbar räcker eftersom index blir > 3Gb.
Bättre lösning:
Man kan nästan gissa att api kommer användas ofta och gärna. WTF annars.
Kan nästan gissa att systemet är gammal (csv) och om den är i utlandet kan du säga hejdå till hastigheten.
1. ladda ner filen lokalt.
2. innan du kollar uppdateringen ska du kolla HEAD headers och Last-Modified och inte ladda ner filen.
3. Resilience / transient-fault-handling. Hantera exception (server med filen nere, timeouts, slow provider).
4. Sen kan du kolla hur data ser ut och spridningen, finns kanske meta som kan extraheras. Folk har lyckats komprimera den till 50mb med Roaring bitmaps (
https://roaringbitmap.org/). Får plats i minnet typ.
5. Kan vanlig GET ge svar på 1ms? Är det aktuellt med HTTP persistent connection? Redis?

6. Nämna AWS/etc, SLA, docker.
7. Kan snabba upp saker och processa 1000 id i bulk.
Sett knäpp lösning i PHP med .data fil och fopen/fseek under 20 rader som funkade bättre än jag trodde.
Finns oändligt många svar. Det är mer "tänka fråga" än "koda fråga".