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

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.




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

Search: