@manikantsharma
Consider a graph with single vertex and a self loop.
Initially, $d[0] = f[0] = 0$ and $vis[0] = false$
Assuming we use adjacency list, representation, we have $adj[0]$ = {$0$}
Now, begin $dfs(0)$ from this vertex,$vis[0] = true$ and $d[0] = 1$
Since $adj[0]$ has only $0$ and this vertex is already visited , we wont call dfs again
At the end of $dfs()$, we set $f[0] = 2$
Now, for $edge(0,0)$ , for condition $d[v] <=d[u] < f[u] <= f[v]$,
we get $d[0] <= d[0] < f[0] <= f[0]$ which evaluates to true. So, we have a back edge.