Skip to main content

Quels sont les sujets techniques susceptibles d'être abordés ?

Avant de vous concentrer sur les questions techniques qui pourraient éventuellement être posées lors de votre entretien, contactez votre recruteur afin de connaître les sujets/compétences les plus susceptibles d'être abordés. Lors de nos entretiens techniques, nous vous demandons en général de réaliser des exercices de code et d'ingénierie système. Veuillez garder en tête que l'innovation est dans notre ADN et que la technologie est un outil fondamental dont nous nous servons pour évoluer et pour améliorer l'expérience de nos clients dans tous les sens du terme. Lorsque vous révisez les sujets ci-dessous, veuillez penser au client avant tout.

Vous avez un entretien pour un poste d’ingénieur en logiciel qui requiert au moins 2 années d’expérience ? Apprenez comment mettre en avant vos compétences lors des entretiens

Sujets techniques

Nous n'attendons pas de nos candidats qu'ils maitrisent un langage de programmation en particulier avant un entretien pour une position technique. Cependant, être familier d'un langage principal est en général un prérequis vers le succès. Vous devez être familier de la syntaxe de langages tels que C, C++, C++14, C#, Go, Java7, Java8, JavaScript, Kotlin, Objective-C, PyPy2, PyPy3, Python2, Python3, Ruby, Scala ou Swift. Vous devez également connaître les particularités de certains de ces langages, comme le fonctionnement de la gestion de la mémoire ou les usages les plus communs des collections, des bibliothèques, etc.

La majorité de notre travail implique le stockage des données et l'accès à celles-ci et ce de manière efficace. Cela nécessite une connaissance solide des structures des données. Vous devez comprendre le fonctionnement interne des structures de données communes et être capable de comparer et d'ajuster leur utilisation en fonction de diverses applications. Vous devez pouvoir exécuter les opérations communes et savoir comment elles utilisent la mémoire.

Nous ne demandons pas aux candidats de réciter des algorithmes par cœur au cours des entretiens. Cependant, faire preuve d'une bonne compréhension des algorithmes les plus communs permet de résoudre plus rapidement certaines questions. Vous pourriez donc revoir les algorithmes communs tels que les algorithmes de parcours, l'algorithme diviser pour régner, la recherche en largeur vs. la recherche en profondeur et en comprendre les équilibrages. Connaître les fonctionnements, les limitations théoriques et les stratégies d'exécution basiques des différentes catégories d'algorithmes est plus important que de mémoriser des détails spécifiques à certains algorithmes.

Attendez-vous à devoir rédiger un code syntaxiquement correct - et non un pseudo code. Si vous n'avez plus trop l'habitude de coder sans EDI ou de coder dans un langage particulier, c'est peut-être l'occasion de rafraîchir vos connaissances et de reprendre l'habitude de coder avec un stylo et du papier. La tâche la plus importante dont s'acquitte un ingénieur développeur de logiciels chez Amazon est d'écrire un code flexible, solide et bien testé. Il s'agit des critères d'évaluation principaux en matière de code. Assurez-vous de vérifier toutes les situations possibles et qu'aucune erreur ne passe entre les mailles du filet. C'est l'occasion de mettre en valeur vos compétences de programmeur.

Un bon design est primordial pour obtenir un code flexible, sans bug et à la longue durée de vie. Nous savons qu'il est possible de résoudre n'importe quel problème posé par un logiciel de n'importe quelle façon, mais si un logiciel a besoin d'être extensible et maintenable, une bonne conception logicielle est essentielle au succès. Une manière de construire un logiciel durable est d'utiliser les meilleures pratiques de design orienté objet. Vous devrez avoir une connaissance pratique des quelques patrons de conception les plus connus et être capable de programmer un logiciel à l'aide d'un code orienté objet. Nous ne vous demanderons probablement pas de nous décrire des patrons de conception de manière détaillée, mais attendez-vous à défendre vos choix de conception.

La plupart des logiciels que nous développons s'appuient sur un data store. De nombreuses difficultés rencontrées par nos techniciens surviennent lorsqu'ils doivent déterminer la meilleure manière de récupérer et de stocker des données à des fins d'utilisation future. Amazon a été en première ligne du mouvement concernant les bases de données non relationnelles. Nous avons rendu les services d'Amazon Web Services, tels que DynamoDB, accessibles à la communauté des développeurs afin que ces derniers puissent facilement évaluer les avantages des bases de données non relationnelles. Même si nous n'exigeons pas d'expérience particulière en termes de bases de données non relationnelles, nous attendons des candidats qu'ils aient des connaissances de base concernant les concepts généraux relatifs aux bases de données, et leurs applications. Plus vous en savez sur les compromis entre bases de données relationnelles et bases de données non relationnelles, mieux vous serez préparé(e).

Chez Amazon, les systèmes doivent fonctionner à haut régime conformément à des tolérances très strictes. Bien que nous disposons d'outils internes qui nous aident à atteindre une telle ampleur, il est important d'avoir connaissance de quelques concepts de base en matière d'informatique distribuée. La compréhension de certains sujets, tels que les principes d'architectures orientées services, d'architectures MapReduce, de mise en cache distribuée ou d'équilibrage de charge, vous aidera à trouver des pistes pour résoudre quelques-uns des problèmes d'architecture distribuée les plus compliqués que vous puissiez rencontrer.

Vous n'avez pas besoin de savoir créer un système d'exploitation en partant de zéro, mais nous attendons de vous que vous ayez des connaissances de certains sujets relatifs aux systèmes d'exploitation et pouvant affecter la performance des codes (gestion de mémoire, processus, fils, synchronisation, mouvement de page, traitement multifilière etc.).

Nous attendons de nos ingénieurs qu'ils aient des connaissances concernant les principes fondamentaux de l'Internet. N'hésitez pas à vous remettre à niveau concernant le fonctionnement à haut régime des navigateurs (requêtes DNS, TCP/IP, connexion de sockets). Des connaissances solides concernant les principes fondamentaux du fonctionnement du Web sont requises.

Attendez-vous à ce que l'on vous pose des questions sur les modèles de données, les protocoles d'apprentissage/de test, l'analyse des erreurs et la signification statistique. Par exemple, avec la définition d'un problème, vous devez être en mesure d'analyser le problème du point de vue du Machine Learning, et de proposer une solution. On attendra de vous des idées concernant les sources de données, les annotations, les approches de modélisation et les problèmes potentiels. Vous devez comprendre les méthodes et les algorithmes de base relatifs au Machine Learning et à l'intelligence artificielle. N'hésitez pas à rafraîchir vos connaissances en ouvrant vos anciens livres sur le sujet.

 

Nous avons conscience qu'il s'agit là d'une longue liste de sujets à revoir. Sachez que les personnes chargées de faire passer les entretiens n'évaluent pas votre capacité à mémoriser tous les détails de chaque sujet. Elles seront attentives à votre capacité à appliquer vos connaissances afin de résoudre efficacement les problèmes. Au vu du temps (parfois) limité dont disposent nos candidats pour se préparer à un entretien technique, nous leur recommandons surtout de revoir les fondamentaux de l'informatique et de s'entraîner à coder sans environnement de développement. C'est la meilleure manière d'utiliser votre temps.

 

Vous avez d'autres questions?

RENDEZ-VOUS SUR LES ENTRETIENS CHEZ AMAZON. CONSULTEZ NOTRE FAQ.
DÉCOUVREZ QUELS SONT NOS AVANTAGES. EXPLOREZ NOS SITES.

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