Não entendi o motivo da exceção:
public class TestaEmpresa {
    public static void main(String[] args) {
        Empresa empresa = new Empresa();
        empresa.empregados = new Funcionario[10];
        for (int i = 0; i < 5; i++) {
            Funcionario f = new Funcionario();
            f.salario = 1000 + i * 100;
            f.nome = "teste";
            empresa.adiciona(f);
        }
//          empresa.empregados[0].mostra();
//        empresa.empregados[1].mostra();
          empresa.mostraEmpregados();
    }void mostraEmpregados() {
            for (int i = 0; i < this.livre; i++) {
                System.out.println("Funcionário na posição: " + i);
                System.out.println("Nome: " + this.empregados[i].nome);
                System.out.println("R$" + this.empregados[i].salario);
                System.out.println("Datade entrada: " + this.empregados[i].dataEntrada);
                System.out.println("Departamento: " + this.empregados[i].departamento);
                System.out.println("RG: " + this.empregados[i].rg);
            }
        } 
             
            