1) Дополните реализацию группы Студентов возможностью сортировки массива студентов по фамилии. 2) Создайте отдельный класс который реализует считывание характеристик студента с клавиатуры

У вас в методе добавления Студента в группу логическая ошибка. А именно при добавлении студента вы вызываете break и выходите из цикла.

newStudent.setGroupNumber(groupName);
System.out.println("Student " + student[i].getRecordBook() + " is added!");
break;

Но после цикла вы генерируете исключение

throw new FullGroupException();

Т.е. хоть есть места есть хоть нет, то все равно генерируется исключение. Что противоречит условию.
Метод поиска студента должен возвращать Студента у вас же

public void searchStudent(String lastName) {

Сортировка студентов то же содержит очень странный момент

for (int i = 0; i < student.length; i++) {
Arrays.sort(student, Comparator.nullsFirst(new SortStudentsByLastNameComparator()));
}

Зачем вы сортируете массив 10 РАЗ??? Его же один раз сортировать нужно
Класс для считывания данных с клавиатуры. Он же бесполезен как вы с его помощью добавите созданного Студента в группу?
В вашем решении еще много чего стоит доработать.