Retour à la liste des articles Articles
17 minutes de lecture

Questions d'entretien Meta SQL

Les entretiens SQL chez Meta sont difficiles et vous devez affiner vos compétences si vous voulez décrocher un emploi prestigieux et bien rémunéré. Lisez ce qui suit pour découvrir le type de questions d'entretien SQL qui peuvent vous être posées lors d'un entretien Meta, ainsi que la meilleure façon de vous préparer. Meta, comment vous préparer au mieux et comment vous démarquer.

Meta est une entreprise très axée sur les données, qui utilise une grande variété de technologies de bases de données. MySQL est leur principale base de données, mais ils disposent également de bases de données spécialisées pour diverses applications.

Quel que soit le poste pour lequel vous postulez, il y a de fortes chances que vous ayez à interagir avec des bases de données. Meta est plus susceptible que la plupart des entreprises d'inclure des questions relatives à SQL dans les entretiens.

Si vous envisagez de postuler à un emploi chez Meta, il est utile de consulter des exemples de questions d'entretien SQL de Meta et de vous entraîner autant que possible.

Si vous n'êtes pas encore familiarisé avec SQL, vous pouvez vous inscrire à notre parcours d'apprentissage SQL de A à Z. Cette série de cours vous emmène du niveau débutant jusqu'aux sujets SQL avancés. Vous acquerrez une expérience pratique en travaillant sur plus de 700 exercices guidés et vous vous familiariserez avec les concepts des bases de données relationnelles.

Si vous avez une certaine expérience du langage SQL mais que vous n'avez pas utilisé beaucoup de ses fonctions avancées, notre coursSQL avancé vous conviendra peut-être mieux. Dans tous nos cours, vous accéderez à une base de données par l'intermédiaire de votre navigateur Internet ; il n'est pas nécessaire de télécharger ou d'installer quoi que ce soit. De plus, de l'aide est disponible à chaque étape.

Supposons que vous connaissiez un peu le langage SQL et que vous souhaitiez travailler pour Meta. À quoi devez-vous vous attendre lors d'un entretien d'embauche pour Meta SQL ?

Le processus de recrutement de Meta

Les recruteurs de Meta évalueront vos connaissances techniques, votre capacité à résoudre des problèmes et à travailler en équipe. L'ensemble du processus peut durer deux à trois mois et comporter plusieurs séries d'entretiens.

La première étape consiste à créer un profil de carrière sur Meta. Si vous ne l'avez pas encore fait, vous pouvez visiter la page Créer un profil de carrière pour commencer. À partir de votre profil, vous pouvez consulter les offres d'emploi recommandées et créer des alertes d'emploi. Vous y trouverez également une foule de ressources utiles, notamment des guides de préparation aux entretiens et des exercices d'entraînement.

Une fois que vous aurez postulé à un emploi, vous recevrez, via votre profil, des documents de préparation spécifiques au poste.

Examinons les étapes de l'entretien que vous passerez une fois que vous aurez soumis votre candidature.

Premier appel avec un recruteur

  • À quoi vous attendre ? On vous posera des questions sur votre formation, votre expérience et vos objectifs. On vous demandera également pourquoi vous souhaitez travailler chez Meta. Le recruteur vous en dira plus sur le rôle et l'équipe avec laquelle vous travaillerez.
  • Comment vous préparer ? Dès que vous aurez posé votre candidature, prenez le temps de vous préparer :
  • Vous familiariser avec la description du poste.
  • Passez en revue votre expérience pertinente et réfléchissez à la manière dont vous pouvez la mettre en valeur auprès du recruteur.
  • Dresser une liste de questions à poser au recruteur.

Premier entretien

  • À quoi s'attendre : Cet entretien peut se dérouler par téléphone ou (plus probablement) par le biais d'une plateforme de rencontre en ligne. Vous rencontrerez certains membres de l'équipe Meta et en apprendrez davantage sur le poste et les personnes avec lesquelles vous travaillerez.
  • Comment vous préparer ? Votre recruteur vous aidera à préparer cet entretien et vous fournira tous les documents dont vous pourriez avoir besoin.

Entretien de codage

  • À quoi s'attendre : Si vous avez postulé à des postes d'analyste de données ou d'analyste marketing, le langage de codage peut être SQL. L'entretien dure 45 minutes, dont 35 sont réservées à la résolution de deux questions de codage de difficulté moyenne à élevée. Cet entretien peut se dérouler en personne ou en ligne.
  • Comment se préparer ? Votre recruteur vous fournira des documents qui vous aideront à préparer l'entretien. La meilleure façon de se préparer à cet entretien est de s'entraîner, de s'entraîner et encore de s'entraîner ! Vous devrez également vous assurer que vous connaissez bien le langage de programmation cible.
  • Ce que l'examinateur recherche : Vous serez évalué sur vos :
  • votre expertise technique
  • Votre capacité à résoudre des problèmes.
  • Votre style de communication.
  • votre capacité à vérifier votre solution à l'aide de données de test pertinentes.

Conseils et astuces

L'examinateur évalue vos compétences en matière de communication :

  • Posez des questions avant de commencer, afin de vous assurer que vous avez bien compris le problème.
  • Vous êtes prêt à expliquer à l'examinateur pourquoi vous avez choisi telle ou telle approche du problème.
  • Écoutez attentivement les commentaires de votre interlocuteur : ils peuvent vous indiquer que vous n'avez pas choisi la bonne approche.
  • Demandez à l'examinateur si vous n'êtes pas sûr de pouvoir utiliser une fonctionnalité spécifique (par exemple, des fonctions non standard) dans votre solution.

En outre, n'oubliez pas que :

  • L'examinateur essaie également d'évaluer la manière dont vous abordez les problèmes, alors réfléchissez à voix haute pendant que vous travaillez.
  • Soyez conscient des problèmes de performance - par exemple, votre solution risque-t-elle d'être lente ou d'utiliser trop d'espace dans les tables temporaires ?
  • Vous ne saisirez pas votre solution dans une base de données, vous n'aurez donc pas d'aide pour la syntaxe et vous ne pourrez pas faire d'essais. Si l'entretien a lieu en personne, vous écrirez votre solution sur un tableau blanc ; sinon, vous travaillerez dans un simple éditeur de texte.
  • Une syntaxe parfaite est moins importante que la démonstration de votre capacité à résoudre des problèmes complexes.
  • Si vous voyez plus d'une solution au problème, demandez à l'examinateur s'il est possible de choisir celle que vous préférez.
  • Si vous avez déjà répondu à la question, dites-le. L'examinateur veut évaluer la manière dont vous résolvez un nouveau problème ; il sera évident pour lui que vous connaissez déjà la réponse.

Enfin, n'oubliez pas de passer en revue l'échantillon de données que vous utiliserez pour tester votre solution.

Entretien de conception

Cet entretien peut ne pas s'appliquer à certains postes - par exemple, les analystes de données peuvent avoir un entretien portant sur leurs connaissances statistiques. Mais lors de cet entretien, il peut vous être demandé de créer une conception de haut niveau pour une application typique du monde réel.

Il se peut que vous deviez démontrer votre compréhension des concepts de SGBDR, alors assurez-vous d'être à la hauteur dans ce domaine.

Entretien comportemental

Cet entretien permet d'évaluer si vous vous intégrez bien dans l'équipe.

Quelles sont les fonctions chez Meta qui requièrent des connaissances en SQL ?

La plupart des fonctions chez Meta impliquent un certain nombre d'interactions avec les bases de données. Voici quelques-unes des fonctions pour lesquelles vous pourriez être confronté à des questions d'entretien portant sur le langage SQL :

  • Scientifique de données
  • Analyste de données
  • Ingénieur logiciel
  • Analyste produit
  • Analyste commercial
  • Ingénieur en apprentissage automatique
  • Analyste marketing
  • Administrateur de base de données
  • Responsable de programme technique
  • Analyste de croissance

Préparation de votre entretien Meta SQL

Avant de postuler à un emploi chez Meta, vous devez vous familiariser avec leurs produits - par exemple Facebook, WhatsApp, Messenger et Instagram. Essayez de visualiser ce qui se passe en coulisses et quelles données sous-jacentes ces produits utilisent.

Renseignez-vous sur la culture et les objectifs de l'entreprise et téléchargez le guide de préparation à l'entretien de Meta. Vous pouvez également regarder la vidéo de l'entretien de codage de Meta pour avoir une meilleure idée de ce qui vous attend.

Vous aurez besoin de beaucoup d'entraînement pour répondre au type de questions qui pourraient vous être posées lors d'un entretien avec Meta. Essayez de travailler avec un simple éditeur de texte pour saisir vos réponses et réfléchissez à voix haute lorsque vous résolvez des problèmes. Cela vous aidera à vous habituer à cette partie de l'entretien technique.

Avant de commencer à vous entraîner, vous pouvez passer notre évaluation des compétences SQL pour avoir une meilleure idée des domaines dans lesquels vous devez vous améliorer. Nous avons également plusieurs antisèches gratuites et téléchargeables que vous pouvez utiliser pour vous aider à réviser vos connaissances :

Questions d'entretien Meta SQL : Théorie

Voyons maintenant quelques questions d'entraînement qui vous donneront une idée de ce qui vous attend lors d'un entretien Meta SQL. Elles sont divisées en deux types : les questions théoriques et les questions pratiques. Les questions théoriques peuvent vous être posées au cours de l'un des entretiens oraux. Les sujets peuvent également être abordés lorsque vous discutez de vos solutions lors de l'entretien de conception. Les questions pratiques sont similaires aux problèmes que l'on peut vous demander de résoudre lors de l'entretien de codage.

Question 1 : Les jointures en SQL

Quelle est la différence entre un INNER JOIN et un OUTER JOIN en SQL ?

Une INNER JOIN ne renvoie que les lignes qui correspondent dans les deux tables. Une OUTER JOIN inclut les lignes non appariées dans le résultat selon les règles suivantes :

  • LEFT JOIN renvoie toutes les lignes de la table de gauche avec la ligne correspondante de la table de droite ou des zéros.
  • RIGHT JOIN renvoie toutes les lignes de la table de droite ainsi que la ligne correspondante de la table de gauche ou des zéros.
  • FULL JOIN renvoie toutes les lignes des deux tables.

Question 2 : WHERE vs. HAVING

Quelle est la différence entre l'utilisation d'un WHERE et d'un HAVING ?Quelle est la différence entre l'utilisation de la clause WHERE et de la clause HAVING ?

La clause WHERE filtre des lignes individuelles pour certaines conditions, alors que la clause HAVING filtre des groupes de lignes par des conditions globales. Par conséquent, HAVING ne peut être utilisé qu'avec la clause GROUP BY.

Question 3 : Contraintes

Décrivez trois types de contraintes contraintes SQL.

Les contraintes imposent des règles qui s'appliquent lorsque des lignes sont insérées, mises à jour ou supprimées dans la base de données ; elles sont définies lors de la création d'une table. Il existe plusieurs types de contraintes, vous pouvez donc choisir l'un des trois types suivants :

  • NOT NULL spécifie qu'une colonne ne peut pas contenir de valeur nulle.
  • UNIQUE spécifie que les valeurs de cette colonne ne peuvent pas être dupliquées dans la table.
  • PRIMARY KEY spécifie que cette colonne sera utilisée comme clé primaire de la table, c'est-à-dire que les valeurs doivent être uniques et non nulles afin qu'elles puissent identifier chaque ligne.
  • FOREIGN KEY spécifie que cette colonne sera liée à la clé primaire d'une autre table. Cela permet d'assurer l'intégrité référentielle.
  • CHECK définit une condition pour n'autoriser que des valeurs spécifiques dans cette colonne.
  • DEFAULT spécifie une valeur qui sera utilisée si aucune valeur n'est spécifiée lorsque des données sont insérées dans cette colonne.
  • AUTO_INCREMENT spécifie que la colonne sera automatiquement définie sur le numéro suivant dans la séquence lors d'une insertion.

Question 4 : Transactions

Expliquez ce que l'on entend par transaction en SQL. Que se passe-t-il si le serveur tombe en panne au milieu d'une transaction ?

Une transaction est un groupe de mises à jour qui doit être exécuté en tant qu'unité : soit toutes les mises à jour doivent être exécutées, soit aucune. Un exemple pourrait être l'achat d'un client, qui met à jour la table customer la table sales tableau, le tableau stock et le livre de caisse. Tous ces éléments doivent être mis à jour avec succès pour que la transaction aboutisse.

Une fois qu'elles sont toutes mises à jour, vous pouvez valider la transaction et la base de données sera mise à jour de manière permanente. Vous pouvez également annuler la transaction, auquel cas aucune modification ne sera apportée à la base de données. Si le système tombe en panne, aucune des mises à jour n'est permanente et la base de données ne reflète pas la transaction.

Question 5 : Procédures stockées et fonctions

Quelle est la différence entre une procédure stockée et une fonction en SQL ? Donnez un exemple d'utilisation de chacune d'entre elles.

Une procédure stockée est un ensemble d'instructions SQL prédéfinies qui exécutent une tâche. Les procédures stockées peuvent éventuellement renvoyer une ou plusieurs valeurs et peuvent prendre des paramètres. Elles sont invoquées à l'aide de l'instruction CALL. Il peut s'agir, par exemple, d'extraire des données pour un rapport ou d'exécuter des procédures d'apurement de fin d'année.

Les fonctions sont également un ensemble d'instructions SQL prédéfinies, mais elles renvoient toujours un seul objet. Cet objet peut être une valeur ou une table. Les fonctions prennent éventuellement des paramètres et peuvent être utilisées dans les instructions SQL de la même manière que les colonnes de la base de données. Les exemples incluent l'exécution de calculs pour intégrer des règles commerciales et l'exécution d'un formatage personnalisé.

Question 6 : Injection SQL

Qu'est-ce que l'injection SQL (SQLi) ?Qu'est-ce que l'injection SQL (SQLi) ? Décrivez deux façons dont un programmeur peut se prémunir contre une attaque SQLi.

L'injection SQL est un moyen d'injecter un code malveillant dans une instruction SQL, généralement pour mettre à jour frauduleusement la base de données.

Imaginez un programme qui construit une instruction SQL sous la forme d'une chaîne de texte. Lorsque les clients font des demandes en ligne, ils fournissent des détails qui seront utilisés dans le code SQL.

À titre d'exemple très simple, le programme peut construire une instruction SQL à partir du texte SELECT * FROM customer WHERE account_no =   suffixé par le numéro de compte saisi par le client. Si le client saisit le numéro de compte sous la forme 12404; UPDATE customer SET balance_owing = 0 WHERE account_no = 12404, l'instruction de mise à jour malveillante est injectée dans la base de données.

Un programmeur peut se prémunir contre ce problème de deux manières :

  • Effectuer des contrôles sur l'instruction SQL résultante avant de l'exécuter.
  • Utiliser des instructions préparées, de sorte que le numéro de compte soit utilisé comme paramètre plutôt que pour construire l'instruction.

Questions d'entretien sur Meta SQL : Pratique

Pour les besoins des questions d'entretien SQL pratiques, supposons une base de données contenant les tables et colonnes suivantes.

Table nameUsersPostsEventevent_activityinteractions
containsuser_idpost_idevent_idevent_act_idinter_id
thenameuser_idHostevent_idaction
rows:locationdatetime_posteddatetime_eventuser_iduser_id
date_joineddetailsDetailsdatetime_acttarget_type
response_typetarget_id

Question 1 : Statistiques d'utilisation

Calculez le pourcentage d'utilisateurs qui n'ont pas publié de messages cette année.

Réflexion approfondie

Vous pouvez aborder cette question de différentes manières. La plus simple est probablement d'utiliser une expression de table commune (CTE) pour compter le nombre d'utilisateurs distincts dans la table où la partie "année" de la date est utilisée. posts dont la partie année de la date est la même que la partie année de la date actuelle.

Vous pouvez ensuite écrire une requête simple pour compter le nombre d'utilisateurs dans la table, la joindre à l'expression CTE. users joindre cette requête à la table CTE et effectuer un calcul pour obtenir le pourcentage.

Exemple de réponse

WITH posting_users AS 
(
  SELECT 
    COUNT(DISTINCT user_id) AS posting_users 
  FROM posts
  WHERE year(datetime_posted) = year(current_date)
)
SELECT 
  100 - (posting_users / COUNT(*) * 100) AS percent_inactive
FROM users 
JOIN posting_users;

Question 2 : Identifier les hôtes d'événements actifs

Listez l'utilisateur ID de l'utilisateur, le nom de l'utilisateur, le nombre d'événements et le nombre total de participants aux événements pour tous les utilisateurs qui ont programmé plus de 10 événements cette année.

Informations complémentaires : Les acceptations sont des lignes de la table qui ont le type de réponse "En cours". event_activity qui ont le type de réponse 'Going'.

L'hôte dans le tableau events peut être associé à l'ID de l'utilisateur dans le tableau users pour trouver l'utilisateur qui a programmé l'événement.

Réflexion approfondie

Vous devrez joindre la table event la table event_activity et la table users pour obtenir toutes les informations nécessaires. La table event_activity doit utiliser une adresse LEFT JOIN, puisqu'il ne vous a pas été demandé d'exclure les événements qui n'ont pas de participants. Cette jointure doit inclure la condition selon laquelle la réponse doit être "Going".

En regroupant les hôtes, vous pouvez inclure un décompte distinct de l'ID de l'événement pour obtenir le nombre d'événements et un décompte de user_id dans la table event_activity pour obtenir le nombre de participants.

Vous devrez inclure une clause HAVING pour filtrer par le nombre d'événements.

Exemple de réponse

SELECT 
  host, 
  name,  
  COUNT(DISTINCT e.event_id), 
  COUNT(a.user_id) AS attendees
FROM event e
JOIN users u ON u.user_id = host
LEFT JOIN event_activity a 
  ON e.event_id = a.event_id
  AND response_type = 'Going'
GROUP BY host, name
HAVING COUNT(DISTINCT e.event_id) > 10
ORDER BY name

Question 3 : Trouver les meilleurs utilisateurs

Trouvez les 10 meilleurs utilisateurs (classés en fonction du nombre total de likes sur leurs posts) et indiquez leur classement, leur ID utilisateur, leur nom et le nombre total de likes.

Informations complémentaires : Les utilisateurs influents sont définis comme des utilisateurs qui ont publié plus de 500 messages cette année et qui ont une moyenne de plus de 150 likes par message.

Les mentions "J'aime" sur les messages sont enregistrées dans le tableau interactions avec action contenant 'Like' et target_type contenant 'Post'. L'identifiant de la cible peut être utilisé pour joindre la table posts sur l'ID du message.

Réflexion approfondie

Vous devez d'abord trouver le nombre de messages et le nombre de mentions J'aime pour chaque utilisateur pour cette année. Vous pouvez le faire avec un CTE.

Dans la requête principale, vous pouvez joindre le CTE à la table des utilisateurs pour récupérer le nom de l'utilisateur. Filtrez l'ETC pour extraire uniquement les utilisateurs expérimentés.

Vous pouvez utiliser la fonction de fenêtre RANK() pour classer les utilisateurs par nombre de likes et utiliser la clause LIMIT pour limiter les résultats aux 10 premiers utilisateurs.

Exemple de réponse

WITH user_posts AS
(
  SELECT p.user_id,  COUNT(DISTINCT post_id) AS num_posts, 
  COUNT(inter_id) AS likes
  FROM posts p
  LEFT JOIN interactions ON post_id = target_id
    AND target_type = 'POST'
    AND action = 'Like'
  WHERE year(datetime_posted) = year(current_date)
  GROUP BY user_id
)
SELECT 
  RANK() OVER (ORDER BY likes DESC) AS position,
  u.user_id, 
  name, 
  likes
FROM users u
JOIN user_posts p ON u.user_id = p.user_id
WHERE num_posts > 500 
  AND likes/num_posts > 150
LIMIT 10;

Question 4 : Analyse de l'activité des utilisateurs d'une année sur l'autre

Pour les 5 dernières années, comparez le nombre d'utilisateurs actifs d'une année sur l'autre. Indiquez l'année, le nombre total d'utilisateurs actifs et l'évolution par rapport à l'année précédente.

Informations complémentaires : Les utilisateurs actifs ont publié au moins un message au cours de l'année.

Réflexion approfondie

Vous devrez extraire un décompte du nombre d'utilisateurs par année à partir du tableau posts du tableau. Pour plus de lisibilité, vous pouvez le faire sous la forme d'un CTE. Vous devrez ensuite utiliser la fonction de fenêtre LAG() pour comparer les résultats d'une année sur l'autre.

Exemple de réponse

WITH activity AS
(
  SELECT year(datetime_posted) AS year, 
  COUNT(distinct user_id) AS active_users
  FROM posts 
  WHERE year(current_date) - year(datetime_posted) < 6
  GROUP BY year(datetime_posted)
)
SELECT 
  year, 
  active_users,
  (active_users - 
     LAG(active_users) OVER (ORDER BY year) ) * 100/active_users AS percentage_change
FROM activity;

Trouver des ressources pour votre préparation à l'entretien Meta SQL

La façon la plus importante de se préparer est de résoudre un large éventail de problèmes pratiques. Vous devriez vous efforcer de résoudre deux questions de difficulté moyenne à élevée en 35 minutes.

N'oubliez pas de réfléchir à voix haute lorsque vous travaillez sur votre solution. Utilisez un éditeur de texte ou un stylo et du papier pour élaborer votre solution afin de simuler la situation de l'entretien. Bien entendu, vous pouvez ensuite tester vos solutions sur une base de données réelle pour vous assurer qu'elles fonctionnent.

Lors de l'entretien, vous utiliserez probablement coderpad.io, il vaut donc la peine de l'essayer à l'avance.

Prenez le temps d'explorer le hub de préparation dans votre profil de carrière Meta. Vous y trouverez de nombreux documents utiles, y compris des puzzles de codage que vous pouvez utiliser pour vous entraîner.

LearnSQL.fr Le site Web de la Commission européenne propose plusieurs ressources utiles pour s'entraîner et passer un entretien :

La ressource d'entraînement la plus précieuse est sans doute la piste d'entraînement avancée de LearnSQL.fr, qui vous permet de travailler sur des centaines d'exemples réalistes. Vous pouvez essayer vos solutions sur une base de données réelle et obtenir des conseils et des astuces lorsque vous êtes bloqué.

Commencez dès aujourd'hui et réussissez votre entretien !