> A few weeks of drilling of common data structures and algorithms would put you at parity with college grads.
I don't know where one gets this kind of idea. I also stated fairly clearly that I have no trouble negotiating algorithms and data structures, the problem is when they're timeboxed and involve an interviewers participation.
I think my main objection is to even doing these kinds of interviews. When, in the world, would one need to write out binary search and would have only 30 minutes to do so? Knowing the properties of different algorithms and data structures is important, imo, but implementing them in a timeboxed manner with abstract problems seems like an odd activity to demonstrate qualification.
> Could it be you just don’t like the industry and project that onto some kind of academic bias or something?
Academic Bias may play less of a role than my perception makes it out to be, but I'd at least say it's significant in this industry. The way I think it gets in is subtle, catering questions and problems that one might find in an academic setting is one. My company also heavily hires interns, which again facilitates an academic bias in hiring, but there is no program for people who don't come from a prestigious university. The lingo used usually points to an academic background as well; I've learned "top talent" usually refers to prestigious companies (that primarily hire from academia) or prestigious universities.
I started getting back into electronics in the last 5 years, and have been really enjoying it. I think EE is maybe one of the hardest engineering fields, but can also be the most rewarding I think when you do something cool.
It's also wide ranging from RF to Electrical Grid to VLSI.
So good luck. I wish you well.
If interviewing is your only worry, just get a single undergrad textbook on DS/algo. Interviews do not by any stretch cover the full academic breadth of a cs degree.
An example of an extremely common question: “Write a function to check if a binary tree is a binary search tree.”
Yes you can memorize an answer here, and the implementation of a binary tree - I think most people just do that. Knowing the inns and outs of a binary tree is probably useful if you're writing a database, or a compression format. If they're hiring someone with the capability to write a database, or compression format, this question makes plenty of sense. It also makes sense if your criteria for hiring is "did they study and understand an algorithms course?". It doesn't make much sense if they're looking for someone who can do the actual job, in my opinion.
FAANG (& similar) have more applicants who can do the job than they have positions, so instead of checking for that and calling it a day, they filter for some combination of IQ and how bad you want it—willing to do a ton of otherwise-low-value prep work & practice, and to go through the painful interview process itself, likely several times at different companies, even for successful candidates.
The reputation of their interviews also means they likely don't get a ton of candidates who can't do the job. So they could likely just start randomly selecting from their candidate pool and do damn near as well as they do with all the interview effort—except as soon as that become known, they wouldn't be able to do that anymore. Plus they'd lose the hazing factor, which likely helps build company in-group identity. Having a lot of your employees feel like they only have their job because the finally got "lucky" in an interview may also help with retention, especially when everyone else who pays as much interviews in similar ways.
In a sense, being a huge, unpleasant waste of time is the whole point of their interview processes.
If you are talking about a self-balancing binary search tree, then, yeah, most people will have to memorize the implementation, as it would take much more than an hour to implement correctly. But if you are talking about plan binary trees, most good engineers will be able to write a simple enough implementation for the interview in a couple of minutes. And it won't be from memory, it will come from _understanding_ of how the binary tree is structured. The beauty here is that there is no need to memorize the implementation, as it is much easier to remember the definition of a tree and then write an implementation based on that.
What precisely makes you're more expert at the OP's experience then the OP?