The typical engineer is not a genius. Don't compare yourself to geniuses. The typical engineer also makes more than you do, and you should find a job and close that gap. If you are feeling like you are unworthy, go talk to any chaps in London about the guys making 50k sterling while being unable to do FizzBuzz. (I assume you have them in London, too.)
If you're worried about your portfolio being insufficiently graphically impressive, well, pick an off-the-rack template which looks pretty, then build an example site off of that. You can reference the case studies of what you've done without actually showing the sites. Just tell people that your previous bosses are uptight corporate types.
The Internets is full of people looking for competent PHP developers, if you can't find them locally. Network network network, develop a speciality, blog, all the usual advice here.
On a bad day can't solve some of those interview problems. (and I think of myself as an average coder although I try to mitigate that handicap by building from the ground
up and testing those components well)
I just got thrown the FizzBuzz test a couple days ago. First time I had ever seen it. Startled me that everyone else knows what it is too! I don't know if it would be blindingly obvious without the mod operator.
Let's see: x / y * y == x iff x % y == 0, if your language handles integer division like most do.
If your language doesn't do integer division that way, the naive approach is even easier if you know how to round: x / y == round(x / y) iff x % y == 0.
There are many, many other approaches which will work, too. I saw one guy hand-build an array of ints, initialize to zero, loop over it once with arr[i++] = 0; arr[i++] = 0; arr[i++] = 3 to set the multiples of 3, then do the same thing with the fives except checking to see if there was already a 3 there, then looping over the array a fourth time to handle the actual printing.
That is the kind of competent, worksmanlike programming that runs the world while the can't-do-FizzBuzz guys are hopefully not touching the code too much.
The main danger with using the mod operator is that you can get an off-by-one if you aren't in the habit of using it and forget the exact definition. If that's in doubt, rolling your own thing with a division or a while/if makes for a stronger guarantee of success on the first try.
In an interview you could explain your reasoning for such a detour as well, which might work out better than just "knowing the answer."
var s = require('sys');
for (var i = 1; i < 101; i++) {
if (i%3 == 0 && i%5 == 0) s.puts('fizzbuzz');
else if (i%3 == 0) s.puts('fizz');
else if (i%5 == 0) s.puts('buzz');
else s.puts(i);
}
node.fizzbuzz.js
One test I commonly use in interviews is to ask candidates to write a function to sum up an array of values. A scary volume of them can't manage it at all.
If you're worried about your portfolio being insufficiently graphically impressive, well, pick an off-the-rack template which looks pretty, then build an example site off of that. You can reference the case studies of what you've done without actually showing the sites. Just tell people that your previous bosses are uptight corporate types.
The Internets is full of people looking for competent PHP developers, if you can't find them locally. Network network network, develop a speciality, blog, all the usual advice here.