Nouveau : Datasets open source gratuits disponibles !Decouvrir →
💼
entretiens 20 entrees

Entretien technique C#

"Accédez à notre cheatsheet complète pour un entretien technique C#: des questions clés et réponses précieuses."

Voici une cheatsheet d'entretien technique C# en français :

Questions théoriques fréquentes

Q: Qu'est-ce qu'une collection générique en C# ? Une collection générique est un type de collection qui peut stocker des objets d'un seul type. Elle offre des avantages tels que l'optimisation des performances et la sécurité du typage.

List<int> numbers = new List<int>();
numbers.Add(1);
int firstNumber = numbers[0];

Q: Quelle est la différence entre ref et out en C# ?

  • ref : doit être initialisée avant d'être passé et doit être modifiée.
  • out : peut être non-initialisée avant de passer, doit être modifiée et peut retourner une valeur.
int result;
bool success = TryParse("123", out result);

Exercices de code classiques

Q1: Inverser les éléments d'un tableau

void ReverseArray(int[] array)
{
    int start = 0;
    int end = array.Length - 1;

    while (start < end)
    {
        int temp = array[start];
        array[start] = array[end];
        array[end] = temp;

        start++;
        end--;
    }
}

Q2: Trouver le plus grand élément d'une liste

int FindMaxElement(List<int> list)
{
    if (list.Count == 0) throw new ArgumentException("List cannot be empty");

    int max = list[0];
    foreach (int num in list)
    {
        if (num > max)
        {
            max = num;
        }
    }

    return max;
}

Q3: Afficher les entiers pairs d'un tableau

void PrintEvenNumbers(int[] array)
{
    foreach (int num in array)
    {
        if (num % 2 == 0)
        {
            Console.WriteLine(num);
        }
    }
}

Q4: Supprimer tous les doublons d'une liste

List<int> RemoveDuplicates(List<int> list)
{
    HashSet<int> seen = new HashSet<int>();
    List<int> result = new List<int>();

    foreach (int num in list)
    {
        if (!seen.Contains(num))
        {
            seen.Add(num);
            result.Add(num);
        }
    }

    return result;
}

Q5: Vérifier si une chaîne est un palindrome

bool IsPalindrome(string str)
{
    int left = 0;
    int right = str.Length - 1;

    while (left < right)
    {
        if (str[left] != str[right])
        {
            return false;
        }

        left++;
        right--;
    }

    return true;
}

Pieges courants en entretien

P1: Ne pas comprendre la différence entre == et Equals() == compare les valeurs, tandis que Equals() est défini dans le type objet et peut être surchargé.

P2: Utiliser des variables de instance au lieu de propiétés en lecture seule Cela rend le code plus difficile à maintenir et peut introduire des bugs.

// Ne faire pas ça
private int _age;
public int Age { get => _age; }

P3: Ignorer les exceptions Si une exception est ignorée, elle peut masquer un problème de code sous-jacent.

try
{
    // Code qui lève une exception
}
catch
{
    // Ne pas faire ça
}

P4: Utiliser des méthodes statiques pour tout Les méthodes instanciées offrent plus de flexibilité et permettent un meilleur respect du principe d'encapsulation.

public class Calculator
{
    public int Add(int a, int b)
    {
        return a + b;
    }
}

P5: Ignorer le garbage collector Cela peut entraîner une fragmentation de la mémoire et des performances dégradées.

// Ne pas faire ça
int[] largeArray = new int[1000000];
largeArray = null;
GC.Collect();

Complexité algorithmique

O(1): Accès direct à un élément dans un tableau O(n): Parcourir tous les éléments d'une liste O(log n): Recherche dichotomique O(n^2): Double boucle imbriquée

Concepts avancés à connaître

Q1: Les générateurs et le yield Les générateurs permettent de créer des séquences de valeurs de manière éfficace.

public static IEnumerable<int> GetNumbers(int count)
{
    for (int i = 0; i < count; i++)
    {
        yield return i;
    }
}

Q2: Les délégués et les fonctions lambda Les délégués permettent de passer des méthodes comme des paramètres à d'autres méthodes.

Func<int, int> square = x => x * x;
int result = square(5);

Q3: Les expressions régulières Les expressions régulières offrent une puissance pour traiter et analyser les chaînes de caractères.

Regex pattern = new Regex(@"\d+");
MatchCollection matches = pattern.Matches("abc123def456");

Q4: Les interfaces Les interfaces définissent un contrat que les classes doivent respecter.

public interface IShape
{
    double GetArea();
}

public class Circle : IShape
{
    public double Radius { get; set; }

    public double GetArea()
    {
        return Math.PI * Radius * Radius;
    }
}

Q5: Les énumérations Les énumérations offrent une façon plus lisible et sûre de travailler avec un ensemble limité de valeurs.

public enum Color
{
    Red,
    Green,
    Blue
}

Color myColor = Color.Green;

Conseils pratiques

T1: Maîtrisez les bases Comprendre les concepts fondamentaux est essentiel pour réussir l'entretien.

T2: Soyez préparé Pratiquez régulièrement et apprenez de nouvelles techniques et langages.

T3: Montrez votre créativité Proposez des solutions innovantes et optimisées.

T4: Demandez des explications N'hésitez pas à demander des explications sur les concepts complexes.

T5: Soyez professionnel Arrivez en retard, présentez-vous de manière professionnelle et soyez respectueux avec vos interlocuteurs.

Projet C# a lancer ?

Besoin d'aide sur un projet ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Questions frequentes

A quoi sert cette cheatsheet C# ?
Cette cheatsheet C# regroupe la syntaxe, les commandes et les astuces essentielles pour C#. Elle est concue pour servir d'aide-memoire rapide, que vous soyez debutant ou developpeur confirme cherchant une reference rapide.
Comment utiliser cette cheatsheet C# ?
Parcourez les sections pour trouver la syntaxe ou la commande dont vous avez besoin. Vous pouvez la garder ouverte dans un onglet pendant que vous codez, ou la copier dans vos notes pour un acces hors ligne.
Cette cheatsheet est-elle a jour ?
Oui, nos cheatsheets sont regulierement mises a jour pour refleter les dernieres versions et bonnes pratiques de C#. Si vous remarquez une information obsolete, n'hesitez pas a nous contacter.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.