większość dużych firm technologicznych, takich jak Microsoft, koncentruje się głównie na strukturach danych. Wygląda na to, że struktury danych są jedyną rzeczą, jakiej oczekują od absolwenta.
Nie, jest więcej. Na przykład, możemy również spodziewać się, że będzie szybko uczący się, którzy mogą uczyć się nowych ram Apis lub języków programowania nawet w krótkim czasie. To czysty minimalny pasek. Ktoś, kto nauczy się dużo nowego frameworku, interfejsu API lub języka, nie odniesie sukcesu w większości zespołów Microsoft.
I oczywiście jest wiele innych aspektów, na których skupiamy się w wywiadach, poza zwykłą znajomością struktur danych. Na przykład umiejętność radzenia sobie z niejednoznacznymi specyfikacjami lub rozpoznawanie wzorców kodowania, które wytwarzają niepewny kod, lub tuzin innych rzeczy. Ale umiejętność zrozumienia struktur danych jest z pewnością bardzo duża.
Jest to szczególnie przypadku, że wywiady są dociskane do testowania znajomości struktur danych dla absolwentów CS. Niedawni absolwenci, z których większość nie ma dużego doświadczenia w świecie rzeczywistym, nie powinni być dobrzy w tych samych sprawach, w których ktoś z piętnastoletnim doświadczeniem w branży byłby dobry.
Muszę wyznać, że nie byłem tak silny w strukturach danych
Dobrze, że wiesz o sobie. Jeśli nie możesz lub nie chcesz tego zmienić o sobie, zalecam, abyś nie ubiegał się o pracę wymagającą ułatwienia ze strukturami danych.
istnieje ogólna perspektywa, że dobry programista musi koniecznie mieć dobrą wiedzę na temat struktur danych.
To jest tautologiczne, że dobry programista to programista, który jest dobry w budowaniu programów, które trzeba zbudować. Wielu programistów pracuje nad zadaniami, które nie wymagają głębokiej znajomości struktur danych. Niektóre z nich pracują np. Nad zadaniami wymagającymi dogłębnej znajomości projektowania interfejsu użytkownika. Lub normalizacja bazy danych. Lub cokolwiek. Ci ludzie nadal mogą być „dobrymi programistami” w swoich domenach.
dlaczego cały ten nacisk na struktury danych?
Zadaję pytania dotyczące wywiadu dotyczące struktur danych, ponieważ w moim zespole programiści projektują, wdrażają i manipulują złożonymi strukturami danych przez cały dzień każdego dnia. Wczoraj mieliśmy cztery godziny spotkań, podczas których pół tuzina programistów dyskutowało o zaletach i wadach dodawania pojedynczego pola logicznego do konkretnego węzła drzewa. Prawdopodobnie w moim zespole nie ma umiejętności ważniejszych niż umiejętność zrozumienia struktur danych na głębokim poziomie. Byłoby głupotą nie zadawać pytań na ten temat, ponieważ to właśnie robimy.
Czy brak wiedzy na temat struktur danych naprawdę nie wpływa na karierę programisty?
Cóż, to z pewnością uniemożliwi ci znalezienie pracy w moim zespole. Ale jak powiedziałem wcześniej, programowanie jest ogromną dziedziną. Istnieje wiele rodzajów programowania komputerowego, które nie wymagają znajomości struktur danych.
czy wiedza z tego przedmiotu jest naprawdę wystarczającą podstawą do odróżnienia dobrego i złego programisty?
Nie. Ale prawie zawsze wystarcza wykrycie programistów, którzy raczej nie odniosą sukcesu w Microsoft. Ponieważ to przede wszystkim interesuje mnie wykrywanie, znajomość struktur danych jest jednym z czynników, które sprawdzam w wywiadach.