Hacker News new | ask | show | jobs
I am stressed out about interviews
29 points by intv_stress 2569 days ago
I have an interview at facebook and google coming up. I have about 7+ years of experience. I have been doing leetcode and studying for last month.

I have tried to motivate myself, I have been reasonably diligent in studying, but when I read through these forums it seems like people treat these interviews as FT jobs. I want to do that to, but I lack the motivation because I don't think I can compete. I feel I am hard worker, but apparently not compared to other folks. The only way to really compete is to put in as much work as these people. I got like a 100 in my algo classes, but they can ask the gambit of questions. They can ask anything from heaps to recursion to dfs to red black trees to I don't know what. I graduated top 10% from one the 10 best CS schools in country. I don't think I am dumb, but I feel I am just not as sharp as I was when I was younger.

I feel like not going because its just stressing me out. Heck I didn't even apply for these jobs. Sure I would love the money and having google or fb on your resume looks nice, but its not helping my mental state. I really got to respect people who work at Google or FB for going through the tests.

Are there really that many people who are so good at algo that they can come up with o(log n) o(1) solution to a problem in 30min? I am guessing they are recruiting a million people so they get 1% to pass through their tests, but is the stress really worth it?

9 comments

Here's one way to see things – there's around 3.6M software engineers in the US. Google has 100k employees, so let's assume they have 50k engineers. Do you think the top 1% of engineers in the US all work at Google?

Obviously they don't. The truth is, there's no perfect interview process, and chances are you may fail (or succeed) for reasons completely out of your control. You've been studying for a month, and have a degree from a great school – what else can you do to improve your chances? Relax, accept that interviews are a crapshoot and try doing your best.

Worst case you won't get an offer but guess what? Plenty of great engineers got passed by Google or Facebook.

I second this. Do your best and know that you will be a better programmer because of the one month study and the experience of the interview.
First of all, what's your downside? You didn't seek the interviews, so I suspect you're already employed? Then your downside is that you may waste a vacation day or two on interviews that don't result in a new job. That's not the worst thing in the world.

They aren't necessarily testing your ability to solve the exact problem. The thing is, at Google or FB scale, the difference between o(log n) and o(1) can be huge. It can be millions of dollars in hardware cost. So they really care about the ability of people to find a way to do it in as optimal a way as possible. But, again, they aren't necessarily expecting you to solve it in 30 minutes. They want to watch your thinking process as you tackle the problem.

And, if they do ask something that you know cold, your reward will probably that they very quickly ask something else. They (I presume) aren't trying to see if you know all the algorithms. (We've got this company called Google that does a pretty good job of helping you look up an algorithm if you need it.) They want to see how you work on one you don't.

If I'm reading their intent correctly, then you cannot study well enough for this, because they will move away from what you know. So don't worry that your studying wasn't good enough. Nobody's is. If, from your studying, you kind of got how to attack problems like these, then that's about as good a preparation as is possible.

And if you completely fail... you didn't lose much.

To quote Joel Spolsky, "...if you reject a good candidate, I mean, I guess in some existential sense an injustice has been done, but, hey, if they’re so smart, don’t worry, they’ll get lots of good job offers."

It's part of the process. People accept that they'll have false negatives. But you'll get good job offers anyway.

Google and Facebook probably don't have the best process either. They're giant brand names. They get a lot of garbage in their funnel and probably have to filter for minimum garbage, as opposed to having the best engineers.

Not that they don't have great engineers, but the system is flawed and it's a bit of a gamble to get in.

[0] https://www.joelonsoftware.com/2006/10/25/the-guerrilla-guid...

Having just recently interviewed at one of the FAANG for a role that I felt was really well suited for me experience-wise, it's not worth the stress. I study all the time already, simply to do my job and out of interest.

The average whiteboard interview nowadays doesn't reflect my day-to-day work and tests a narrow slice of my ability to solve problems. It also supremely fails to qualify people from non-traditional backgrounds.

Enough of the "we should be thankful there's such a low bar of entry - you just need to cram exercises". FAANG and many others externalize the burden of qualifying employees by relying on volume and setting the bar very high. Many are going to wear themselves down when the entire process is skewed against them.

So my advice - don't worry too much, you're probably a great candidate and it sounds like you've already done as much as you should to prepare.

You don't sound like you really want to be a part of these companies your preparing to interview at by saying "Heck I didn't even apply for these jobs.". And you seem to be having trouble finding a good reason to really go to the interview. The more I read your post; the more I feel that you don't want to feel stupid or inadequate based on the interview. Everyone doesn't want to feel stupid or inadequate, this is normal. Also you've put the interviews on a pedestal that'll declare you as good enough by discounting your experience and achievements thus far.

If you feel this wound up before the interview how do you think you'll feel working for these two companies? It'll be a daily anxiety/fear of being inadequate for the job.

My advice is to lower your expectation/valuation of the interviewing company and go to the interview if you really deep down inside want to. These kinds of interviews have a history of making interviewees feel worse about themselves so bear that in mind.

There is no amount of preparation that will prepare you 100% and guarantee you a job at any of these companies. I think we've gotten to a ridiculous point with the interview process now and at some point you just have to decide you've done enough to prepare on the technical end and it sounds like you're basically there. I would probably start looking at other aspects of preparation. Think about the human aspect of things and what you want to impress upon your interviewer. These are more subtle things that might make the difference when deciding a thumbs up or thumbs down. But in the end don't sweat it. Decide you're going to have fun with it and see what happens. Truly try to enjoy yourself and view each problem as an interesting puzzle instead of some do or die test. And hey, free lunch!
Yes, there are people that good at algorithms, you just need to enter a contest at leetcode/codeforces/topcoder where you can just amaze yourself how some people can solve these difficult problems in such a little amount of time.

On the other hand, for FB and Google you just need to be decent enough at these questions not really a superstar. I would say if you can solve most medium problems in leetcode and occasionally a hard then you are good enough.

Worst case you just get rejected and life follows its normal course.

BTW, i have been rejected like 30 times from these companies, it does suck when they tell you, because you start doubting yourself, but then after a few days the feeling goes away.

There are three things I'd like to share with you.

First, I've hired dozens of people in the last year, and the main piece of advice is this: I'm rooting for you.

Seriously.

I spend a TON of time sifting through resumes, doing phone screens, checking Github repositories, and on-site interviews. I really, really don't want to do it.

Ideally, the first candidate that walks through the door is perfect, and I don't have to even talk to anyone else. Done. Finished. Now I get to do real stuff at work.

I'm rooting for you. Honestly.

Second, the answer to your question is "No". You don't have to know how to invert a binary tree or re-implement quicksort. For good interviewers, the point isn't for you to reinvent or regurgitate complex computer science problems in 30 minutes, but rather to allow you to demonstrate your thinking. Can you write code? Can you walk me through your thought process? If I throw a curve ball, can you adapt your solution to that?

You don't need to know all of those things you mentioned, but you should be able to demonstrate that, given enough time, you can do those things.

We only get 30-45 minutes with you. The goal is to figure out what you do know quickly, and then gauge your capacity to grow beyond that.

Look, there are some things you must know to get a job with me, and there are some things that aren't important. "Can you write code?" is the bare minimum. I wouldn't hire a carpenter who doesn't know how to use a hammer, but just knowing how to use a hammer doesn't make a carpenter good, either.

There are an infinite number of skills out there that you can learn. I don't expect you to know them all. I expect you to know SOME of them. I expect you to be able to write code, but I expect you to do a little bit more than that.

Most jobs I've ever had required on-the-job training. I have to learn how the new job does code deployments, how they structure their code, maybe a new programming language. I have to learn how they do standups (if any), code coverage (if any), and one-on-ones (if any). I have to learn what's in this database and how it connects to that API and what framework they're using. Everyone uses frameworks differently, so I have to figure out the quirks and esoteric choices that this particular company made.

The point is this: you don't have to know everything. You need to demonstrate that you can code (the bare minimum of the job), you have to demonstrate that you can learn and ideally learn quickly, and perhaps most importantly, you are hopefully someone that I would like to sit next to for the next six months.

I'm not going to tell you not to stress out, because that's perfectly normal. But what I will say to summarize are these two things:

1. We are rooting for you.

2. You don't have to know everything. Just be your normal smart, enthusiastic self and do the best you can.

Keep those in mind and you'll be fine.

Your process seems fine for someone unknown, "blank". But when you have information about the past experience - does it really make sense? e.g. if someone graduated from the top CS program - can't you deduct that they are able to "think", "solve problems" and "code"? I guess one can argue that the interview process is some kind of verification of applicants resume - but aren't there more efficient ways to do this? You can easily check whether the person really graduated that program, about past experience - previous jobs, etc...

I mean, you should leave the qualification verification to those entities who are more qualified to do it, and who have much more time - I guess if the university awards a degree after 4 years of involvement with the candidate says much more than you can deduct in 30 minutes during the interview set up.

No, you can't make those assumptions.

People graduate from high school who are functionally illiterate. Similarly, people graduate from CS programs who are functionally incompetent.

I've interviewed many people who can talk the talk, have an impressive resume, can talk details about their projects... But fail a simple coding question. My go-to phone screen question is to find the common elements from two lists of integers, and half the candidates can't do it in better than O(n^2). I'm not even looking for the perfect solution, just something that is better than brute-force.

It's the "do original work" that is the hardest for many people. They can modify existing systems, plumb together interfaces, etc. without a problem, but given a fresh problem and a blank sheet of paper they are stuck.

I've found the same people are also weak in their fundamentals...

The "original work" vs "plumbing things" distinction is very vague - we all stand on the shoulders of giants. E.g. PageRank also can be seen as Algebra stuff plumbed together.

Even if we go with your definition - why do you assume that someone who practiced leetcode/hackerrank stuff and thus are able to pass interviews is good with the "original work"?

I tend to think that the current interview practices have two (eventual) goals:

1. Hard to change jobs because practice is needed.

2. Tests how dedicated/desperate the candidate is - willing to allocate time for preps.

Thoughtful response
Go into an interview with an open mind and with curiosity. Your having a conversation and part of how you interact will reveal if your a good cultural fit and if your someone they can get along with.