Czytając tę stronę i SO, widziałem wiele historii pytań i odpowiedzi na rozmowy kwalifikacyjne, które mówiły, że kandydat musiał zaimplementować listę od podstaw. Zwykle jest to ćwiczenie „gimme” do programowania kandydatów na role, takich jak pisanie FizzBuzz. Chodzi o to, że jeśli kandydat nie może tego zrobić, nie może zaprogramować i powinien zostać odrzucony niemal natychmiast.
Nie mogę jednak nie myśleć, że może to być kiepska praktyka z następujących powodów:
- Nowoczesne języki wyższego poziomu, takie jak C # i Python, natywnie intensywnie używają list; napisanie własnego obiektu listy połączonej byłoby wymagane tylko w nietypowych okolicznościach, a nawet wtedy prawdopodobnie nie jest zalecane.
- Języki niższego poziomu, takie jak C ++, mają standardowe biblioteki z iteratorami / kontenerami list i obiektami.
- W świetle pierwszych dwóch punktów, koderzy mogą latami nawet nie myśleć o implementacji listy (połączonej, podwójnie powiązanej itp.). Niektórzy mogą nawet nie widzieć takich rzeczy od czasów studenckich.
- Moc obliczeniowa również nie jest tak ważna jak przed laty, więc wydajność za pomocą wskaźników nie jest już takim problemem (jak zwykle).
- Proste wyszukiwanie w Internecie czegoś w rodzaju „przykładowej listy łączonej” przyniosłoby wiele przykładów kodu, które można po prostu zapamiętać i wypluć z powrotem, nie tak naprawdę wskazując na prawdziwe kompetencje wnioskodawcy.
Powinienem powiedzieć, że korzystanie z połączonej listy do prowadzenia otwartych pytań / dyskusji na temat rozwiązywania problemów przez kandydatów / umiejętności krytycznego myślenia jest zazwyczaj bardzo dobrą praktyką podczas rozmowy kwalifikacyjnej. W jakikolwiek sposób ankieter może naprawdę zobaczyć, jaki jest wnioskodawca i jak jego zdaniem jest niezwykle korzystny.
Myślę, że to binarne podejście „brak połączonego kodu listy, brak pracy” dla programistów pracujących na komputerze lub aplikacji internetowej jest nieco przestarzałe. Może to być również bardzo szkodliwe; kandydat, który nie pamięta, jak prawidłowo pracować z szefem listy, może być doskonałym koderem i współpracownikiem i zagubić się w miksie. Myśli?
EDYCJA : Istnieje wiele (dobrych) komentarzy sugerujących, że pytanie, czy jest to dobre, czy złe pytanie, zależy od kontekstu pracy. Zdecydowanie się zgadzam, więc pozwól mi przeformułować to pytanie: Wdrażanie listy połączonej jest częstym pytaniem podczas wywiadu dla szerokiego zakresu zadań kodowania, podobnych do pytań takich jak FizzBuzz lub pisanie funkcji rekurencyjnej do obliczania silni. Czy to pytanie ma wystarczającą użyteczność, aby być powszechnie używanym do oceny kandydatów na programistów na całym forum? A może należy rozważyć złe pytanie, z wyjątkiem stanowisk „Starszy programista, Zespół list osadzonych”?