Here's my strategy: Divide your time between working on algorithm questions and a passion project every day.
For starters, set a daily goal of answering ONE algorithm question on leetcode/firecode.io/CTCI/book/etc - your choice. After that, move on to your project and work on that until you get bored. Rinse and repeat each day.
The project could be ANYTHING and use ANY KIND/TYPE of technology you want, however, I encourage you to work on something that could solve a problem in your daily life (a better alarm clock app, a surveillance system for your front door using arduinos, etc.) using a stack that has a large community (RoR, React Native, etc.).
Once you start getting comfortable with the questions, increase the amount that you do each day by one. You should also start seeing progress on your app which should snowball from there.
That works when there's no duplicates. It's also problem 12.3 in Elements of Programming Interviews. The base problem deals with the case where the elements are distinct. The text also offers a "Variant" on the problem where duplicates are allowed, but it doesn't offer a solution.
For Theory/Lectures
For Practice
Your resume sucks given your 20+ yrs of experience. Also, being a Co-Founder is a big title. It is usually 3 categories:
I'm afraid companies are viewing you as a #3, which is a big negative.
Read these books. Even though you have the experience, companies nowadays like to ask irrelevant "whiteboard" questions which have very little to do with the day-to-date of the position.
I also hate the way interviews are nowadays but it is what it is.
Given your experience, and likely skillset which you fail to advertise, I recommend these titles:
Good luck. Also, yes, $180k is very much possible in Seattle.
> Nothing to do but apply my man.
No. OP is rusty and will most likely not pass technical interview questions without a review. https://exercism.io/ is great for this. Doing a few of those, before interviewing is helpful to get back into the spirit of things.
It depends on the role one is applying for, but if comp sci questions might come into play during an interview. Elements of Programming Interviews is a great way to review and find any holes in ones knowledge when it comes to algorithms and data structures for backend dev roles. Web dev doesn't usually use comp sci as much.
OP will be asked why there is a gap. "Due to mental health, family problems, and a general lack of jobs in my area" is not a good answer. Instead, "I chose to help my family after I graduated." is a much better answer.
OP realizes there are not jobs in their area, so applying for jobs everywhere is a solution.
>Due to mental health
/u/digital_desperation I know how it is. I hope you've gotten or will get the help you need. Psychological stress never has to be a permanent problem.
Regardless if you have or have not gotten help, it's not a good idea to not talk about mental health during a job interview. I'd skip the subject entirely, but that doesn't mean people don't care.
I like Elements of Programming Interviews.
https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836
I would recommend you to learn back-end. With your experience it shouldn't be too hard. If i were you i would start with https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/ and https://www.amazon.co.uk/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836. If you can complete these books you can easily land a job in FAANG/top tier company.
If you're looking for the types of problems you can expect in an interview I would highly recommend Elements of Programming Interviews (I linked the C++ version), if you can do the problems in there you should even be able to solve FAAMG-level technical interview questions.
As for where to learn the fundamentals, the Algorithm Design Manual by Skiena is about 500 pages shorter than Cormen's textbook, and has implementations in C++, which may be more useful for you.
Those two resources along with some Leetcode practice should have you in top shape, and there are of course numerous university-level DSA courses in various languages with all their content online e.g. CS 61B, MIT 6.006, Princeton Algorithms Part 1 and Part 2, and I've heard good reviews of this set of videos from Mycodeschool which implement in C/C++.
I have done LC easy on a casual basis. Never tracked my timing strictly - but I can solve them in 40-60 minutes. I haven't done any advance algorithm questions though - trees, graphs, DP, bit manip etc.
I find LC mediums difficult to solve without help or looking at solutions. That's where I gave up trying and moved to making projects.
Can you take a look at this book's index (there's an option to look inside on amazon page), and write on opinion? https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836/
Elements-Programming-Interviews-Insiders-Guide This book is also offered in Java, Python
This book goes into better details than the normal tech interview (Cracking the Coding Interview) it will teach you common ways to solve problems as well as good programming practices as well as how to handle the interview and the offer.
Then you could be practicing problems on Leetcode.com, however I cannot speak for exactly how Epic interviews but I have interviewed at larger companies they should be similar.
> Say for example there's a job interview, where you're put in a room without internet, and a similar problem, and you have one hour to solve it.
If you're looking for common questions asked in interviews, take a look at Elements of Programming Interviews.
Algorithms and Me also has some common problems. Also check out top 10 algorithms for coding interview.
I don't know if your specific problem is in any one of those resources but like I said, there are literally tons of algorithms out there.
The kind of problems you get in interviews should reflect your field of expertise and the job position you're applying for. If you're getting questions outside of your expertise, you are applying to the wrong field.
Ah. This book would be invaluable then.
It may be worth creating your own projects or code to build a portfolio. Then you could upload the code to Github to build an online portfolio.
Here are some excellent books that may help as well:
Elements of Programming Interviews
Programming Interviews Exposed
I strongly recommend picking up the books, or at least one of them since job hunting as a CS Major is different than normal job hunting.
> I'm looking to get a refresher on algorithms
I don't know the answer to your question but I can provide an alternate resource for a refresher course. I don't think it's as in-depth as the MIT book and course but it has code examples in Javascript.
https://www.khanacademy.org/computing/computer-science/algorithms
If you need to ramp up quick for interviews, Elements of Programming Interviews will work. It contains the standard problems you'll run into at interviews and there are code samples in C++. It is not as detailed on the math explanation side as clrs so it's just scratching the surface.