Přejít na obsah

Backend programátor/ka pro stránku Seznam.cz

Brno  •  Programátoři, Všechny IT pozice  •  Pro muže i ženy  •  Vhodné pro absolventy

Chcete se podílet na programování nejnavštěvovanější stránky českého internetu? Hledáme schopné zkušené vývojáře/ky ale i nadané absolventy/ky.

Pokud umíte programovat, nebojíte se výzev a práce v týmu, zašlete nám na tereza.svobodova@firma.seznam.cz svoje řešení úkolu níže. K vypracování můžete použít libovolný imperativní nebo funkcionální programovací jazyk (kromě ezoterických) – zajímá nás, jak přemýšlíte, zbytek se dá naučit.

Na čem budete pracovat?

  • Na implementaci nových funkcí do portálu www.seznam.cz za použití GoLangu + Maria DB.
  • V administraci používáme Vue.js+Nuxt. S frontendem, kde používáme primárně TypeScript a React+Redux, komunikujeme pomocí GraphQL.
  • Celou aplikaci provozujeme ve vlastním cloudu stojícím na Kubernetes a OpenStack, poskytujícím mnohé funkcionality „as a service“.

Pokud některou z těchto technologií nebo jazyků zatím neznáte, není to problém, na pohovoru nás zajímá, jak myslíte, zbytek se naučíte.

Co nabízíme?

  • Jsme skvěle sehraný tým, budete mít možnost učit se od expertů
  • Váš šéf Martin Jurča je náročný, ale své lidi umí velmi dobře ocenit
  • Práce na hlavní stránce Seznamu je kreativní záležitost, která je navíc pěkně vidět
  • Skvělé technologické zázemí, s hromadou technologií “as a service
  • Jsme vždy otevřeni novým řešením
  • Chováme se nekorporátně a neformálně, dress code nám nic neříká
  • Zajímavé problémy a výzvy

Zadání úkolu

Vaším úkolem je implementovat typ Cursor a funkci mergeSequences. Funkce má za úkol smíchat dvě chronologicky vzestupně uspořádané sekvence do jedné chronologicky vzestupně uspořádané sekvence, kterou je možné přečíst po stránkách nastavitelné velikosti.

Funkce obdrží následující argumenty:

  • firstSequenceGenerator – generátor prvků první sekvence – viz níže
  • secondSequenceGenerator – generátor prvků druhé sekvence – viz níže
  • limit – maximální počet položek, které má funkce vrátit
  • cursor – kurzor pro získání následujících položek – viz níže

Předpokládejte, že funkce mergeSequences vždy dostane platné hodnoty na vstupu.

Návratovou hodnotou mergeSequences je kurzor pro získání následujících položek sekvence a aktuální stránka sekvence požadované délky. Při dosažení konce vstupních dat (vrácení všech posledních položek generátorů) nevrátí mergeSequences žádný kurzor. Strukturu kurzoru implementujte dle vlastního uvážení.

Funkce mergeSequences používá kurzor typu Cursor pro pokračování ve stránkování položek. Pokud při volání mergeSequence není kurzor poskytnut, vrací mergeSequence začátek smíchané sekvence.

Generátor prvků vstupní sekvence je funkce, která obdrží následující argumenty:

  • since – UUIDv1 od kterého má generátor vracet prvky své sekvence (nevčetně)
  • limit – maximální počet prvků, které má generátor vrátit

Vstupní sekvence jsou uspořádány od nejstarší položky po nejmladší, toto pořadí se má zachovat v smíchané sekvenci vrácené z mergeSequences. Stáří položky je reprezentováno časovým razítkem a sekvenčním čítačem v UUID verze 1. Velikost stránek mezi jednotlivými voláními mergeSequences se může měnit. Generátory vstupních sekvencí můžou mezi jednotlivými voláními vracet mírně odlišná data na pozicích, které ještě nebyly vráceny z mergeSequences.

V řešení nepoužívejte žádné knihovny nebo nástroje které nejsou součástí zvoleného jazyka nebo jeho standardní knihovny.

Předpřipravená prostředí

Pro následující programovací jazyky můžete použít tato předpřipravená prostředí s automatickými testy:

Příklad použití a návratové hodnoty

mergeSequences(firstSequenceGenerator, secondSequenceGenerator, 4, nil)

{
  items: [{UUID(…)}, {UUID(…)}, {UUID(…)}, {UUID(…)}],
  cursor: …
}

Čím vám ještě uděláme radost

Homeoffice

Víme, že doma je doma, proto netrváme na tom, abyste v našich kancelářích seděli každý den.

Cafeterie

Kredit na sport, kulturu, vzdělávání, cestování, zdraví, životko nebo penzijko. S cafeterií si však můžete zařídit třeba i den volna navíc.

Interní vzdělávání

Rozšíříte si obzory pod vedením našich trenérů.

Pružná pracovní doba

Volnost dostanou skřivani i sovy. Je jen na vás, jestli začnete pracovat brzy ráno nebo si přispíte.

Dovolená navíc

Čeká vás až 5 týdnů dovolené. Další 2 dny volna si můžete dokoupit z Cafeterie.

Sick days

Pro dny, kdy vám nebude dobře, máte k dispozici 3 sick days.

S kým budete spolupracovat

Ondřej Nový
Vedoucí vývoje divize HP a obsahových služeb
V Seznamu pracuji od března 2015. Stojím v čele vývoje obsahových služeb, mezi které patří domovská stránka Seznamu, Novinky.cz, Sport.cz, Televize Seznam či Seznam Zprávy. Na celé práci mě nejvíc naplňují projekty, které lidem usnadňují život. Baví mě diskutovaná témata a open source vývoj. Po práci mi dobíjí energii celá rodina, ale hlavně moji dva synové.

Brno, Londýnské náměstí 856/2

Seznam.cz, a.s., Londýnské náměstí 856/2, Brno, Štýřice

Naše prostory v Brně se na vás těší i s nabídkou stravování přímo v areálu. Za pěkného počasí můžete využít terasu ke grilování nebo si v případě deště zahrát fotbálek. Kromě bezproblémové dostupnosti MHD u nás zaparkujete s autem i kolem.

Zajímá vás tato pozice? Napište Tereze

Máte jiné představy?

Podívejte se na ostatní volné pozice a vyberte si svou práci snů. Nebo nám rovnou pošlete svůj životopis. Podíváme se na něj a až se objeví místo pro vás, ozveme se.

Poslat životopis

Zobrazit volné pozice

Virtuální prohlídka