Obsese algoritmických otázek na pohovoru

Re:Obsese algoritmických otázek na pohovoru
« Odpověď #60 kdy: 25. 03. 2022, 11:57:43 »
kdyby chteli zachovani unicode znaku, vicebajtovych entit, nebo radku, tak by to do zadani napsali.

kdyz tam je jen reverznuti/vypsani pozpatku tak je to bajt za bajtem.

Výběrové řízení je oboustranné, i kandidát se rozmýšlí jestli by tam opravdu chtěl pracovat. To co tu předvádíte je pro zkušeného vývojáře obvykle signál, že by nechtěl.


Re:Obsese algoritmických otázek na pohovoru
« Odpověď #61 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 nezkusil :) 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á.


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.

Re:Obsese algoritmických otázek na pohovoru
« Odpověď #62 kdy: 25. 03. 2022, 12:57:51 »
kdyz tam je jen reverznuti/vypsani pozpatku tak je to bajt za bajtem.

Pan Sivak nekde nahore mimodek priznal, ze myslel na  'radku po radce'

Re:Obsese algoritmických otázek na pohovoru
« Odpověď #63 kdy: 25. 03. 2022, 13:00:54 »
.... . To co tu předvádíte je pro zkušeného vývojáře obvykle signál, že by nechtěl.

jo, to mi taky hned napadlo  :)

Re:Obsese algoritmických otázek na pohovoru
« Odpověď #64 kdy: 25. 03. 2022, 13:01:47 »
Myslím, že někdy záměrně ne zcela jednoznačné zadání může být lepší než to jednoznačné. Je tam totiž prostor pro to, aby uchazeč ukázal nejen to, že nějak dokáže problém vyřešit, ale i jak nad problémem přemýšlí a co vše bere při jeho řešení v úvahu. Nemusí z toho nakonec nutně vyjít stavba raketoplánu, ale může se tím projevit jeho pečlivost nebo zkušenosti.


Re:Obsese algoritmických otázek na pohovoru
« Odpověď #65 kdy: 25. 03. 2022, 13:13:39 »
kdyby chteli zachovani unicode znaku, vicebajtovych entit, nebo radku, tak by to do zadani napsali.

kdyz tam je jen reverznuti/vypsani pozpatku tak je to bajt za bajtem.

Díky! Konečně příspěvek k tématu. Hezčí příklad toho, jaký smysl má na pohovoru algoritmická otázka, jsi sem napsat nemohl.

_Jenda

  • *****
  • 1 606
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Obsese algoritmických otázek na pohovoru
« Odpověď #66 kdy: 25. 03. 2022, 13:14:14 »
testovaci ukol znel jasne, reverznout soubor. tyhlety chytre otazky jsou dobre, kdyz se resi opravdovy ukol.
ale kdyz nekomu reknu vypis soubor pozpatku, a on se me zepta na tyhle veci, tak si reknu, ze to je magor,
ktery bude delat z jednoducheho ukolu elektrarnu :-(
[...]
kdyz tam je jen reverznuti/vypsani pozpatku tak je to bajt za bajtem.
Tak třeba první řádek z manuálové stránky programu tac:
tac - concatenate and print files in reverse
Ergo, "reverznout soubor" myslí "po řádcích" i jiní lidé než diskutující na Rootu, je to napsané v oficiální dokumentaci jednoho z největších open-source projektů (GNU Coreutils). Chápu, že člověka, co nemá unixový mindset, tohle nemusí napadnout.

Každopádně díky za demonstraci toho, jak jsou (nejen) mnohé pohovory vadné, když protistrana tvrdí, že něco je "naprosto jasné", a pak se dokonce objektivně ukáže, že to jasné není.

1) otaci se binarni soubor po bajtech nebo textovy soubor po radcich?
2) jestli textovy soubor, tak resime ruzne konce radku?
3) jestli textovy soubor obecne (tedy ruzne unicode varianty), resime BOM?
Přesně tyhle otázky jsem měl, když jsem si to tady včera v noci přečetl. Tedy, místo trojky jsem neměl "BOM" ale "musíš přeházet combining characters".

Myslím, že někdy záměrně ne zcela jednoznačné zadání může být lepší než to jednoznačné. Je tam totiž prostor pro to, aby uchazeč ukázal nejen to, že nějak dokáže problém vyřešit, ale i jak nad problémem přemýšlí a co vše bere při jeho řešení v úvahu.
Může, ale ne když má protistrana přístup "je natvrdly a potrebuje k tomu dalsi omacku".

Jinak když už jsme u efektivní implementací, jako první věc bych nečetl soubor do dočasného bufferu, ale udělal mmap.
« Poslední změna: 25. 03. 2022, 13:17:23 od _Jenda »

Re:Obsese algoritmických otázek na pohovoru
« Odpověď #67 kdy: 25. 03. 2022, 13:25:17 »
Kdyz firma nedokaze jasne zadat ukol ani pri pohovoru, asi bych pro ne pracovat nechtel. V praci chci programovat, ne se dohadovat o zadani. Uchazec by mel predvest schopnost resit ukoly, firma by mela predvest schopnost ukoly zadavat.

Re:Obsese algoritmických otázek na pohovoru
« Odpověď #68 kdy: 25. 03. 2022, 13:40:08 »
Kdyz firma nedokaze jasne zadat ukol ani pri pohovoru, asi bych pro ne pracovat nechtel. V praci chci programovat, ne se dohadovat o zadani. Uchazec by mel predvest schopnost resit ukoly, firma by mela predvest schopnost ukoly zadavat.
Jasně zadat úkol je občas hodně těžký problém. Bohatě stačí, když bude firma spolupracovat při doplňování toho zadání.

Alex6bbc ve mně zanechal dojem člověka, který napřed podřízeného zjebe že je to přece úplně jasné a pak ho zjebe znova že dostal něco jiného než chtěl. Pracovat bych pro něj fakt nechtěl.

Re:Obsese algoritmických otázek na pohovoru
« Odpověď #69 kdy: 25. 03. 2022, 13:44:59 »
Kdyz firma nedokaze jasne zadat ukol ani pri pohovoru, asi bych pro ne pracovat nechtel. V praci chci programovat, ne se dohadovat o zadani. Uchazec by mel predvest schopnost resit ukoly, firma by mela predvest schopnost ukoly zadavat.

tak nevíš, jestli to byl pohovor na programátora nebo někoho, kdo programátorům tvoří zadání, ať už tam pozice je pojmenovaná jakkoliv.

Máš různé role a prostředí, ne všichni pracují v korporátu, kde dostává přesné zadání na stůl a jen to přepisují, jsou tady tací, kteřé mají řešení vymýšlet a navrhovat.

Re:Obsese algoritmických otázek na pohovoru
« Odpověď #70 kdy: 25. 03. 2022, 13:45:46 »
kdyby chteli zachovani unicode znaku, vicebajtovych entit, nebo radku, tak by to do zadani napsali.

kdyz tam je jen reverznuti/vypsani pozpatku tak je to bajt za bajtem.

Díky! Konečně příspěvek k tématu. Hezčí příklad toho, jaký smysl má na pohovoru algoritmická otázka, jsi sem napsat nemohl.

Načtení souboru a jeho zapsání pozpátku je algoritmická otázka? Ta diskuse tady je čím dál tím zajímavější :-)

A těch zajímavých algoritmů co se nám tu sešlo jako řešení! A nebo jsou to spíš praktická použití standardních nástrojů, tfujtajbl?

A nebo myslíte tu správnou doplňující otázku ohledně co se tím vlastně myslí (ze kterou by někteří místní experti rovnou vyhazovali od zápočtu, teda chci říct výběrového řízení)?

I řešení exotičtějších případů nepokrytých standardními commandline tooly směřuje spíš na znalost standardních knihoven na manipulaci paměti než na nějaké sofistikované algoritmy…

Re:Obsese algoritmických otázek na pohovoru
« Odpověď #71 kdy: 25. 03. 2022, 14:09:35 »
I řešení exotičtějších případů nepokrytých standardními commandline tooly směřuje spíš na znalost standardních knihoven na manipulaci paměti než na nějaké sofistikované algoritmy…

ano a proto si myslim, ze autor celeho threadu zcela spravne hovori o algoritmicke obsesi

A pan Sivak, ktery tu 'reverzi' do diskuze zanesl si urcite nemyslel, ze ta uloha je nejaky algoritmus, spis sem mel pocit, ze chtel ukazat priklad, jak on testuje kandidaty. Mimojine, pod panem Sivakem nebo Tomesem bych v projektu klidne delal, kdyby me vzali - nejakeho takoveho sefa projektu si predstavuji ze to ma smysl a ze clovek dostane nejaky prostor.