Skip to main content

Na jaká technická témata byste měl být schopen reagovat?

Než se ponoříte do technických témat, na které se Vás mohou ptát během vašeho pohovoru, spojte se s kontaktní osobou, abyste se dozvěděl/a předměty/dovednosti, které budete nejpravděpodobněji diskutovat a ukazovat. Obecně naše technické pohovory typicky vyžadují, abyste předvedl/a kódování a cvičení spojené s návrhem systému na bílou tabuli. Mějte na paměti, že invence je součástí naší DNA a technologie je základním nástrojem, který ovládáme za účelem rozvoje a zlepšení všech aspektů zkušenosti, kterou nabízíme našim zákazníkům. Při revizi níže uvedených témat, mějte na paměti vždy hlavně zákazníka.

Máte pohovor na pozici softwarového inženýra, která vyžaduje nejméně 2 roky praxe? Zjistěte, jak úspěšně předvést své dovednosti během pohovorů

Technická témata

Před pohovorem na technickou pozici nepožadujeme žádný specifický programovací jazyk. Zkušenost s některým známým jazykem je ale obecně předpokladem úspěchu. Měli byste být obeznámeni se syntaxí jazyků, jako je C, C++, C++14, C#, Go, Java7, Java8, JavaScript, Kotlin, Objective-C, PyPy2, PyPy3, Python2, Python3, Ruby, Scala nebo Swift. Měli byste také znát některé detaily těchto jazyků, jako to, jak pracuje řízení paměti nebo nejčastěji používané kolekce, knihovny atd.

Většina práce, kterou děláme, zahrnuje efektivní ukládání a poskytování přístupu k datům. To vyžaduje silné zázemí datových struktur. Budete muset pochopit vnitřní fungování běžných datových struktur a být schopni porovnat a rozlišit jejich použití v různých aplikacích. Budeme očekávat, že budete znát časy průběhů programů pro běžné operace a to, jak používají paměť.

Váš pohovor se nebude soustředit na zapamatování si algoritmů zpaměti. Správné pochopení většiny běžných algoritmů ale velice usnadní řešení některých otázek. Zvažte tedy zopakování běžných algoritmům, jako jsou traverzály, rozděl a panuj, prohledávání do šířky vs. prohledávání do hloubky a pochopit jejich souvislosti. Znalost průběhů, teoretických omezení a strategie základní implementace různých tříd algoritmů je důležitější než memorování specifických detailů jakýchkoliv algoritmů.

Očekávejte, že po Vás budeme chtít napsat synteticky správný kód, ne pseudo kód. Pokud se při kódování bez IDE nebo kódování se specifickém nástroji cítíte trochu nejistí, oprašte své znalosti a seznamte se s kódováním pomocí pera a papíru. Nejdůležitější věcí, kterou dělá software development engineer v Amazonu je psaní škálovatelného, odolného a dobře testované kódu. To jsou hlavní kritéria hodnocení Vašeho kódu. Určitě zkontrolujte hraniční případy a ověřte, aby neprošel žádný špatný vstup. To je Vaše šance, jak ukázat Vaše kódovací dovednosti.

Kvalitní design je nadřazený rozšířitelnému, bezchybnému kódu s dlouhou životností. Víme, že jsme schopni takřka bez omezení vyřešit jakýkoliv daný softwarový problém, ale pokud má být software rozšířitelný a udržitelný, je dobrý design softwaru důležitý pro úspěch. Jedním způsobem, jak vytvořit odolný software, je použití objektově orientovaného přístupu. Měli byste mít praktickou znalosti několika obecných a užitečných vzorců společně s tím, jak psát software objektově orientovaným způsobem. Pravděpodobně nebudete požádáni popsat detaily toho. jak pracují jednotlivé vzory, ale očekávejte, že budete muset obhájit svůj výběr designu.

Většina softwaru, který píšeme, je založena na datovém skladu. Mnoho výzev, se kterými se technici setkávají při vymýšlení toho, jak co nejefektivněji získávat a skladovat data pro budoucí použití. Amazon byl v čele hnutí v oblasti nerelačních databází. Zpřístupnili jsme služby Amazon Web Services jako DynamoDB vývojářské komunitě tak, že mohou snadno využít benefity nerelačních databází. I když neočekáváme jakoukoliv úroveň zkušeností s nerelačními databázemi, měli byste znát databázové koncepce a jejich aplikace. Čím více znáte souvislosti mezi relačními a nerelačními databázemi, tím lépe budete připraveni.

Systémy v Amazonu musí pracovat s vysokým zatížením za velice přísných podmínek. I když máme některé interní nástroje, které nám pomohou se škálováním, je důležité mít pochopení pro několik základních konceptů distribuovaného výpočtu. Pochopení témat, jako je servisně orientovaná architektura, map reduce, distribuovaná cache, vyvažování zátěže a další, Vám pomůže najít odpovědi na některé z komplikovanějších otázek distribuované architektury, na které můžete narazit.

Nepotřebujte vědět, jak vytvořit od začátku vlastní operační systém, ale měli byste znát některá témata operačních systémů, která mohou ovlivnit výkonnost kódu (např. řízení paměti, procesy, vlákna, synchronizace, stránkování a multithreading).

Očekáváme, že naši inženýři budou dobře znát základy fungování internetu. Oprašte znalosti toho, jak fungují prohlížeče na vysoké úrovni, od vyhledávání DNS a TCP/IP, až po socketová připojení. Požadujeme důkladné pochopení základů fungování světové webové sítě.

Očekávejte, že se Vás zeptáme na datové modelování, protokoly train/test, analýzu chyb a statistickou významnost. Například musíte umět formulovat definovaný problém jako strojové učení a navrhnout řešení včetně datových zdrojů, anotace, přístupů modelování a potencionálních úskalí. Pochopte základní metody umělé inteligence/strojového učení a algoritmy, projděte si znovu vaše oblíbené učebnice strojového učení a umělé inteligence.

 

Chápeme, že seznam věcí, které je třeba si projít, je dost dlouhý. Ujišťujeme Vás, že Vaši tazatelé nebudou hodnotit Vaši schopnost si zapamatovat detaily jakéhokoliv tématu. Budou zkoumat vaši schopnost aplikovat to, co znáte, ve prospěch účinného a efektivního řešení problémů. Protože (někdy) nebudete mít dost času připravit se na technický pohovor, doporučujeme projít si základy počítačových věd a vyzkoušet kódování mimo integrované vývojářské prostředí. To Vám pravděpodobně poskytne ty nejlepší výsledky během daného času.

 

Máte další otázky?

PROJDĚTE SI POHOVORY V AMAZONU. ZKONTROLUJTE NAŠE ČASTO KLADENÉ DOTAZY.
ZJISTĚTE SI NĚCO O NAŠICH ZAMĚSTNANECKÝCH BENEFITECH. PROZKOUMEJTE NAŠE LOKALITY.

Software Development Engineer Interview Preparation (SIP)

Amazon Leadership Principles

This video provides valuable insight to help you be successful when interviewing for Amazon’s Leadership Principles.

Amazon Coding Sample

This video dives into a coding example and how candidates should approach, analyze and solve such problems when interviewing at Amazon.

Amazon System Design Preparation

This video tackles a system design example question and how candidates should approach, analyze and solve such technical questions.

SDE Interview FAQs

SDE Interview Coding Example