I'm no young kid. To give a hint I started on punch cards and paper tape, doing Fortran.
I have a masters in computer science from a well known school.
I've retrained myself over and over and I have kept up, so far.
I lost my job in March partly due to COVID, partly my fault.
I've never had to look hard for a job. They always just fell in my lap.
I had an offer 3 weeks after I lost my job. It was for a company that did lots of top secret government work. Embedded.
I passed on it, felt too old school and I started to get the Remote bug.
Then I got the FAANG bug AND the REMOTE bug. FAANG was not an option until this Remote thing came along for me.
I'll be honest these leetcode problems are a b$tch. Are the "Google" ones a lot harder than the Amazon or Facebook ones. Geesh.
Not FAANG but first up was Bose (embedded)
Technical phone interview went great.
They wanted a presentation on a recent project and to present it on site (COVID ==> Virtual).
I think presentation went great.
Rest of the interviews were mostly coding interviews, some just verbal, I think I knew more than some of the folks interviewing me.
But I blew a couple embedded verbal questions (I've done embedded off and on as needed on many projects) and this was the top guy.
This was completely my fault.
Next up was Amazon. So close. All problems seemed so easy compared to leetcode.
But I was so used to problems I didn't recognize a design problem.
One guy was sneaky, I was stupid. It was just finding files names that match a prefix. No problem.
Then he added extensions. No problem. I just passed the extension down through functions, Bzzzt, blew it right there (maybe earlier).
He wanted me to build an encapsulated "file matcher" class and pass that around.
But my brain was looking for where is the DP, or Memoization?
I might have blown behavior, see below.
Next up facebook (Mobile), facebook folks seem the most genuine easy going folks, didn't sense a lot of behavior questions (or I'm just stupid and there was some).
The whole day was going great. I was done with every problem (2 per interview) with time to spare. Again, all way easier than leetcode.
Except one (typical medium leetcode), but the interviewer basically said you got this, your fine and moved on to something else, but it wasn't done.
But I completely fell on my face on design interview. I was a deer in the headlights. Was not preapred at all. FB is big on this.
Not easy to practice that. Watched plenty of Videos. But you have to actually do it. And you need to do it in front of people.
And you need to drive it. Next time, if there is one.
I had a friend that got into amazon, interview me for behavioral and he said I did horrible, need better stories.
We did it again and he thought I did much better. But I've not got that far since.
Next up Google (Alphabet Mobile).
Failed the first technical interview. I thought it went fantastic. But it was suspicously easy.
I didn't realize what went wrong until a few days later.
I'm guessing, that it was an MVC design problem. He was basically asking me to help him implement a poorly designed MVC framework (i.e. model code in the View). I just did what he told me like a good boy. I think he wanted me to challenge him and basically say this is all wrong before we wrote a line of code. Oh and this guy could type faster than I have ever seen in my life. Unbelievable.
But I felt intimidated and just did what he asked.
Got another shot at Google (Alphabet Non Mobile).
First problem: return an array with all the 1's removed. Hello?
I currently like to code in swift and I would normally just use an array.filter { return $0 != 1 } done.
But he wanted old school, allocate the correct size array and stuff it. fine.
Next problem max sum of elements of an array where no two adjacent elements can be used.
I was really stumped at first (and I admitted that, maybe I should not have)
When I get these types problems I like to do the "corner" cases first, then the base case then the recursive case.
He kept on saying it's a tree, but not a tree structure. I think he was just saying it's a recursive search problem.
They like you to think it through before coding.
But I like to have those corner cases done and maybe a base case (very obvious with this problem) first.
Because they help me think of how to do the recursive case (i.e. n+1).
So as I'm writing the simple corner cases, and he's telling me I don't need this one or that one (because it will fall out).
I don't care and it won't hurt and I can remove some later.
I know they want some back and forth, but if you limit it to 20 minutes a problem, it's like don't bother me unless I have a question.
When I do the back and forth stuff I run out of time. But they want you to talk it out. You can't win.
So I code up the recursive case and it looked a bit messy (lots of index checking that I did not do yet).
But then looking over my corner cases, they would have caught them all, except for the one he made me REMOVE !!
So I put it back.
Now time is running short.
He says you have 2 minutes and I need to test it.
So he gives me an array with 6 elements. Do know how long it takes to walk through a recursive problem that can go 5 deep !!!
I would have done my corner cases first. Empty, 1, 2 (my base) and 3 (one recursion) and that would have convinced me I had a solution before I think of tackling 6 (by hand).
I got through 1 iteration of his 6 element problem.
It still needed memoization (a simple dictionary) to optimize it, that I never got to.
Very frustrating.
I want FAANG now more for the sheer challenge than the job ;)
But I'm starting to wonder if it's like winning the lottery than flexing my talent.
So much depends on how you gel with the interviewer. How he/she presents it, what he says to steer you or distract you and when.