Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Most tech companies now do around 4-5 interviews. It has been like that for at least 7-8 years (probably more) but I just found out that not all companies are like that. After being subjected to these demeaning Leetcoding interviews I went through a refreshingly pleasant experience. It was an interview with just one person. They gave me a technical open-ended problem and two weeks time. After two weeks I had to do a presentation to them how I would solve that problem. Not much more was required. I could choose to do as little or as much as I'd like. I did have to spend around 30 hours researching that problem as it was an unfamiliar problem space for me. The presentation was just 1 hour session with the hiring manager where he and I had a technical discussion about my solution. No more interviews of any kind (not even behavioral). I had an offer three days later. I thanked the manager for his meaningful and humane interview process. I can't believe I have wasted hundreds of hours doing LeetCode when there are companies out there that treat candidates respectfully rather than code churning machines.


I would argue that 30 hours invested in interviewing at a single company is a lot more work than you put in doing a couple phone screens and a one-day onsite. I personally abhor take-home projects because they tend to balloon in scope (I'm a perfectionist and want to put the best foot forward). With an on-site loop, when you're done you're done.


After going through the process of 5 interviews across multiple companies, I would much rather be given an open ended question and do a 1 hour presentation. I am so tired of going into a technical not knowing which leetcode question I have to memorize.

It is absolutely absurd some of the study plans that people go through where they are trying to study over multiple months. In order to truly memorize all the solutions, most people need these programs. Otherwise, it's just a luck of the draw. I actually got stuck at an interview because I forgot the nlogn solution for two sums. Absurd!

My favorite interview so far involved opening a raw TCP socket to Postgres and sending a query (Actually relevant to the job). I was given the prompt ahead of the interview and spent about 2 hours figuring it out. I learned something valuable and demonstrated an ability to expand my knowledge base. This interview has been the only one even remotely close to demonstrating my abilities to work at the job.


> I actually got stuck at an interview because I forgot the nlogn solution for two sums. Absurd!

Are you talking about determining a pair of numbers in an array that sum to a given value? That's O(n) and just uses a hashset/hashmap.


No. Sort the array. Then use two indexes, one on each side of the array. Increment indexes to meet in the middle.

This is one of those tricks you just have to memorize and it's very hard to come up with the solution in 30 min.


This is one of those tricks you just have to memorize and it's very hard to come up with the solution in 30 min.

What a great way to kick off a professional relationship:

"I know this problem is useless and obviously unrepresentative of the actual work we do. So do you (if you aren't incompetent). You also know perfectly well that I've memorized the answer and am only pretending to 'solve' it for you on the spot. And yet, we go along with the charade and pretend it's a vitally necessary, even clever hiring technique. Because hey, we're getting paid big bucks to play this game, after all. So who cares."


> This is one of those tricks you just have to memorize and it's very hard to come up with the solution in 30 min.

Maybe that particular solution is hard to come up with, but you can solve the problem without any "tricks", just basic principles. I'll try to explain which principles I'd use using python.

You can start with the trivial O(N^2) solution:

  def has_2sum(lst, target):
    # returns whether there are 2 (not necessarily distinct) elements in `lst` which sum to target
    for a in lst:
      for b in lst:
        if a + b == target: return True
    return False
First principle is runtime analysis. The runtime is O(N^2) because the inner loop is O(N) and runs N times. So we can try to speed up the inner loop. Second principle is to rewrite what the inner loop body as a function of the loop variable b.

  def has_2sum(lst, target):
    for a in lst:
      for b in lst:
        if b == target - a: return True
    return False
Third principle is pattern recognition for common functions: the code is equivalent to

  def has_2sum(lst, target):
    for a in lst:
      return (target - a) in lst
Fourth principle is to know which data structures support membership query. If you thought of hashtables, you get the O(N) solution.

  def has_2sum(lst, target):
    set_lst = set(lst)
    for a in lst:
      return (target - a) in set_lst
If you thought of sorted list, you get an O(N log N) solution.

  import bisect
  def has_2sum(lst, target):
    sort(lst)
    def contains(x):
      # equivalent to `x in lst`
      i = bisect.bisect_left(lst, x)
      return (0 <= i < len(lst)) and (lst[i] == x)
    for a in lst:
      return contains(target - a)
If you thought of `sortedcontainers.SortedList` (a third-party python package), you get an O(N^4/3) solution (analysis: https://grantjenks.com/docs/sortedcontainers/performance-sca...)


But why didn't you use the O(n) solution instead of the O(n log n) solution?


To be honest, I had forgotten the O(n) solution and vaguely remembered the nlogn solution. After that experience, I have both solutions lodged in my brain.


I suppose if you had to optimize for least space used sorting in place and doing it they way they suggested would be best.


30 might be too much but it also depends somewhat on the probability of success. 100 hrs practicing leetcode + systems design for a 2% chance at a FAANG seems a worse trade off than 30hrs researching an interesting subject for a presentation with an 80% chance of success. Problem is you don’t know what your chances are with the latter going in but I think it would be a fair question to ask.


I lean towards the status quo of one day interviews. But I liked how you considered probably of success as a consideration.

Consider also that: 1-((1-.7)*3) = .97

3 interviews with a 70% chance give you a 97% chance of landing atleast one job. More interviews improve your situation rapidly. Job hunting is better seen as a campaign than individual battles.

But I also think maybe in my estimation you FAANG chances aren't that low as your 2%. They hire tons of people, ALL THE TIME.


I got the 2% from a presentation by a company in the business of prepping people for FAANG interviews, the actual number could be higher but I was just trying to make a point about relative probabilities.


Ahhh, I believe that 2% of people apply might get the job possibly. To me that's a question of a challenging applicant pool.

What do you think your chances are if you're actually qualified? My made up gut numbers: At least 70% even if you don't practice leetcode. That's the real question here in my mind, what are an otherwise qualified candidates chances? How much does that change with interview skills, prep, leetcode etc.


I’ve made it to both Google and Facebook onsights. I still have no clue what my chances were going in but got rejected both times. If you get through leetcode then you can get an onsight but that’s when they actually attempt to measure competency with a system design interview. Which is fine but I’d rather they just front load the interview with it than my chances of getting to an on-site be left up to whether I happen to suss out the aha solution to any random leetcode problem (while I’m trying to explain my thought process of course).


It might be 2% or even lower hire-rate-to-applications, but your set isn't all applications but those who put in a 100 hours of leetcode prep; that I bet is much higher than 2% into faangs.


Yet don’t forget the additional double standard of you needing a full-time job or that looks bad, and so where do these hours magically spring from?


I agree and initially I refused but the problem space was interesting and I wanted to get in it so I did it.


Yeah, a valid philosophy is that a company should have to spend at least as many man-hours interviewing me as I spend interviewing.


How would you feel if they offered compensation, say for your 30 hrs?


If compensation was offered for an interview process, then it's worth the time spent going through the interviews.

Otherwise, it feels like a gamble of a huge time sink that could have gone towards something actually beneficial/profitable.

Having had too much of my time and energy drained in the past with the run around, I said fuck it the last time when facing the option to interview or go my own way, started my own thing and haven't looked back since.

Even when you do get an offer, it's a gamble on whether or not you're dealing with toxic management or not. Which only reinforces the idea of compensation for interviewing in case someone needs to jump that ship and start interviewing again.


I do IT so I'm not an elite member of society like most of the devs here. But I had an org give me some homework that was solving a problem they actively needed fixed. I took a job with a different company (still had like 5 or 6 interviews for that place but no 12 hours of homework) because it felt gross to be doing 'free' work for them.


I got my last 3 jobs after half an hour conversation with the lead/CTO. I'm not a "rockstar" either, just average dev. When companies are desperate to hire they don't dragg ass with infinite interviews. Of course, SV gravy train doesn't fall in that category.


I went through a similar experience with a radically different outcome. I was given a coding assignment and one week to finish it. I spent more than 30 hours on it and came up with a solution that was supposedly 500 times faster that what they'd ever seen (they told me this later). But things took a wrong turn at that point. In the followup meeting the interviewer turned out to be rude, disruptive, and combative. He tried to grill me on every little thing I said and finally rejected me. I have no idea how it happened but I suspect they simply thought my solution to the take-home assignment was too good to be mine.


Or discrimination. You never know, maybe you worked with his former boss, it could be anything.


Totally.

Or the interviewer felt insecure and threatened by their competence. If that's the case, they dodged a bullet.


Yes, I thought about both possibilities (discrimination and insecurity) but I want to remain positive and not attribute ulterior motives to the interviewer. It was an ironic experience though because, I believe, had my code been a bit slower I would have had a better shot at the interview.


Damn, yeah that is a pretty ironic possibility.

Either way, I hope you've found a good place to share your skills since that experience. Wishing you the best


I was interviewing with companies last Fall and got a homework assignment project where I could pick from 3 different problems. I am not big on companies giving me 30 minutes and expecting hours of investment in return but I figured I would look into these problems to see if they were worth solving.

I literally copied the questions verbatim into a search and found the solution to all 3 all over GitHub in multiple languages. How is this an appropriate evaluation? Certainly a candidate could simply copy the answer in their chosen language, tweak the structure a bit and call it their answer.

I contacted their recruiter and told them I was no longer interested in interviewing. I told them I couldn't take them seriously since all they did to invest in the interview process was to steal questions from other hiring managers.

If a company wants an efficient, honest and quality interview process it needs to go both ways.


> I literally copied the questions verbatim into a search and found the solution to all 3 all over GitHub in multiple languages.

So what?

Let's say you know nothing and just copy somebody else's code. Good for you. The next step in the interview process is that you have to do a code walkthrough explaining what you did and why. Do you really think someone can get past this stage with a code they just copied from github?

I can even imagine that someone finds this existing code, and then they copy it, then they improve upon it, and present it as such. If they are open about it, I'd have no problems from the interviewing side. In fact, it could even be better, because the more complex the code is, the easier it is to talk about it (and gather information about the candidate).


My cynical take is that this company views development as a combination of basic coding skills plus the ability to find solutions on stack overflow. Maybe it’s exactly what they were evaluating.


It’s the same situation with leetcode questions. The only difference with leetcode is that you don’t know the exact questions in advance but you roughly have the total set of questions that could be asked. Complete with solutions, YouTube tutorials, and discussion threads.


> Most tech companies now do around 4-5 interviews. [...] After being subjected to these demeaning Leetcoding interviews I went through a refreshingly pleasant experience. It was an interview with just one person. They gave me a technical open-ended problem and two weeks time. [...] I did have to spend around 30 hours researching that problem as it was an unfamiliar problem space for me.

For me it's the complete opposite. What I would consider demeaning is to spend 30 hours across two weeks interviewing for just one company while they don't even bother to send more than one interviewer.


The company said you can spend as much time as you'd like. So if you're ok with two rounds of leet code for two hours, why not just do one hour and the one hour presentation?


If you don't mind me asking could you share the company, assuming they want frontend or fullstack JS/TS node/react/* engineers with 15 years experience? (email is in bio). I'm about to go through the process and the thought of solving leet code over zoom with fresh grads is keeping me at my current place which I've outgrown.

I love these take homes with discussions/presentations but companies keep insisting on the zoom coding over google docs route.


Definitely longer than 7-8 years. The current process has been in place at least 20 years, and maybe longer (but my memory only goes that far).


These companies do exist but finding them amongst the sea of leetcode ones is a challenge.


It's been like that since the 1990's.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: