Implementing Queue operations in $\Theta(1)$
The problem can be solved by keeping two deques $Q_1$ and $Q_2$ (implemented, e.g., using doubly linked lists) with the invariant that $Q_1$ always contains the first $\lceil n/2 \rceil$ elements of the queue.

The operations are implemented as follows:


push($x$): push $x$ at the beginning of $Q_1$. If the invariant is violated, then pop the last element $y$ from the end of $Q_1$ and push $y$ at the front of $Q_2$.
get(): return the element at the beginning of $Q_1$.
pop(): pop the the element at the beginning of $Q_1$. If the invariant is violated then pop the first element $y$ from the beginning of $Q_2$ and push $y$ at the back of $Q_1$. 
getMiddle(): return the element at the end of $Q_1$.
popMiddle(): pop the element at the end of $Q_1$. If the invariant is violated then pop the first element $y$ from the beginning of $Q_2$ and push $y$ at the back of $Q_1$.