C++ Developer

Vytvorte aplikáciu, ktorá sa dá použiť na vyhľadanie reťazca v súboroch.

Vstup:

Aplikácia dostane dva parametre cez príkazový riadok. Prvým parametrom je cesta k súboru alebo priečinku a druhým parametrom je hľadaný reťazec (maximálna dĺžka 128 znakov).


Výstup:

Formát výstupu v konzole by mal byť nasledovný: <file>(<position>): <prefix>…<suffix>.
<file>: Názov súboru obsahujúceho reťazec.
<position>: Offset v rámci súboru, kde reťazec začal (od nuly).
<prefix>: Obsahuje tri znaky pred nájdenou zhodou.
<suffix>: Obsahuje tri znaky po nájdenej zhode.

Ak nie je k dispozícii dostatok znakov pre celú predponu alebo príponu (na začiatku alebo na konci súboru), použite všetky dostupné znaky. V predponách a príponách by sa tabelátory mali označovať ako "\t“ a nové riadky ako "\n".

Cesta môže smerovať buď na jeden textový súbor, alebo na adresár so súbormi a/alebo viacerými adresármi (vaša aplikácia musí byť schopná rekurzívne prechádzať a spracovať všetky súbory v podadresároch). Aplikácia musí brať do úvahy, že súbory môžu byť veľmi veľké (potenciálne obmedzenia/limitácie pamäte). Aplikácia by nemala za žiadnych okolností spadnúť. Musí správne spracovávať chyby vrátane výnimiek a problémov z externých funkcií alebo API. Okrem toho by aplikácia mala pri výskyte problému zobrazovať jasné chybové hlásenia, napríklad upozorniť používateľa, ak neposkytol dostatok argumentov alebo ak je zadaná cesta neplatná.

Poznámka! Riešenie by malo využívať viacvláknové spracovanie údajov (aspoň teoreticky). Upozorňujeme, že jednovláknové riešenie môže byť pri tomto sekvenčnom skenovaní rýchlejšie, najmä na pomalších diskoch. Pokúste sa maximalizovať rýchlosť a porovnajte svoje výsledky s jednovláknovým riešením.
 

Čo budeme hodnotiť

Spôsob vytvorenia riešenia je na vás. Pri tvorbe riešenia sa neponáhľajte. Vždy je lepšie pracovať na zadaní dlhšie a prísť so skvelým výsledkom, než čas vypracúvania skrátiť a vytvoriť priemerné riešenie. Na základe dodaného riešenia odhadneme úroveň vašich skúseností v oblasti softvérového inžinierstva. Dobre vypracované riešenie vám zaručí pohovor, vyššiu pracovnú pozíciu a atraktívnejšiu platovú ponuku. Vaše riešenie bude podrobne prediskutované počas pohovoru.

Váš zdrojový kód by mal preukázať:

  • váš štýl programovania,
  • používanie princípov objektovo orientovaného programovania,
  • osvedčené postupy programovania v jazyku C++,
  • systematické používanie konvencií pomenúvania,
  • používanie správnych komentárov na správnom mieste,
  • dobrú štruktúru kódu,
  • zvládanie chybových stavov a výnimiek,
  • vyhýbanie sa nebezpečným konštruktom alebo konštruktom náchylným na chyby,
  • pochopenie „vnútorného fungovania“ jazyka C++ a štandardných funkcií (napr. plytvanie pamäťou alebo zbytočné (implicitné/interné) operácie kopírovania reťazcov/pamäte).

Vyhnite sa únikom pamäte (napr. v dôsledku nespracovanej výnimky). Uprednostňujeme použitie štandardných knižníc C++ 14, ale použitie Boostu je tiež prijateľné.

Pošlite nám svoje riešenie na túto e-mailovú adresu: challenge@joineset.com


Vykonaním tejto výzvy vyjadrujete súhlas so zmluvnými podmienkami spoločnosti ESET a beriete na vedomie zásady ochrany osobných údajov spoločnosti ESET