Czy Dart nadaje się do nauki algorytmów i struktur danych?
Tak. Jest typowany i oparty na klasach, podobny w kształcie do Javy czy C#, więc klasa Node<T> z nullowalnym next jest dokładnie tym, na co wygląda, a dart:collection obejmuje więcej niż większość bibliotek standardowych. Warto wiedzieć dwie rzeczy: podstawowe SDK nie ma kolejki priorytetowej, a literał Map albo Set to LinkedHashMap albo LinkedHashSet, który pamięta kolejność wstawiania. To wygodne przy wypisywaniu wyników, ale to nie ta sama obietnica co mapa posortowana.
Które klasy Darta odpowiadają którym strukturom danych?
List to tablica dynamiczna i twój stos. Map i Set to tablice mieszające, domyślnie uporządkowane według kolejności wstawiania. dart:collection dodaje Queue (czyli ListQueue, bufor cykliczny, chyba że wybierzesz DoubleLinkedQueue), LinkedList dla elementów rozszerzających LinkedListEntry oraz SplayTreeMap i SplayTreeSet, samodostosowujące się drzewa uporządkowane. Kopiec zapewnia PriorityQueue z pakietu package:collection zespołu Darta. Drzewa trie i grafy trzeba napisać samodzielnie.
Czy Dart ma kolejkę priorytetową?
Nie w podstawowym SDK. dart:collection kończy się na kolejkach, listach wiązanych i drzewach splay, a PriorityQueue znajduje się w package:collection, pakiecie utrzymywanym przez zespół Darta, który jednak dodajesz samodzielnie. Dlatego napisanie kopca to uczciwe zadanie na rozmowie rekrutacyjnej z Darta, a krok drugi to miejsce, w którym go piszesz.
Czym jest drzewo splay i kiedy używać SplayTreeMap?
Drzewo splay to samodostosowujące się drzewo BST: każdy dostęp przenosi dotknięty węzeł do korzenia, więc do niedawno używanych kluczy można szybko wrócić, a operacje kosztują O(log n) w ujęciu zamortyzowanym, bez gwarancji dla każdego pojedynczego wywołania. Używaj SplayTreeMap, gdy potrzebujesz kluczy w kolejności posortowanej, najmniejszego lub największego klucza albo najbliższego klucza po dowolnej stronie wartości, przez firstKeyAfter i lastKeyBefore. Drzewo AVL budowane w kroku drugim działa inaczej: równoważy się przy każdej zmianie, żeby ściśle ograniczyć swoją wysokość.
Które kursy z tej ścieżki nie są prowadzone w Dart?
Trzy: programowanie dynamiczne i seria rekrutacyjna w Pythonie, prowadzone w Pythonie, oraz operacje na bitach, prowadzone w C++. Są wymienione po krokach, każdy z linkiem, który otwiera go w jego własnym języku. Memoizacja w Dart to List albo Map, a toRadixString(2) wypisuje int w postaci binarnej, co jest najszybszym sposobem, żeby sprawdzić, co naprawdę zawiera maska.
Czy muszę znać Darta, zanim zacznę tę ścieżkę?
Przynajmniej klasy, typy generyczne, listy, mapy i null safety. Jeśli to dla ciebie nowość, kurs Darta w Coddy najpierw cię tam doprowadzi, za darmo, a ta ścieżka zaczyna się tam, gdzie on się kończy.