Hacker Newsnew | past | comments | ask | show | jobs | submit | PlaceFan's commentslogin

As a counterpoint, I work in high finance and one of our core systems that I'm expected to know extremely well uses Paxos for consensus.

Just because those topics show up infrequently doesn't mean that no one's using them. Plenty of companies outside of Google, etc. are doing complicated things that require a solid CS background.


My point was not that they do or do not exist, merely the magnitude. I would venture a guess that for every software engineer working on a blockchain there are 100 working on crud-style applications. If a job on your team requires a solid understanding of these concepts, then by all means filter on knowledge of algorithms. My point is that many companies don't do anything remotely as complex and yet use the same filters to screen job applicants.


You should have programmers implement paxos on a whiteboard in their interviews.


I think that particular subreddit is being generous about the issue because they overwhelmingly support the Antminer manufacturer on a completely separate issue (increased block sizes). That issue is more-or-less the big schism at the moment between /r/btc and /r/bitcoin.

If that's confusing, as a hypothetical example: You just linked to an /r/conservative thread about Trump's alleged Russian ties.

The opposing subreddit (i.e. the /r/politics thread) is much less forgiving about it: https://www.reddit.com/r/Bitcoin/comments/67qwqv/antbleed_ex...


The analogy helps a lot. Funny how that reality distortion field effect kicks in for something that seems obviously bad.


Is that true? Isn't the generic accusation against AmaGooFaceSoft that your interview performance largely depends on whether you happened to study some interviewer's pet topic (e.g. parallelism, dynamic programming, networking, etc.)?


Having done interviews at a few of time, I'd say that's mostly false, at least for the last 2-3 years.

As far as I can tell, there's always a pre-defined pool of questions. Some of them are pretty 'open ended', but still targeted towards getting a good impression of a certain area of knowledge.

That being said, I had an interview with Google at some point in the past where one of the interviewers almost seemed appalled that I didn't know the exact list of items that can be found in a filesystem superblock. But at all other companies it seemed a bit more sane. I guess it's partially a function of the type of personalities a company is willing to hire :)


Careful. First and most obviously, the "pool of questions" concept is structured only if you have a Google-scale volume of candidates and reliably assigning specific subsets of those questions to candidates.

But even then, for such a process to be rigorously structured, the questions themselves need to be determined a priori and without reference to the candidates background or preferences. Otherwise:

* You're subject to the interviewers and judges (probably subconscious) biases about the merits of different questions.

* You're more exposed to the candidates own innate ability to interview well by navigating themselves to more easily-answered questions.


Recently I failed an interview at Facebook because I chose to serialize a binary tree into a list of N items, rather than a list of N items and O(N) sentinels. Most of the interview was spent convincing the interviewer that this could possibly be correct.


i recently failed a programming test after acing all tests except one where i needed a text diff and pulled in a library instead of writing my own in less then ten minutes. they said i need to get better at algos. which is fair. but i dont know anyone that can program a decent working text diff in less then ten minutes.


Based on your description, it sounds possible they were just looking for a Levenshtein distance implementation, which is definitely in the Universal Weird Corpus of Interview Questions and for which people who prepare for interviews a ton would have a good shot.


I ported a diff algorithm (a simple one at that) just a few months ago because the language I was working in didn't have one. I couldn't do it off the top of my head today, or probably the day after, it was transient knowledge that I didn't even try to remember.


Why did you conclude that you failed because of that? That sounds like a pass with flying colors. Did you specifically get feedback about that segment?


In the few remaining minutes after we agreed that it was possible to correctly deserialize a tree serialized in this way, I did not produce a linear time deserializer.


:-(


was it a binary tree or a binary search tree? a BST can be uniquely identified by one of pre/post-order traversal, whereas a binary tree requires an in-order traversal and one other. or placing sentinels that specify a state machine [PUSH_LEFT, PUSH_RIGHT, POP] that specify how to move down and up the tree structure.


It was a BST.


n sentinels? What do you mean?

Do you mean characters to indicate a null child?


This accusation is almost always from people who haven't studied that particular pet topic. In my experience, the pet topics you list - parallelism, dynamic programming, networking, etc. - are needed quite frequently for those jobs at AmaGooFaceSoft. In other words, those candidates would be poor fits for those jobs, which is exactly what an interview is trying to test.

I think the Google hiring process is fucked up in a lot of ways, but I don't think reliance on whiteboarding or the selection of interview questions are two of them.


> This accusation is almost always from people who haven't studied that particular pet topic

Well sure, but you only have so much time to study for these interviews.

So, you make sure you review your basic data structures, algorithms, and complexity analysis. The things that will most likely show up.

Then you have to consider the more advanced topics. Realistically, you're not going to have an expert-level understanding of all of them. None of them are extremely difficult concepts to understand necessarily, but you need the kind of mastery to understand such a problem quickly and under pressure (since it's a short, timed interview).

The most effective way to study, then, is to simply run through a battery of dynamic programming questions and hope you get lucky and the interviewer asks you a variation on one you studied.

I've had more than a few AmaGooFaceSoft interviews ask me slight variations on the change counting question. They're really testing my ability to recall the solution to that problem, not any sort of deep understanding of dynamic programming.

On the flip side, the interviews I've failed almost always involved some pet topic that I wouldn't dream of studying. I once (no joke, and not THAT long ago) had an interviewer at AmaGooFaceSoft ask me do a bunch of calculus questions involving power series (turn a function into a power series, determine the radius of convergence, etc.). Why would I study that for an interview?


> Well sure, but you only have so much time to study for these interviews.

Considering the payoff (potentially a $40,000 to $100,000 raise on a 40 hour work week), I think that the amount of time to study for these types of interviews is very trivial. Interviewing skills can be used for interviews at many well paying companies because this type of interview has been standardized, so it's not like you're only studying specific knowledge for one company.


Are those topics really needed for (what you're implying) is the majority of jobs at those companies? I'm not sure if there's any way to really test this.


Yes. This is the reality of distributed computing: most of the problems you want to solve do not have off-the-shelf libraries. Rather, you need to know an algorithm, and various algorithmic-design techniques, well enough that you can decompose it into steps and then recompose steps so that they can be partitioned among many different computers, with appropriate failure modes if machines or network connections go down. That requires intimate knowledge of both the algorithm and of the types of problems you run into in a distributed setting.

MapReduce, Pregel, Bigtable, Flume, etc. are building blocks: they solve some of the distribution problems, but you still need to understand how the algorithms that run on top of them work, on a step-by-step level, to implement on top of them.


Is that actually a majority of jobs at Google? I know something about the work that several of my friends working as SREs and SWEs do and it doesn't sound like it involves a lot of distributed systems programming.

Let's say you work on some part of Android. Obviously you need to interact with things like Google's build system which are distributed, but are you really implementing some distributed computation in the course of your every week, or even every month?

I get that Google wants to test during the interview for suitability over a large space of possible specific roles, but I seriously doubt that "distributed systems stuff" would be in the list of top 10 programmer domain knowledges that are useful in those roles. Is it more useful than knowing how to work with version control well? Everyone at Google has to do that, but they don't test it during the interview. Is it more useful than being able to read and write idiomatic and readable Java? They don't really substantially test that during the interview either.

(On the other hand, the things that spawned this conversation were "dynamic programming, parallelism, and networking" and the latter two are much more obviously generally important things.)


It was at the time I was there (2009-2014). There's another Googler above who says it's not like that anymore, which is possible, but these were things you needed to know across Search, GMail, YouTube, Plus, Docs, and Infrastructure while I was there.


It entirely depends on what project you work on. When I interned, I had to deal with a lot of custom datastructures, but since I started full time, I haven't (although my next project might?)


People always talk about the whiteboard interview, and assume it has the greatest weight, but the other questions are just as important. There are plenty of things being measured, and technical ability is often not the one that disqualifies a candidate. The other questions do tend to come from a standardized bank of questions too; the whole thing is very structured.


This. I wonder how many people "think" they flubbed an interview strictly because they got some detail wrong on the whiteboard when it was really far more related to a negative impression of grit, communication, motivation, personality, or work-history.


And we will never know because the vast majority of companies refuse to give even the vaguest of feedback on the reason they are not moving forward. Not even “it was your technical knowledge” or “it was communication skills”


I think it's a lot! If you had a reasonably decent answer to the whiteboard questions it's often fine if you don't actually get it right.

There are a lot of other ways to screw up an interview.


The problem being that as soon as you start bringing the left/right dichotomy into the picture, you've lost all hope of having a sensible argument or even an intelligent discussion.

I mean, it's not like it's all that difficult to rephrase the question in a way to be less thought-terminating (and this is literally one substitution, you can imagine even more eloquent ways of phrasing it):

> "Is the problem "single mothers" or is it the people who conspire to create, perpetuate, and steadily increase economic inequality?"

I want to believe that most people KNOW this, and it's merely "virtue signaling" as another poster noted. An easy way to vent frustration, maybe. But it's not a question that asks for sensible discussion. It's a "when did you stop hitting your wife?" type of question - one that insults the very people you really want to answer the question. How do you expect to have a reasonable discussion like that?


Sure. It's a question of how much self-censorship you want to impose on yourself in the hope of fostering a good discussion. And how much you are focusing on expressing what you feel vs. starting a conversation with people you disagree with. Different people will make different choices, even in this discussion. For instance, I could rewrite your comment:

> I want to believe that most people KNOW this, and it's merely "virtue signaling" as another poster noted. An easy way to vent frustration, maybe. But it's not a question that asks for sensible discussion. It's a "when did you stop hitting your wife?" type of question - one that insults the very people you really want to answer the question. How do you expect to have a reasonable discussion like that?

As something like:

> This type of comment probably isn't the type that would best encourage an open debate with someone on the Right. My personal suggestion would be something that addresses individual policies and avoids a monolithic view of one side of the political spectrum.

It would be more diplomatic, sure. But is that closer to what you really wanted to express? Maybe not.


> It's a question of how much self-censorship you want to impose on yourself in the hope of fostering a good discussion. And how much you are focusing on expressing what you feel vs. starting a conversation with people you disagree with.

Sure, and that's my point: Are you just venting? Fine. You're making a choice to vent your frustrations and not hoping to actually have a discussion. You're making yourself feel better. There's nothing wrong with that, either. We all vent in different ways.

It's just unfortunate that many people choose to make internet comments the location of their venting. Worse, this becomes the sort of discourse that we come to expect from any sort of public internet forum. We don't expect reasonable discussion: We expect angry people yelling about the other team and how their team is the best team. It's become a stadium full of drunk fans.

> It would be more diplomatic, sure.

Eh, not really: I never mentioned left/right in that chunk of text on purpose (because I think both "teams" do it). So your rewrite is actually significantly less diplomatic because it singles out one group of people who previously were part of a larger group.

Might seem annoying of me to call you out on this (and I fully understand why you assumed that given the context of our discussion), but I think it's an important correction nonetheless.


> Eh, not really: I never mentioned left/right in that chunk of text on purpose (because I think both "teams" do it). So your rewrite is actually significantly less diplomatic because it singles out one group of people who previously were part of a larger group.

You were directing your remarks at the writer of the comment and those that write similar comments. Not everything is a Left/Right divide.

I'm not sure where you find issue with the comment "This type of comment probably isn't the type that would best encourage an open debate with someone on the Right" since you're saying that making the comment about the Right shuts down discussion and that you would remove it. I think it's more diplomatic to comment to make about the author than saying something like "I want to believe that most people KNOW this, and it's merely 'virtue signaling' as another poster noted."

But perhaps that brings about another point - different people have different opinions about what kind of discourse is more diplomatic and which is less. I think my revised version of your comment is obviously more diplomatic; you disagree. You think your revised version of the NY Times comment is obviously more diplomatic; it's quite possible that the author would disagree.


> But college is not a necessity

Ehhh, that isn't the narrative we've been pushing for the last 20+ years.

> whereas living somewhere is

I think the fact that it's a necessity only benefits the idea of providing people aid for housing.

> you can't really get that for your housing.

I mean, you absolutely can depending on your level of income. It won't make up for being poor, but that's what section 8 housing is.

Even on the more middle-class scale, the government provides tax breaks for home owners (and especially for first-time home buyers) which is basically money from the government.


Exactly, from the point we think a child can understand it, society pushes a narrative that you need college to succeed.


I used to have a similar problem. One thing that helped me (which I won't take credit for): I categorize my todo list into four groups.

* Urgent/Important (Fill out the kids' immunization forms for school)

* Not Urgent/Important (Call old friend)

* Urgent/Not Important (Pick up package from post office)

* Not Urgent/Not Important (Wrap up loose coins for bank)

It works surprisingly well, so long as you follow these rules:

1) You have to constantly re-evaluate. Urgent and important are two adjectives that are extremely subjective and change over time.

2) You absolutely must tackle tasks in the order above.

3) Spend a lot of attention on group two (not urgent/important). You'll be tempted to put gigantic, overwhelming tasks on there ("Learn a new skill") as opposed to something actually accomplishable ("Go through React tutorial part 1").

You really have to be honest about what "important" means to you. Especially group two (not urgent/important). Group one is usually pretty easy.

I'll deal with the hassle of my package being returned by the post office if it means I can talk to an old friend instead. You may feel differently. Be honest about it. If you find you're not accomplishing group two tasks and procrastinating on them, maybe they're not that important to you. "Call an old friend" sounds like something important, but maybe you've both moved on and the friendship really isn't that important to you anymore.


> "Zuckerberg" seems to be more frequently used than the full "Mark Zuckerberg".

Eh, I'm not sure I would agree with that.

> And quite a few Hackers seem to be on a first name basis with Elon and Linus.

They have fairly unique names. It's extremely unlikely that "Elon" and "Linus" would refer to anyone other than Musk and Torvalds in the context of HN discussions.

Definitely not the case for names like "Mark", "Bill", or "Steve".


> Is journalism so, so much more expensive to produce than entertainment?

There's a temporal component here that's much more important for journalism than it is for those other two forms of entertainment.

For example, The Shawshank Redemption was made 23 years ago and is still a fantastic movie: People will still pay to watch that movie. In contrast, very few people will pay money to read a news article from even two days ago (let alone 23 years ago).

Sony could never produce another movie again and have a sizable revenue stream just from distribution rights on their existing film catalog. The NYT can't really do that, the demand for old news articles just isn't that great.

The equivalent of a news subscription then isn't really Netflix or Spotify: It's going to the movies, or going to a concert, or buying an album. All of which are notoriously considered to be expensive affairs.

I'd even go so far as to say the NYT would probably absolutely let you read older articles for cheap (a few $ a month), but the demand for that is non-existent so it's silly to even offer.


> some regions has tradition of alcohol consumption deep in their culture and even national identity

New Zealand is one of those places.

> nearly everyone consumes alcohol to various degrees.

That's the point of the study. Wealthy people consume alcohol in moderate amounts, the working class are likely:

1) Consuming it in much greater amounts, or

2) Abstaining from alcohol entirely. Perhaps because of previous problems with alcohol abuse, strict religious adherence, etc. You can think of multiple reasons that might explain seeing such a class disparity.


  New Zealand is one of those places.
Is that a NZ tradition or an imported British tradition? Did the Maori brew alcohol before European settlement?


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

Search: