Maison > interface Web > js tutoriel > le corps du texte

Améliorez votre jeu d'entretien avec des problèmes pratiques

WBOY
Libérer: 2024-08-21 06:18:02
original
1076 Les gens l'ont consulté

Level Up Your Interview Game with Practice Problems

Introduction

Pour ceux qui ne me connaissent pas, je suis un ingénieur Frontend avec plus de 10 YOE qui a également créé BigDevSoon - SaaS (plateforme d'apprentissage de code nouvelle génération où vous apprenez en créant des éléments dès le premier jour.) Plus de 10 000 utilisateurs bientôt/ 1 000 $ MRR ce mois-ci.

Même si j'aime créer des interfaces utilisateur modernes dans React, la transformation du rôle "Frontend" au fil des années m'a obligé à plusieurs reprises à être un développeur Full-Stack, à créer des BFF (Backend for Frontend), à analyser et à réfléchir. des tonnes de structures de données et travailler avec des bases de données. D'une autre manière, nous ne sommes plus des développeurs de « sites Web » et pour suivre le rythme, nous devons apprendre et nous adapter tout le temps.

Dans les temps de marché difficiles d'aujourd'hui, il m'a fallu plus d'un mois pour décrocher mon dernier emploi, vous pouvez en savoir plus sur ce voyage ici. En passant des entretiens de type marathon avec souvent plus de 10 étapes, j'ai compris les nouveaux modèles et comment nous devons nous adapter plus facilement aux emplois décrochés.

L'une des tendances que j'ai remarquées concerne la communication et les compétences générales, par ex. "Enregistrez votre vidéo de bienvenue et parlez-nous de vous." ou 3x+ entretiens comportementaux/culturels "Que feriez-vous dans x situation et pourquoi, expliquez." mais c'est un sujet pour un autre jour que je n'aborderai pas dans cet article.

Une seule chose que je mentionnerai pour ce qui précède et qui vaut la peine d'être faite si vous n'êtes pas encore un "influenceur", c'est d'essayer de vous enregistrer et même d'essayer de réaliser une fonctionnalité de démonstration que vous avez créée, un projet parallèle ou de présenter vous-même et votre carrière (par exemple, résumez votre CV, votre expérience, vos projets passés en 3 à 5 minutes maximum). Vous écouterez cela et découvrirez peut-être que votre voix est trop basse ou que vous stressez trop devant la caméra. C'est un bon exercice pour surmonter cette peur et imaginer franchir 9/10 étapes et échouer à parler avec un PDG/TL/Manager simplement parce que vous n'avez pas pratiqué cela. Ce serait dommage.

Un autre sujet concerne les problèmes de pratique bien connus, mais croyez-moi, vous n'avez pas besoin de maîtriser l'ensemble du DSA, y compris des choses comme l'algorithme de Dijkstra ou les arbres rouge-noir (même si cela vous sera utile pour réussir vos prochains entretiens).

Il suffit d'un peu de travail et de préparation pour ne pas être pris au dépourvu et résoudre ces "petits problèmes" que de nombreuses entreprises utilisent de nos jours pour filtrer les candidats et ne pas perdre de temps sur de longs entretiens. en investissant leurs ressources (par exemple les personnes qui ont besoin d'un entretien, etc.)

Ce qui manque à de nombreux développeurs "Waterfall" après les camps d'entraînement/cours, ce sont des compétences en résolution de problèmes, ces programmes vous prennent souvent par la main et ne vous permettent pas beaucoup de réfléchir par vous-même - ne disant pas que c'est mal mais pour devenir meilleurs. différentes techniques sont nécessaires et pour réussir des entretiens sous pression, cela fait une énorme différence de pouvoir trouver rapidement des solutions aux problèmes que vous avez reconnus il y a 10 minutes et que les intervieweurs s'attendent à ce qu'ils soient résolus en moins d'une heure.

Apprenons-en davantage à ce sujet à partir de l'un des exemples que j'ai vécus, puis je partagerai une habitude quotidienne qui m'a aidé lors de mes entretiens et présenterai quelques problèmes pratiques de résolution de problèmes intéressants.

Le problème du palindrome

Donc, un palindrome est une valeur qui se lit de la même manière vers l'arrière ou vers l'avant. Par ex. racecar est un palindrome mais bonjour n'est pas un palindrome car lorsque vous inversez cette valeur, ce serait olleh à la place.

Je suis en appel avec un recruteur de l'une des entreprises pour lesquelles je postulais et nous avons cette petite conversation décontractée car c'était l'une des premières étapes dans cette entreprise. Et maintenant BOUM, les 10 dernières minutes de l'interview "Hé, une dernière question, pourrais-tu écrire une solution de code pour le problème du palindrome ?" ... et j'ai été un peu pris au dépourvu.

Mais nous avons compris ceci, en sautant instantanément sur https://jsfiddle.net/ et en écrivant :

function isPalindrome(string) {
  return string.split('').reverse().join('') === string;
}
Copier après la connexion

Fier de moi, mais le recruteur dit "S'il vous plaît, n'utilisez pas de méthodes intégrées.".

Ok, pas de problème du tout, nous manquons bientôt de temps mais j'ai compris.

Passez du temps à trouver une solution idiote, quelque chose comme ceci :

function isPalindrome(string) {

  let isValid = true;

  for (let i = 0; i < string.length / 2; i++) {
    if (string[i] !== string[string.length - i - 1]) {
      isValid = false;
    }
  }

  return isValid;
}
Copier après la connexion

et bien sûr, le recruteur a commencé à parler de la notation Big O. Nous avons encore parlé et j'ai été arrêté, à nouveau pris au dépourvu.

Disons qu'une solution acceptable serait quelque chose comme ceci :

function isPalindrome(string) {
    const normalizedString = string
    .toLowerCase()                    // Convert to lowercase
    .replace(/[^a-z0-9]/g, '');       // Remove non-alphanumeric characters

  for (let i = 0; i < normalizedString.length / 2; i++) {
    if (normalizedString[i] !== normalizedString[normalizedString.length - i - 1]) {
      return false;
    }
  }

  return true;
}
Copier après la connexion

Nous faisons 2 choses ici, d'abord, nous avons normalisé une chaîne donc pour Un homme, un plan, un canal : Panama, nous obtenons amanaplanacanalpanama et nous quittons la boucle tôt plutôt que de toujours parcourir "la moitié de la valeur de la chaîne".

Ce n'est qu'un exemple, mais apprenons ce qui ne va pas.

  1. Manque de communication, je n'ai même pas demandé si le recruteur voulait dire du pseudo-code, s'il voulait faire des types stricts comme TypeScript, ou si fiddle était le bon choix.
  2. Je n'ai pas validé si je pouvais utiliser Google/ChatGPT (enfin, c'était une chose super facile à résoudre mais je n'avais presque pas de temps et après avoir écrit une seule ligne, j'étais encore plus distrait).
  3. J'ai mentionné que ma dernière solution pouvait être améliorée mais nous n'avons pas eu le temps de l'écrire. C'était peut-être une question d'entretien étrange qui m'a surpris à la fin, mais en posant des questions appropriées telles que "Puis-je utiliser des méthodes intégrées, dois-je utiliser une boucle pour cela, dois-je écrire un pseudo-code ou une solution fonctionnelle, puis-je rechercher sur Google" /ChatGPT?" Cela me ferait certainement gagner beaucoup de temps.

Leçons apprises, j'ai commencé mon travail sur leetcode. Toujours 1+ problème par jour, mais en choisissant principalement parmi la difficulté Facile/Moyenne et en essayant de se concentrer sur les problèmes qui « sont de nature humaine » comme les recruteurs les utilisent habituellement, par ex. Meilleur moment pour acheter et vendre des actions On m'a confié une tâche dans l'une des entreprises suivantes pour laquelle je postulais et je l'ai résolue. J'aime interroger ChatGPT sur l'entreprise pour laquelle je postule et recommander des problèmes pratiques qui pourraient être pertinents, en ajoutant même un message du recruteur comme contexte supplémentaire. (Oui, vous pouvez leur demander par e-mail à quoi s'attendre lors de l'entretien s'ils ne l'expliquent pas très bien).

Après un certain temps, vous commencerez à voir des modèles, des problèmes de tableau, des problèmes de chaîne, des pièces de connexion et à vous améliorer, car les méthodes que vous utilisez pour résoudre ces problèmes peuvent être partagées même si les cas de test diffèrent ou si la nature du problème est différente. complètement différent.

Problèmes à vérifier

Alors que nous ajoutons de plus en plus de fonctionnalités à notre plate-forme, je ferai un plug-in sans vergogne avec les problèmes de pratique sur BigDevSoon, 41 d'entre eux en ce moment, en essayant de garder les choses simples (KISS) et de sélectionner les problèmes les plus pertinents. + quelques autres pour l'échauffement (Niveau Facile).

J'en énumère ci-dessous 10 que je trouve intéressants à résoudre.

1. Palindrome

2. Trouver Max

3. Meilleur moment pour acheter et vendre des actions

4. Récipient contenant le plus d’eau

5. Compter les voyelles

6. Anagrammes de groupe

7. Compression des cordes

8. Sous-ensembles

9. Top N mots fréquents

10. Rechercher tous les doublons dans un tableau

Résumé

Et c'est tout ! Il y a beaucoup à apprendre de ces problèmes pratiques, chacun étant une façon amusante d'activer votre cerveau.

Mon objectif depuis longtemps est de diffuser une approche d'apprentissage par projet à travers la communauté et de faire fonctionner BigDevSoon, une application sur laquelle nous travaillons depuis 3 ans. C'est une grande réussite pour nous.

Continuez à coder en GRAND ! ?‍♂️

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal