PHP é bom para estruturas de dados e algoritmos?
Para aprendê-los, sim, desde que você largue um hábito: usar um array para tudo. O array do PHP é flexível o bastante para ser lista, dicionário e pilha, e é exatamente isso que esconde o custo de cada operação. Construa as estruturas você mesmo, e o PHP vira uma linguagem perfeitamente boa para raciocinar sobre algoritmos, e a natural para fazer entrevistas se o seu trabalho é com PHP.
Quais classes da SPL correspondem a quais estruturas de dados?
SplStack e SplQueue são uma pilha e uma fila, ambas construídas sobre SplDoublyLinkedList; SplMinHeap e SplMaxHeap são heaps; SplPriorityQueue é um max-heap ordenado por prioridade; e SplFixedArray é um array de tamanho fixo com índices inteiros que usa menos memória que um array. O array comum é a sua tabela hash. Não existe classe de árvore, trie nem grafo, então esses você mesmo escreve, nos passos um e dois.
Por que array_shift é lento para uma fila em PHP?
Porque, depois de remover o primeiro elemento, ele renumera a partir do zero todas as chaves inteiras restantes, o que percorre o array inteiro: uma fila construída com array_shift custa O(n) por remoção e tempo quadrático para ser esvaziada. Use SplQueue, ou mantenha um índice para a cabeça do array e avance-o. No passo um você constrói uma fila por conta própria, que é o jeito mais seguro de ver a diferença.
sort() é estável em PHP?
Desde o PHP 8.0, sim: sort(), usort(), asort() e as outras funções de ordenação mantêm os elementos iguais na ordem original. Antes da 8.0 elas não prometiam isso, então código que dependia da ordem de elementos iguais podia se comportar de forma diferente entre versões. Das oito ordenações do passo três, o merge sort e o insertion sort são estáveis e o quicksort e o heap sort não são; depois dele, você sabe por quê.
Quais cursos desta trilha não são ensinados em PHP?
Três: programação dinâmica e a série de entrevistas em Python, ensinadas em Python, e manipulação de bits, ensinada em C++. Eles aparecem listados depois dos passos, cada um com um link que o abre na própria linguagem. Uma tabela de memoização em PHP é um array que usa o subproblema como chave. Uma armadilha ao portar truques com bits: se os dois operandos de &, | ou ^ forem strings, o PHP opera sobre os valores de byte dos caracteres e devolve uma string, então garanta antes que os valores sejam inteiros.
Preciso saber PHP antes de começar esta trilha?
Funções, arrays, laços e classes, no mínimo, já que um nó é naturalmente um objeto com uma propriedade $next. Se isso for novidade, o curso de PHP da Coddy te leva até esse ponto primeiro, de graça, e esta trilha continua de onde ele termina.