A function continuous on all irrational points
That is discontinuous at all rational points is the easy part.
Let $x\not\in \mathbb Q, \ \epsilon>0$ and consider the sets $$U_1=\left\{y\in[0,1]:f(y)<\epsilon\right\}\text{ and }U_2=\{y\in[0,1]:f(y)\geq\epsilon\}.$$ To show that $f$ is continuous at $x$ we have to show that $U_1$ contains an interval $(x-\delta,x+\delta)$ for sufficiently small $\delta$.
Note that $U_2\subset \mathbb Q$ and that $\dfrac mn\in U_2\iff n\leq \dfrac1\epsilon$. Also for a fixed $n\in\mathbb N, \dfrac mn\in[0,1]\iff m\in\{0, 1, 2, \ldots, n\}$. Therefore $U_2$ is finite.
Since $U_1\cup U_2=[0,1], \ U_1\cap U_2=\emptyset, \ x\in U_1$and $U_2$ is finite it follows that for some $\delta>0$, $U_2$ and $(x-\delta,x+\delta)$ are disjoint and therefore $ (x-\delta,x+\delta)\subseteq U_1$ This means that $f$ is continuous at $x$.