Améliorez votre jeu d'entretien avec des problèmes pratiques
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; }
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; }
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; }
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.
- 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.
- 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).
- 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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Python convient plus aux débutants, avec une courbe d'apprentissage en douceur et une syntaxe concise; JavaScript convient au développement frontal, avec une courbe d'apprentissage abrupte et une syntaxe flexible. 1. La syntaxe Python est intuitive et adaptée à la science des données et au développement back-end. 2. JavaScript est flexible et largement utilisé dans la programmation frontale et côté serveur.

Les principales utilisations de JavaScript dans le développement Web incluent l'interaction client, la vérification du formulaire et la communication asynchrone. 1) Mise à jour du contenu dynamique et interaction utilisateur via les opérations DOM; 2) La vérification du client est effectuée avant que l'utilisateur ne soumette les données pour améliorer l'expérience utilisateur; 3) La communication de rafraîchissement avec le serveur est réalisée via la technologie AJAX.

L'application de JavaScript dans le monde réel comprend un développement frontal et back-end. 1) Afficher les applications frontales en créant une application de liste TODO, impliquant les opérations DOM et le traitement des événements. 2) Construisez RestulAPI via Node.js et Express pour démontrer les applications back-end.

Comprendre le fonctionnement du moteur JavaScript en interne est important pour les développeurs car il aide à écrire du code plus efficace et à comprendre les goulots d'étranglement des performances et les stratégies d'optimisation. 1) Le flux de travail du moteur comprend trois étapes: analyse, compilation et exécution; 2) Pendant le processus d'exécution, le moteur effectuera une optimisation dynamique, comme le cache en ligne et les classes cachées; 3) Les meilleures pratiques comprennent l'évitement des variables globales, l'optimisation des boucles, l'utilisation de const et de locations et d'éviter une utilisation excessive des fermetures.

Python et JavaScript ont leurs propres avantages et inconvénients en termes de communauté, de bibliothèques et de ressources. 1) La communauté Python est amicale et adaptée aux débutants, mais les ressources de développement frontal ne sont pas aussi riches que JavaScript. 2) Python est puissant dans les bibliothèques de science des données et d'apprentissage automatique, tandis que JavaScript est meilleur dans les bibliothèques et les cadres de développement frontaux. 3) Les deux ont des ressources d'apprentissage riches, mais Python convient pour commencer par des documents officiels, tandis que JavaScript est meilleur avec MDNWEBDOCS. Le choix doit être basé sur les besoins du projet et les intérêts personnels.

Les choix de Python et JavaScript dans les environnements de développement sont importants. 1) L'environnement de développement de Python comprend Pycharm, Jupyternotebook et Anaconda, qui conviennent à la science des données et au prototypage rapide. 2) L'environnement de développement de JavaScript comprend Node.js, VScode et WebPack, qui conviennent au développement frontal et back-end. Le choix des bons outils en fonction des besoins du projet peut améliorer l'efficacité du développement et le taux de réussite du projet.

C et C jouent un rôle essentiel dans le moteur JavaScript, principalement utilisé pour implémenter des interprètes et des compilateurs JIT. 1) C est utilisé pour analyser le code source JavaScript et générer une arborescence de syntaxe abstraite. 2) C est responsable de la génération et de l'exécution de bytecode. 3) C met en œuvre le compilateur JIT, optimise et compile le code de point chaud à l'exécution et améliore considérablement l'efficacité d'exécution de JavaScript.

Python est plus adapté à la science et à l'automatisation des données, tandis que JavaScript est plus adapté au développement frontal et complet. 1. Python fonctionne bien dans la science des données et l'apprentissage automatique, en utilisant des bibliothèques telles que Numpy et Pandas pour le traitement et la modélisation des données. 2. Python est concis et efficace dans l'automatisation et les scripts. 3. JavaScript est indispensable dans le développement frontal et est utilisé pour créer des pages Web dynamiques et des applications à une seule page. 4. JavaScript joue un rôle dans le développement back-end via Node.js et prend en charge le développement complet de la pile.
