Live data from Hacker News

I interviewed at six top companies in Silicon Valley in six days

blog.usejournal.com

541–550 of 740 posts

Re: I interviewed at six top companies in Silicon Valley in six days

#541

When I was a new college grad, I felt trapped by the fact that everywhere I looked they wanted several years of experience, and I had none yet. How can I get experience if it's required to get the job? Now that I am 51, I feel annoyed that all of these stories of interviews involve asking questions about algorithms that rarely come up in real coding, and if they do you should NOT be rolling your own code, you should…

I just graduated, so I'm not dealing with constant internship interviews anymore, but at the time I absolutely hated it. My frustration isn't exactly like yours (my time is probably a lot less valuable). I feel that the questions are all geared at puzzle solvers. If you're a puzzle solver, you love answers. You love digging into the details. You love finding out the basic components of a system. I think these are the…

>> "What I do enjoy, however, is building up. I like modeling and being about to think at greater and greater levels of abstraction to solve problems that aren't puzzles, but instead open ended questions."

In my opinion, you will do well if you focus on building your own business sooner or later.

Re: I interviewed at six top companies in Silicon Valley in six days

#542
post #208

Earlier quoted context omitted.

What if you had to choose between someone with a proven track record of building high quality software used by millions of people who has also shown they're capable of leading groups of people in successful projects but hasn't memorized the specific algorithm you asked about and another candidate who doesn't have as good of a track record but can totally nail that easy algorithm you asked for? Edit: Typos.

You think every candidate who comes in is like this. There are anomalies and outliers. The truth is resume padding is so common in the valley. Everyone can just say all these things. It's very hard to hire like this.

I don't work in SV. I assume it's like everywhere else where a potential employee who feels their skills are weak will take credit for things done by their teammates even if they were only tangentially involved.

My above comment was strictly related to the idea that DHH shouldn't be considered for a job over anther candidate who is an unknown quantity simply because DHH apparently is not good at algorithm problems in interviews.

Re: I interviewed at six top companies in Silicon Valley in six days

#543
post #490

Earlier quoted context omitted.

Is it possible to even get into software architecture without pretty significant experience? From my experience in the workplace anybody making purely architectural decisions without having to implement them is a team lead or higher in the organizational architecture.

Not sure it would happen that way out of choice, but the role can get unexpectedly thrust upon someone, experienced or not (Think startups, desperate to make ends meet with a handful of inexperienced engineers...or even at medium sized companies, remember back when Google had "20% projects"?). At startups especially though: they don't have money to go out of their way to hire an overpriced "experienced software archi…

I think you’ve accurately described the vast, vast majority of production code that’s hasn’t been through a second wave of engineers/management and rewritten. If it works, and requirements aren’t changing, then your MVP has become the gold standard

Re: I interviewed at six top companies in Silicon Valley in six days

#544
post #208

Earlier quoted context omitted.

What if you had to choose between someone with a proven track record of building high quality software used by millions of people who has also shown they're capable of leading groups of people in successful projects but hasn't memorized the specific algorithm you asked about and another candidate who doesn't have as good of a track record but can totally nail that easy algorithm you asked for? Edit: Typos.

Would you choose one-hit-wonder over proven engineers (Jeff Dean, Sanjay, other ex SUN microsystems folks?) that lead high-profile projects? I know that sounds rude... but one seems better to be a leader while others are better engineers would you agree?

Total cop out answer but if DHH and people like Jeff Dean are both interviewing for a position with me you can be sure I'm doing everything I can to hire all of them. Even if it means starting entirely new departments.

I'd totally fanboy and hire Jeff though if it came down to just one though.

Re: I interviewed at six top companies in Silicon Valley in six days

#545

Earlier quoted context omitted.

Right, but you used libraries to do it, right? You didn't actually need to know how BFS works, did you? 10 million lines of code fits in RAM pretty easily. You could use the worst algorithm in the world and still complete that whole task with just a few seconds of compute time. I think that's the point. You don't really need to know about BFS in most cases, because in most cases you can solve the problem with any old…

I can tell you really don't know what you're talking about because you can't just "use libraries to do it". You can use a library to parse a given input, but you need to traverse the tree in a specific way. Here, I'll give you an example of the first step of the problem with proprietary info stripped out. https://gist.github.com/tohsa/2d906942f8712abdfc7df72128479c... You plain and simple need to know BFS to do these…

I can tell you really don't know what you're talking about because you are mouthing off about jedberg not knowing what he's talking about.

Re: I interviewed at six top companies in Silicon Valley in six days

#546
post #541

Earlier quoted context omitted.

I just graduated, so I'm not dealing with constant internship interviews anymore, but at the time I absolutely hated it. My frustration isn't exactly like yours (my time is probably a lot less valuable). I feel that the questions are all geared at puzzle solvers. If you're a puzzle solver, you love answers. You love digging into the details. You love finding out the basic components of a system. I think these are the…

>> "What I do enjoy, however, is building up. I like modeling and being about to think at greater and greater levels of abstraction to solve problems that aren't puzzles, but instead open ended questions." In my opinion, you will do well if you focus on building your own business sooner or later.

What an odd thing to suggest. Owning a business isn't for everyone. Not by a long shot.

Re: I interviewed at six top companies in Silicon Valley in six days

#547
post #486

Earlier quoted context omitted.

This is such a cop out. It took millennia to invent 0. That doesn't mean that 0 is an exceedingly difficult concept to grasp.

Cakes have existed for centuries and I'm sure most people on HN have made cakes at least once in their life. But put them in a room and say "Make us a 2 layer red velvet cake" with no access to a recipe, and you're not going to get a red velvet cake. It's an easy recipe that most people easily recognize with just a glance, and anyone could make it if they have a recipe on-hand or make red velvet cakes with abnormally…

That's absolutely not the case. Many working pastry chefs (I just asked the two that I know) can do exactly what you're asking.

Re: I interviewed at six top companies in Silicon Valley in six days

#548
post #188

Earlier quoted context omitted.

Do you spend 5-10 minutes googling and reading about the Linear Search algorithm[0] every time you iterate through a list and have a conditional to do something if an element matches some criterion? BFS, or a generic graph search (could be BFS, DFS...), is essentially just linear search except each element can have 0-n direct next elements, instead of 0 or 1. It's not this hard thing that never comes up... Indirectio…

Can you give a concrete example of when you actually use BFS to solve this? For me, it always goes like this: * Am I iterating over a list multiple times? * Am I iterating over a list and comparing it to some elements in another list? Turn one of them into a map and continue. It's pretty simple.

I'm not sure I follow your question, what are you referring to with "solve this?"

I usually find DFS/BFS applicable when I'm dealing with data that forms relations like "children" or "neighbors" or "connected". Sometimes that's explicit because the data is already in a tree or graph structure, sometimes it's not. And often rather than looking for a particular element, I want to iterate over all the data connected by the relationship to do something with after as a list/set/map of the data or some of its properties.

A concrete example from a side project (it's more fun than Real Work examples, and people have given other examples in the thread anyway), I was writing a client for the board game Go. If you're not familiar, the data is just a 2D grid (easy to interpret as a graph), black/white stones get placed on coordinates like (3,4) marking intersecting lines. A single stone forms a connected group with another stone if both are the same color and separated horizontally or vertically by one. Groups have a count of "liberties" representing the number of unoccupied points the group can expand to if a stone of its color is played there -- a single stone by itself in the middle of the board will thus have 4 liberties, if you connect a stone then that group now has 6. If you cause an opponent group's liberties to go to 0 by surrounding it, the whole group dies, and its stones are removed from the board with those points becoming unoccupied again. Suicides (causing your own group to hit 0) are ok only if they capture the opponent first, otherwise are invalid moves.

Handling the game rules is easy with DFS/BFS. All you need to start with is a function like get_neighbors(position) which on a grid is trivial, being the 2-4 surrounding points depending on whether position is an edge/corner. Then you can use DFS/BFS (doesn't matter) and several lines of code later you've got a function like get_group_member_positions(start_position) that gives you every member stone's position no matter which one you query first. Now you can make a function count_liberties(group_positions) -- which can be solved as another depth-first traversal problem over the neighbors of each member of the group that are empty and haven't been counted already.

Even less code this time though; have you ever had to write 4 lines of code like "for el in list, for child in el.children(), if child blah, do something"? That's a DFS, just not a general one since you know how many layers there are (or that you care about), and it assumes children aren't shared between els.

From all that you can then have a function like get_stones_captured_by_move(move) that tells you what (if any) stones need to be removed if move were to go through: for each neighbor of the move, if any are the opponent's color, count the liberties for that neighbor's group and if it's 1 then those will die when the move is played (takes the last liberty). If it's all one big enemy group around the move you'll have to account for duplicate positions to remove, but those are minor optimization details. Similarly the fact that everything is recalculated all the time, that could be optimized with more storage.

BFS/DFS are just basic building blocks here.

Re: I interviewed at six top companies in Silicon Valley in six days

#549
post #493

Earlier quoted context omitted.

I was recently asked to identify pages in our 10 million line application that use a certain piece of business logic. It involved parsing the page and their nested subcontrols into a tree with by doing a modified BFS on the linked files, doing a modifed BFS on the tree to identify the related code behinds, parsing the C# from the codebehinds into a tree, and traversing the C# tree (again with a modified BFS) to find…

You are essentially looking for patterns in text, your solutions looks not ideal and it takes a lot of time to develop vs just using some linux tools and piping output from one another. 10 millions line is nothing... (commenting based in your gist) would go even further and say that you could easily have installed something like https://oracle.github.io/opengrok/ in three commands for your organization and extract a…

It feels like OpenGrok should be able to do this, but I'm not seeing it. How do you search for a method call in a code path? E.g how do determine i function A calls function C? function file1.A(){file2.B();}, function file2.B(){file3.C();}

Re: I interviewed at six top companies in Silicon Valley in six days

#550

Earlier quoted context omitted.

Many acqui hires get interviewed again. Most acqui hires are a business deal for the company's business.

Does any other company than Google interview acqui-hires? I’ve never heard of any other company doing this, but I haven’t been looking especially carefully.

[deleted]
Post reply on HN