301
Studium a uplatnění / Re:Obsese algoritmických otázek na pohovoru
« kdy: 25. 03. 2022, 12:16:54 »
Ten pohovor není jen test na splnění, takže by pochopitelně následovala otázka na to, jak a proč to asi uvnitř funguje a jestli by ten bash byl opravdu nejlepší řešení.
Zatím to na mě s bashem ale nikdo nezkusilNicméně celé tohle vlákno je o algoritmizaci, takže jazyk opravdu až tak důležitý není. Popravdě jsem za posledních hmm 15 let v projektech viděl C/C++, Python, Javu, Golang... dobrému programátorovi to přeučení zase tak dlouho netrvá.
Ten algoritmus na čtení souboru po zpátku je zajímavý problém a řeší ho nejedna databáze při kontrole WALu nebo to je běžný pattern v event sourcing systemech, kdy se dohledává poslední záznam k události.
tac v tom nedělá velkou logiku, zjistí velikost souboru, rozdělí si ho na 8kb bloky, seekne na poslední blok, hledá v něm separator, pokud najde, pošle vše za separatorem na výstup a tak dále. Důležité je, že velikost bloků mezi separatory může být max. 2 * 8kb + 2, takže udělat tac binárního souboru rádo padá na chybě, že vstup je příliš velký. Perf je správný nástroj na ladění těhle udělátek. Když si místo separátoru představím hledání UTF-8 znaků, koncu řádku či jinou logiku jako nodů v jsonů, avro fieldů atd., mám základní algoritmus a jednotlivé dekodéry mohu přidat podle potřeb použití.
Nj. už není doba pásek, které se četli pozpátku otočením a zvuk šel i pozpátku přehrát. Dnešní počítače jsou až příliš lineární a jakýkoliv průchod pozpátku nebo i přeskakování v cyklech jim dělají nemalé problémy v optimalizaci.
Nicméně celé tohle vlákno je o algoritmizaci, takže jazyk opravdu až tak důležitý není. Popravdě jsem za posledních hmm 15 let v projektech viděl C/C++, Python, Javu, Golang... dobrému programátorovi to přeučení zase tak dlouho netrvá.