Hacker News new | ask | show | jobs
by jondubois 3519 days ago
I've been coding since I was 14 (I'm 27 now) and went to uni; I usually never have a problem with technical interviews, but I applied for Facebook just to try out their interview process (because one of my academic-minded software engineering friends told me that he didn't pass the third interview - So I was intrigued).

I thought that their questions were mostly good but the interviewer makes you code live in realtime - I found this really stressful and I froze several times.

I remember one of the challenges they posed in one of the interviews was to flatten a JSON multidimensional array that had an arbitrary level of nesting. I implemented the recursive solution without any problem (which is the difficult part right?) but then the interviewer asked me to come up with a non-recursive solution - This is actually easier, but because I was under stress and was still thinking about the problem in recursive terms, I just froze.

I even asked "Do I need to use a fringe list?" (referring to a structure used in several search algorithms) but I don't think the interviewer understood my question and they weren't able to give me any guidance for what they were specifically looking for so I just asked to skip that question because of time pressure.

Then later they asked some really easy questions about HTML and CSS (which I've done thousands of time) but because of the IDE they made me use, I couldn't actually run the code to test (and under stress, I forgot the exact syntax for a few things).

I guess this is an interview process you need to really prepare for.

I suppose the process makes sense for FB; the feeling of 'being watched' which I felt in the interview is probably common while working there day-to-day (considering the open workspace environment) - They need engineers who can perform in such an environment. I'm definitely not one of them.

4 comments

Actually to me this just sounds like a typical bad tech interview. The idea that you'll be live coding on the job with someone looking over your shoulder is kind of silly no matter where you work, even in an open workspace. Also, you'll probably use your own tools not their IDE, and if you did use their environment, you'd have ample time to pick it up. And so on and so forth.

I've frozen in interviews before under similar circumstances. The only blame I place on myself is not being a better interviewee... it really is a skill unto itself quite apart from the job and apart from programming.

I actually did a very, very similar interview before without any issues. The difference was that the previous time, the interviewer gave me a paper with lots of questions and left the room.
Is there no trial period in the US?

Every person we hire here (Switzerland) gets interviewed but because it is almost impossible to know if someone is going to work out there is a trial period of three months by law. Usually with a termination time of one week. After the trial you will usually need to give at least three month notice. You can get the most brilliant Coder but if he/she doesn't work with your existing team for what ever reason, he/she isn't the right fit for you.

You can only find these things out after they start working for you.

Unless there's an employment contract or collective bargaining agreement stating otherwise, people can be fired in the US at any time for almost any reason. That "almost" hides a little nuance, such as the reason can't be related to race, gender, or certain other "protected" reasons, but, "any reason" is a pretty good approximation. No notice period is required. If you're lucky, you get to walk out by yourself carrying a box of your stuff. Frequently people are escorted out.
That's horrible. And I'm from Romania, which is a second world country, basically.

We usually have a two week notice (it depends on the company and the position) and I've never seen someone escorted out. There's often a short inventory of company assets you used, and that's it.

It has its downsides, but the benefit of such a system is that it is easier to hire someone as well. It lowers the risk of hiring if you know that you can terminate employment just as easily, so the jobs market ends up being a bit more robust at the cost of a bit more volatility.

It should also be noted that for the sort of jobs we are talking about here there is a difference between being terminated 'for cause' (e.g. incompetence, theft from your employer, etc) and termination due to downsizing and the job itself being eliminated. In the latter case you will often get a package of benefits and the termination process is somewhat similar to the one you are familiar with.

However, no notice and escorting people out sounds more like power fantasy than something with economic reasons.
In the US, if there are mass layoffs at large company they need to give notice because of the WARN Act (100+ people) requires a 60 day notice. But many companies will just continue to pay those employees for 60 days but they aren't allowed on site (effectively fires, but still being paid)
I'd say it's more of a security concern than anything. The thinking being that you don't want a potentially disgruntled employee with little to potentially lose have access to your systems.
A trial period is a great idea only if the switching of jobs is not disruptive to both parties.

When you switch jobs in the USA, you switch health insurance and other benefits. Doing this for 3 months and then finding another job would be tedious.

Also, if it doesn't work out, what does the candidate do? Go hunt for another job with a negative signal on their resume? If I were a job seeker that would seem high risk.

This is the same reason contract to hire positions don't attract everyone. If you are good enough, the company will commit to you without the trial period, which candidates typically want.

Optionality has value, and both parties can't possess it.

> When you switch jobs in the USA, you switch health insurance and other benefits.

In Switzerland, you'll switch accident coverage and probably the pension fund. Still some work, but not as tedious as what I imagine the situation in the US to be like.

> Go hunt for another job with a negative signal on their resume?

Both parties are free to end employment during the trial period. Maybe the candidate didn't like the work environment? Also, the future employer stands to gain an employee pretty much immediately as opposed to wait for the usual 2-3 months(!) notice period. Finally, unemployment benefits in Switzerland are fairly generous (70% income over 20-ish months), which mitigates the risk to candidates somewhat.

Simply having a 3 month tenure on a résumé is a questionable signal to one's next employer, regardless of circumstances.
not specific to Suisse, but this can be PITA - actual hiring in bigger organizations take many more months, so hire&fire is a very costly exercise, time and cash wise.

As stated before, it's nicer to the employee on one side, but since everybody wants to hire proper guy to avoid firing&rehiring hassle due to these protections, interviews can end up on the ridiculous side.

you gain something, you lose something else.

I freeze under pressure, too, but I work in an open office and have no issue with that. It's not reasonable to literally watch over someone's shoulder while they're working. That's just interview hazing. They do it because the people who hired them did it, on down to the first engineering employee hired by FB who probably had it done to him/her because the people interviewing had no idea how to interview any better.

BTW, what's a "fringe list"? Googling that term shows me results pertaining to the TV show Fringe (which is great, but I'm sure not what you're getting at).

I guess it's not broadly used terminology but it was common when I was at uni: http://mnemstudio.org/path-finding-a-star.htm - It's basically a list which you use to hold nodes which you haven't visited yet and you expand them in-place and pop them off as you visit them.
Oh, right, like the "seen but not visited" set you maintain when doing BFS.
I have a coworker that said he basically walked out of an interview that asked him to write three different sort algorithms on the board - he was applying for your standard enterprise developer.

I agree with him. I'm not applying for a code monkey position. I'm applying for a senior software Engineer or architect. Someone who can use modern tools and create solutions.

I had two coding tests during my last round of interviews. One on a computer onsite where the interviewers left me alone with a computer and IDE and permission to use Google and the other a coding problem I had a week to complete, turn in on github, and the second part of the interview was going to be a code review.

I found both to be acceptable and relevant.