| >>I spent 2.5 hours in total trying to get them all to pass without realizing the central issue of the question is what to do when you hit a * character. The necessity to try all the combinations of the string after a * doesn't not occur to me in 2.5 hours; The fact you kept trying for 2.5 hours shows you are persistent -- an awesome ingredient to be a great programmer. In my opinion, you shouldn't blame yourself for not being able to solve that particular wildcard-matching problem. I think it's a typical "interview problem". I personally don't think "interview problem" is a good measure of a programmer because: 1. some people are more gifted in the thinking required to solve such problem. 2. if you practice a lot, basically you get better at it. It's like there's a certain pattern to such problems that you can learn. (think of it as similar to SAT) >>Sure, some problems turn out to have an algorithm that I didn't know about it. I'm not suggesting you need to know a lot of algos to be a great programmer. You just need to be familiar with the important ones such as linked list, hash map, binary tree, etc. Cos even at places like Google, they wouldn't really ask interview questions where you need to know anything unconventional. What I'm suggesting is that you learn to solve problem by reading solutions to existing algo problems, make sure you understand it, and try to re-implement it. >>I just don't have a high enough IQ to get passed a certain point. From your comments, it seems you think you have to be good at "interview problems" or what I like to call "algorithmic-thinking" to be a good programmer. I totally understand that perspective as most US tech companies' screening process involve such problems. I'm telling you from experience though, that computer science is much more than just "algorithmic thinking". There is the field of system where the main challenge is to envision how all the large number of components collaborate and work together (i.e. OS, distributed system). There is also the field of frontend web programming. Frontend involves the skill of implementing something that is visually aesthetic or implementing a web according to the design document. There's also product management role, where you have to understand the how the thing works but you don't have to go too technical. And many more. In short, there are so much more in the CS than just "algorithmic thinking". Don't be discouraged. Try to figure out where your interest and talent intersect, work hard on it, and don't easily give up :) |
And the truth is I've been doing interview prep on and off for at least a year and I'm still at this stage. My goal is to be good enough to get into a Big 4. If I can't do that, I don't want to continue. Given that, do you think I should quit?