Olá João!
Sem o virtual e override o uso do GetBonificacao() será o do tipo que é declarado o objeto, por isso a variável robertaTeste ficou com o método da classe Funcionario. Neste caso foi apenas uma repetição do nome do método, tanto que o método estava sublinhado em verde.
Ao usar o virtual e override, aí sim ocorre o polimorfismo, tanto que no exemplo, mesmo declarando robertaTeste como Funcionario, é usado o GetBonificacao() de Diretor, pois é este o tipo da variável roberta, ao qual foi referência para robertaTeste.
Quanto ao exercício, o tipo é ContaCorrente e essa classe já tem seu próprio método de CalcularTaxaAdministrativa() que com certeza ficaria sublinhado de verde no Visual Studio. Se tivesse sido declarado como Conta aí sim o retorno seria 1, pois não houve sobrescrita de métodos.
Bons estudos!