Skip to main content

Quali sono gli argomenti tecnici sui cui ti dovresti preparare?

Prima di ripassare gli argomenti tecnici che potrebbero essere chiesti durante il colloquio, contatta il tuo recruiter di riferimento per chiarire quali sono le tematiche che probabilmente dovrai discutere e le abilità che dovrai dimostrare. Generalmente, durante i nostri colloqui tecnici dovrai codificare ed eseguire esercizi di progettazione di sistema su una lavagna bianca. Ricorda inoltre che l’invettiva è nel nostro DNA e che la tecnologia è uno strumento fondamentale che utilizziamo per evolvere e migliorare ogni aspetto dell’esperienza che forniamo ai nostri clienti. Durante il ripasso degli argomenti indicati qui di seguito, tieni sempre bene a mente il cliente.

Devi fare dei colloqui per la posizione di ingegnere informatico che richiede almeno 2 anni di esperienza? Impara come dimostrare con successo le tue competenze durante i colloqui

Argomenti tecnici

Non è necessario conoscere uno specifico linguaggio di programmazione prima di un colloquio per un ruolo tecnico. Tuttavia, avere familiarità con uno dei principali linguaggi informatici è generalmente un prerequisito per il successo. Dovresti avere familiarità con la sintassi di linguaggi come C, C++, C++14, C#, Go, Java7, Java8, JavaScript, Kotlin, Objective-C, PyPy2, PyPy3, Python2, Python3, Ruby, Scala o Swift. Dovresti inoltre conoscere alcune delle sfumature di linguaggio, come il funzionamento della gestione delle memorie, le collezioni più comuni, le librerie, ecc.

La maggior parte del nostro lavoro consiste nell'archiviare i dati e nel fornirvi accesso in modo efficiente. Ciò richiede una grande esperienza nelle strutture dati. Dovrai comprendere i meccanismi interni alle strutture dati più comuni ed essere in grado di confrontare il loro uso in diverse applicazioni. Dovrai conoscere il tempo di esecuzione di operazioni comuni e del modo in cui utilizzano la memoria.

Non sarà necessario imparare algoritmi a memoria per il colloquio. Tuttavia, conoscere gli algoritmi più comuni renderà più facile rispondere ad alcuni quesiti. Ripassa gli algoritmi più comuni come trasversali, divide et impera, ricerca in ampiezza e ricerca in profondità e assicurati di conoscere i trade-off tra ognuno di essi. Conoscere i tempi di esecuzione, le limitazioni teoriche e le strategie di implementazione base delle diverse classi di algoritmi è più importante di memorizzare dettagli specifici di qualsiasi algoritmo.

Dovrai scrivere codici sintatticamente corretti, non pseudo-codici. Se sei un po’ arrugginito nella codifica senza un ambiente di sviluppo integrato o nella codifica in un linguaggio specifico, sarebbe una buona idea rispolverare questo tema ed esercitarti sui codici con carta e penna. La cosa più importante che fa un Ingegnere dello sviluppo del software ad Amazon è scrivere codici scalabili, robusti e ben testati. Questi sono i principali criteri di valutazione per i tuoi codici. Assicurati di individuare tutti i casi limite e di non lasciarti sfuggire input sbagliati. Questa è la tua occasione per dimostrare le tue abilità di codifica.

Una buona progettazione è fondamentale per un codice estensibile, privo di bug e longevo. Sappiamo che è possibile risolvere qualsiasi problema software in tantissimi modi, ma se il software deve essere estensibile e mantenibile, una buona progettazione è fondamentale per il suo successo. Un modo per sviluppare software durevoli è usare le buone pratiche della progettazione orientata agli oggetti. Dovresti avere una conoscenza dei design pattern più utili e comuni ed essere in grado di sviluppare software orientati agli oggetti. Probabilmente non ti sarà chiesto di descrivere i dettagli di come funzionano specifici design pattern, ma preparati a difendere le tue scelte.

La maggior parte dei software che sviluppiamo si appoggia a un archivio dati. Molte sfide che i tecnici si ritrovano ad affrontare si presentano quando questi lavorano per individuare il modo migliore di recuperare e immagazzinare dati per un uso futuro. Amazon si è dimostrata all’avanguardia nell’ambito dei database con modello non relazionale. Servizi di Amazon Web Services come DynamoDB sono a disposizione della comunità degli sviluppatori, in modo che questi ultimi possano usufruire dei vantaggi offerti dai database con modello non relazionale. Sebbene non ci aspettiamo nessun particolare livello di esperienza con database non relazionali, dovresti comunque avere familiarità con i concetti generali di database e con le loro applicazioni. Maggiore sarà la tua conoscenza dei trade-off tra database relazionali e non relazionali, più semplice sarà rispondere ai nostri quesiti.

Ad Amazon, i sistemi devono funzionare con severi livelli di tolleranza ad alto carico. Sebbene disponiamo di alcuni strumenti interni che ci assistono nella scalabilità, è importante possedere una conoscenza base di alcuni concetti di calcolo distribuito. Conoscere concetti come service-oriented architecture, map-reduce, cache distribuita e load balancing ti aiuterà a risolvere alcuni dei problemi di calcolo distribuito più complessi che potresti incontrare.

Non devi sapere come costruire un sistema operativo da zero, ma dovresti avere familiarità con alcuni aspetti dei sistemi operativi che possono influenzare le performance dei codici (ad esempio, gestione della memoria, processi, thread, sincronizzazione, paginazione e multithreading).

Ci aspettiamo che i nostri ingegneri abbiano familiarità con le basi del funzionamento di internet. Ripassa il funzionamento dei browser a livello avanzato, come risoluzione DNS, TCP/IP e connessioni socket. Un’ottima conoscenza delle basi del funzionamento del web è un requisito fondamentale.

Ti verranno posti quesiti su modelli basati su dati, train/test protocols, analisi degli errori e significatività statistica. Per esempio, data una definizione di un problema, dovresti essere in grado di formularlo come un problema di apprendimento automatico e proporre una soluzione, fornendo idee per le fonti di dati, annotazioni, approcci di modelli e individuare potenziali insidie. Ti consigliamo di rimettere mano ai tuoi libri di testo preferiti e di ripassare gli algoritmi e i metodi base di intelligenza artificiale e di apprendimento automatico.

 

Sappiamo che si tratta di una lista relativamente lunga di argomenti da rivedere. Tieni a mente che i selezionatori non ti valuteranno per quanti dettagli riesci a memorizzare per ogni argomento. Si concentreranno piuttosto su quanto tu sia in grado di applicare le tue conoscenze per risolvere i problemi in maniera efficiente ed efficace. Con (a volte) poco tempo per prepararsi per un colloquio tecnico, consigliamo di rinfrescare i fondamenti dell’informatica e di fare pratica con i codici fuori da un ambiente di sviluppo integrato. Molto probabilmente questo ti aiuterà a ottimizzare il tempo che hai a disposizione.

 

Altre domande?

VISITA LA PAGINA COLLOQUI AD AMAZON. LEGGI LE NOSTRE FAQ.
INFORMATI SUI NOSTRI BENEFIT. ESPLORA LE NOSTRE SEDI.

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