1) Так как длина массива задается при его создании, то ты не можешь добавить элемент в тот же массив или удалить из него. По факту создается новый массив, который содержит на один элемент большое (n+1) при добавлении элемента или на один элемент меньше (n-1) при удалении элемента
2) Соответственно, у тебя должны быть методы, которые принимают новый элементы, создают новый массив длиной n+1, циклом пробегаются по старому массиву и его старые значения присваиваются новому. Ну и последний переданный элемент в аргументах также присваивается к новому массиву и этот новый массив возвращается из метода.
И можно ли создать массив не указав в название тип элементов который он будет содержать ?
Нет. При создании массива указывается его тип.
Если вам нужна возможность использования обобщений, то смотрите в сторону ArrayList, вместо Array