26 ms·
Facebook senior software engineer interview
- onion2k 6y agoThere are two interesting things in this post. The first is that a senior developer at Facebook believes every single senior developer looking for a role at Facebook can revise the same things. Clearly the author believes that Facebook are looking for programmers who fit a very specific mould, to the point that they're willing to go out in public and state exactly that. I'd argue that points to a massive monoculture problem at Facebook, but I'm massively anti-Facebook so I'm biased. Secondly, the author believes that senior developers, who likely have 10+ years under their belt if they're senior, need to spend a solid month revising in order to be successful landing a role there. Maybe that's worthwhile as FB pay well, but that's a hell of a time investment if you're not planning to stay at FB for a long time. That would certainly make me think twice if I was going to apply.
- deleted 6y ago[deleted]
- coliveira 6y agoMy experience is that the expectation is the same for ALL big tech companies: you need to spend about a month revising problem types that they consider important for an interview. If someone fails on this, it is enough for them to pass on a candidate.
- hpux 6y agoOn your second point, that's the reality for many established tech companies. I know many solid senior engineers that can't pass the entrance bar to FANG. That doesn't mean that they are "bad" engineers. Overall I think you can replace Facebook with Google/Apple/Microsoft/Netflix/... in the blog post and the end result would be the same.
- collyw 6y agoThese days I honestly think that a developer who is marginally above average but plays well as part of the team is much more valuable than someone super smart who isn't a team player. We rarely need to solve complex algorithmic problems these days, just plug some components together and work out why they aren't working.
- wojciii 6y agoI have not seen any interview problems where you have to debug an issue having limited information as often is the case in embedded systems. You have a set of logs and the source code to look at. The description of the problem is "X doesn't work" where X is some protocol or procedure. This is something that took me a lot of time to become good at (to not freak out, but to be systematic).
- ummonk 6y agoI saw it once, I think it might have been in an interview with Scale API?
- meowzero 6y agoI worked at a company, not a FANG, but had interviews like a FANG. We had a solid team. But some of us believed we wouldn't be able to pass our own interviews.
- mywittyname 6y agoI think there's a natural desire to want to hire people who are better than you are. Sprinkle in a little dunning kruger effect and I can see how a good team can end up feeling like that.
- jbn 6y agoisn't this what's happening at FANG companies: the gatekeepers (i.e. people giving interviews) have an incentive to not let people in too easily? This limits the pool of employees, and since what's rare is expensive, makes insiders more valuable? Also at FANG companies, interviewing feels (to me) like hazing that is unrelated to what the day-to-day job will be like. Some interviewers I had obviously had a very high opinion of themselves..
- aphextron 6y ago> I'd argue that points to a massive monoculture problem at Facebook, but I'm massively anti-Facebook so I'm biased. I'm pretty sure that's the point. Massive enterprises like Facebook have no need for creative "outside the box" thinking anymore. They need dependable, solid developers with a standardized skillset that they can plug into a position like lego blocks, easily replaced whenever they burnout or stop toeing the corporate line.
- Uberphallus 6y agoI kind of agree with your cynicism, but I'm partial due to having been refused by Facebook, twice. The first time I made the mistake of using Python (because of its whiteboard value) while not being proficient in it. They really didn't like me Googling some basic stuff. The second time I still used Python, but had 5 years experience using it behind. Can't be objective but it was probably the best interview I've ever done. Reviewed my code afterwards, and could only come up with minor improvements. Got refused, I asked what could I improve and I got a very generic "not a good match for the team" which, in retrospect, reading your comment, could have been very accurate.
- jyu 6y agoCoding a good solution is necessary but not sufficient to pass an interview. Maybe you asked too many questions or not enough, maybe you solved the problem too slowly. Interviewers for better or worse look for specific signals that clue them into your being a good coworker. It's why even if you're a good programmer you may need to apply multiple times before the right set of interviewers grant you admission into their club.
- deleted 6y ago[deleted]
- _Understated_ 6y ago> It's why even if you're a good programmer you may need to apply multiple times before the right set of interviewers grant you admission into their club. That would imply to me that their interview process is fundamentally broken.
- hn_throwaway_99 6y agoI couldn't disagree more with your post. The author is basically just putting out a detailed study plan for passing an exam. If a doctor posted a plan for passing the medical boards would your first thought be "Wow, look at that massive medical monoculture problem!" That seems like a ridiculous stretch in my opinion. To your second point, I hear this all the time in threads about tech interviewing: "Tech interviews are biased and make no sense" and also "I'm too busy to have to do a lot of work for this interview." If you don't want to put the time in to prepare, fine, don't, and then see how you do. Again, in my mind it's very similar to studying for the medical boards - in most cases doctors have many, many thousands of hours under their belt in training before still needing to study a ton to pass their boards.
- logicchains 6y ago>in most cases doctors have many, many thousands of hours under their belt in training before still needing to study a ton to pass their boards The difference is that what the doctors put so much time into learning can actually be quite useful for their job. The vast majority of competitive coding stuff isn't. Interview procedures based around it completely fail to assess some of the most important abilities in software engineering, like API design. As anyone who's ever used any of Google's open source libraries would have noticed, hiring people who do well at competitive coding problems is no guarantee they'll be able to produce decent software.
- tuvistavie 6y ago> The difference is that what the doctors put so much time into learning can actually be quite useful for their job. I'd be curious to hear what a doctor would think about that. My intuition would be that, as for almost any exam, a lot of time is spent on things that will not be useful for any other purpose than the exam itself.
- cableshaft 6y agoEven if it isn't, do doctors have to retake these exams multiple times (as developers have to do this for multiple interviews) every two years when wanting to switch jobs (doctors often don't have to switch jobs, they often have their own practice).
- robjan 6y agoFrom the article it would appear that anyone with a computer science background and a decent amount of experience as an engineer should pass the technical test without the need to spend the whole month revising. If you don't have a computer science foundation it's probably a good idea to learn the basics anyway, rather than learning just to pass the interview.
- wan23 6y agoThe bar for Facebook is something like being able to solve two medium-difficulty problems in 45 minutes. If you want to test yourself, you could try these, which are popular questions: https://leetcode.com/problems/find-all-anagrams-in-a https://leetcode.com/problems/find-all-anagrams-in-a https://leetcode.com/problems/subarray-sum-equals-k/-string/ https://leetcode.com/problems/subarray-sum-equals-k/-string/ Note that it's not enough to present any solution - you need to present a solution that is efficient. Also, you should be able to write the solution correctly without looking up anything and without running the code before declaring that it is complete.
- vlovich123 6y agoAs someone who interviewed people applying to Facebook (or Oculus anyway), the coding tests were intentionally told to be structured as one easy question (so that the candidate could build some confidence and provide some signal) and one medium/hard coding question (ie can they write more substantial solutions and solve harder problems). That’s for the traditional “CS” coding interview. The other technical part is an open ended design question (whiteboard/hand-waving diagrams/explanations with no code).
- baq 6y ago> Also, you should be able to write the solution correctly without looking up anything and without running the code before declaring that it is complete. That’s the bullshit part. This doesn’t happen in any other context in software engineering except interviews. This just test the ability to memorize algorithms. People with a life are at a disadvantage by either accident or by design, not sure which is worse.
- 6y ago
- wdb 6y agoProbably revising to remember it without needing to look it up ;) I can't be bothered to remember specific details like algos, I normally look them up.
- arihant 6y agoThe author mentions CLRS. It’s an introductory level algorithms book and is used in Junior/Senior years of undergrad. Expecting a senior engineer to be well versed in undergrad level algorithms is not a monoculture problem.
- janoc 6y agoThe problem is not the expectation but that something like that can even come up during an interview for a senior position! It is like testing a surgeon's suturing skill during a job interview. Of course, it is an essential skill for them to have, but that's something for a school exam and not job interview for someone with verifiable credentials. Or do you think that surgeon didn't suture in their previous job and just "winged it through" for years? What exactly do you hope to achieve with such an interview question? That's exactly what is wrong with software engineering hiring and interviewing. It is focusing on examining nonsensical minutiae instead of whether the person has any sort of design skills, is capable of teamwork or has any sort of project management skills. These are way more important for a senior engineer than whether or not they have crammed algorithms for a month and can reproduce them on the spot in front of a whiteboard (and will promptly forget them in a week or two again). That algorithm can be looked up in 5 minutes if needed, lack of project management skill could pretty much doom the company in the worst case.
- hackinthebochs 6y ago>that's something for a school exam and not job interview for someone with verifiable credentials The problem is the "verifiable credentials" vary widely in rigor. There is no analogous standardizing and credentialing body like their is in medical fields. So the "basics" need to be tested repeatedly at every new interview. The solution is to have an analogous standardizing body, but people in this field seem to be reflexively against it.
- TeaDrunk 6y agoA standardizing body has its own downsides. The medical credential stigma is real- nurse vs traditional school vs osteopathic school, many of which have been closed to specific races or gender identities historically. EDIT: Of course, that and the fact technology is extremely rapid. Does this mean software people need to re-credential regularly?
- dec0dedab0de 6y agothat's a hell of a time investment if you're not planning to stay at FB for a long time. I think that right there is a good enough reason for them to do it. They probably want to weed out anyone that is not planning on staying for a long time. In general, I imagine the more applicants you have, the more difficult you have to make it to get through.
- mylons 6y agoYour points are basically true across $MANGA as well. (Microsoft, Apple, Netflix, Google, Amazon) I think it’s more a symptom of interviewing being broken than just being a monoculture. They’re probably very related, though. Bad interview practices produce bad results, etc. Why is interviewing so broken? Why isn’t there something like certifications? Do things like unions address this? They seem to in construction, plumbing, and trade jobs as well as even acting.
- MajorBee 6y ago> $MANGA as well. (Microsoft, Apple, Netflix, Google, Amazon) I must say this is a new acronym (backronym?) for me. Why do people insist on shoe-horning in Netflix in there? Yes, I'm aware without the N these acronyms can collapse into a more distasteful and off-topic term, but is that the only reason? I'm sure Netflix is a "wealthy" company with a competent engineering org, but surely they are nowhere near the scale that the rest of the letters operate in? Netflix's competitor is just one of many subdivisions in Amazon, after all.
- spoonjim 6y agoFB pays astronomically well. You don’t have to work there, but if you do, this is what you have to do. Saying that it creates a “monoculture” is like saying that soccer teams only hiring people who can run this fast, jump this high, and kick the ball this hard get to be on the team. Sure, they might miss the occasional great talent who is unathletic but has some great gift for the game, but it’s not a bad set of hiring standards for the task at hand.
- driverdan 6y agoThis is a poor analogy. It's like making a soccer / football player answer a test on the history of the sport, how the ball is made, the geometry involved in kicking the ball, the mesh size of the goal net, etc. There may be some relevance but in the end if they're a good player none of that matters. You'd be testing the wrong things to know if they're a good player.
- pc86 6y agoI think this is an equally poor analogy as it assumes Facebook wants to hire all the good people it can, which isn't the case at all. Facebook is trying to limit false positives. They would rather deny 10 world-class developers than hire one person they need to fire 6 months later. Facebook, who is paying a lot of people to optimize its hiring processes, has found a correlation between the objective of "lower short-term attrition / first-year PIPs" and "quiz people about the mesh size of the goal net." I'm not saying it's the best long-term or that I agree with false positive bit as a business decision, but I find it hard to believe they're doing stuff like this just because they feel like it without any data to back it up.
- spoonjim 6y agoAlso the big tech companies only need "world class" developers in under 10% of their positions. Reducing latency on Oculus Rift? OK you need a Carmack. Building a compliance portal for some new law passed in Kerblachistan? A lot of people can do that, and a company like Facebook has a lot more of the second type of problem than the first.
- addicted 6y ago1) This isn’t unique to FB. 2) The kind of interview being described has been critiqued by many people, many times on HN itself (I am definitely one of those). The problem is that there are no good alternatives. One suggested alternative, take home exercises, became a mess because a lot of companies, and individuals at companies, started treating them as free labor. Beyond that, they need to be more complex to the point that an interviewee is doing actual work. 3) The best way to look at these interviews for senior engineers is them testing your ability to learn something “new” at a very fundamental level. It’s the equivalent of them selecting people based on their success in a badminton tournament. You will most likely need to pick up the game and it doesn’t have much to do with your day to day job, but it does say a lot about your ability to pick up new skills/tech ologies. The difference is that these interviews, unlike a game of badminton, actually have something to do with your job. To be honest, it’s not ideal, and I particularly hate it because I find it hard to find time to study and prepare when I have a family that I don’t want to neglect, and also a full time job that i would find immoral to take time away from. But it’s simultaneously hard to find better alternatives.
- permille42 6y agoThere are plenty of good alternatives. One is: Talk to the fucking candidate and ask them about the things they have done over the course of their career. Have them explain something you don't know about yourself and see how they do. The key thing here is you need senior engineers conducting the interviews to be able to judge properly, not the 3-4 yr out of college monkeys that Facebook uses to interview.
- fatnoah 6y ago>Secondly, the author believes that senior developers, who likely have 10+ years under their belt if they're senior, need to spend a solid month revising in order to be successful landing a role there. FWIW, I joined FB at 20 YOE and spent about 3 hours on Leetcode problems just to get my mind back to being able to handle "stupid computer" tricks. Array manipulation, algorithm cleverness, etc. are things that I hadn't really done since the early days of my career. Aside from that, the only real challenge was a system design interview with a VERY junior engineer where I had a really hard time keeping things at a level they'd understand while not coming across as patronizing.
- permille42 6y agoI had the same experience. They only asked about things I haven't focused on or cared about in over 20 years. The person on the other side of the design interview also seemed very inexperienced and wasn't able to follow things that would be obvious and simple to anyone who has actually done system architecture.
- fatnoah 6y ago>...things that would be obvious and simple to anyone who has actually done system architecture Load balancing web servers was one of those that almost got me in trouble. I just assumed that any sane web infra would balance load.
- fatnoah 6y agoI think the real issue here is this post reads like a "person who's only been working for a few years" or "has only worked at one company" guide to getting into FB. It represents a very NARROW view of who wants to work there and how they got there.
- dnautics 6y agoI (as a senior) had a rather bad experience interviewing with Facebook; I was mostly interested in interviewing for whatsapp, the recruiter went and put me in front of someone not at whatsapp, I programmed in an erlang-vm language, so the interviewer was already confused by the code I was writing. The interview was conducted over coderpad, and at the outset, the interviewer asked if I was familiar with it (I was; I've conducted interviews over coderpad), and I wasted a lot of time commenting out the interviewer's cut and paste instructions and writing out the tests, because when I wanted to actually test out my code, to my surprise, execution was disabled!! I didn't even know that was an option in coderpad. So, basically one of the key tools I use in my day-to-day coding workflow was kneecapped. As a result I wasn't able to run the quick tests I had written, and I had mixed up two similar algorithms in the implementation, but not in the tests. I would have noticed this IMMEDIATELY if I could have run my code! Needless to say I failed the interview at the first stage. Oh well. I probably prefer working at startups anyways (I landed at one in the domain I wanted to be in, working in the language I prefer, get paid reasonably well, and have sizable equity in a company that has a good shot at high upside in a short timeframe).
- permille42 6y ago"Hey are you experienced with coderpad?" "No obviously I have never encountered coderpad in my 20+ years of writing software and will have a hard time using a simple online text editor." Facebook interviewers are such insulting morons to senior engineers. I agree that actually running code, seeing the errors and fixing them in like 10 seconds is a common behavior amongst those of us who have been coding for ages. One can write code that works without doing that but it is a drag and wastes time.
- amazoniananon 6y agoThese are very basic/generalist things, not a specific mould. Refreshing your skills here and making sure you're comfortable with everything on this list will help you be confident that you can pretty much do the kinds of work available to you as a senior engineer. And if you are lacking in any of these, it almost certainly will show up when you're trying to function in the role. I run into this every day with entry level engineers - they have to rely heavily on others and also have to spend a lot of time ramping up on exactly these kinds of things. Put another way: if you did get hired for this role and managed to keep it, you'll be a master at this stuff within a couple of years. This is because these skills are generally useful no matter what specifically you are doing.
- gotosleep 6y ago"if you did get hired for this role and managed to keep it, you'll be a master at this stuff within a couple of years." I wholeheartedly disagree. I have a total of 14 years of experience. I've been at Google for the past 6 years. I'm an L5 (Senior Engineer) and I get good performance reviews. I interview candidates on a fairly regular basis on behalf of Google. I am fully confident that if I had to re-interview for my job today, without extensive pre-prep like the author suggests, I would have a very slim chance of passing. The fact is, these algorithm quizzes have nothing at all to do with our job. On the off chance once ever 5 years you actually do need to apply an algorithm, you would do extensive study into the possible options and solutions, write a design doc, have it peer reviewed, and then go down that path - not pull something out of your ass in 15 minutes.
- amazoniananon 6y ago> these algorithm quizzes have nothing at all to do with our job There are no algorithm quizzes here, and it's not saying to prep for one. It says you should have a good grasp on these: arrays, heaps, linked lists, searching, etc. And it provides quality references for refreshing that knowledge and for getting practice thinking and speaking about them in human language instead of internal abstract thought. I think we agree that if you are in a senior engineering role, I don't necessarily care if you can implement a linked list in an interview time slot, but I sure as heck care that you know how it's different from an array, how it generally functions, when you would use it, in what situations alternatives might be better, and so on. When and why would you use a linear search instead of a binary search, are you aware of how hashes actually work and that hash collisions may occur and need to be handled in some way, can you identify that a particular problem is best solved by recursion or by dynamic programming even if you can't whip up a functional solution in an hour, etc, etc. Some interview candidates literally can't tell you why you would use a linked list instead of an array - it's just an ordered collection to them. That's what this is about - it's not about quizzes, its about fundamentals. These are what our systems are made of and understanding them is valuable to do the work we do. And aside from data structures and algorithms and being able to talk and reason about them, I also need to see actual code of some kind that solves an actual problem in this interview, with appropriate questions around the presented ambiguity as well as be able to talk about its trade-offs, potential improvements, testability, maintainability observability, and so on. But these are not necessarily anything like an algorithm quiz
- wendyshu 6y agoYou're saying applicants have to revise their skill sets but I don't think brushing up on algorithms is a very big change.
- late2part 6y agoI think you meant mold. Not all Facebook employers have to be mouldy.
- mro_name 6y agothat gives that company way more credit than it IMO deserves.
- musicale 6y ago> Secondly, the author believes that senior developers, who likely have 10+ years under their belt if they're senior, need to spend a solid month revising in order to be successful landing a role there As others have noted, the same seems to be true of a number of other computing companies: the "technical interview" is a sort of qualifying examination (largely focused on undergraduate algorithms/algorithm puzzles/leetcode type problems) that is unrelated to the actual work.
- ummonk 6y agoWhen conducting interviews, I like to ask questions that are similar to coding problems I've actually faced. That said though, in general the coding interview doesn't need to be directly related to work to be useful signal - in fact, to the extent that it's not similar to the interviewee's day to day work, it successfully measures the interviewee's ability to quickly pick up and excel at a new tech / framework / skill.
- mberning 6y agoFacebook have been contacting me for years on linkedin and email asking me to interview. This is exactly why I have never responded.
- gedy 6y agoUnless these skills that are interviewed for are directly translateable to the job, it seems like this "prep work" filters out busy candidates who are already working and have families, kids, lives. Actually maybe that is the intention, QED
- nyaloka 6y agoI'm absolutely distrustful of any companies where an interview requires prep work. Who is woth more? That who remembers 50% of a heavy algorithms book right after reading it or that who remembers 20% of it after having used it as a display riser for the last 5 years?
- WrtCdEvrydy 6y agoWorking as intended. We need people who are willing to be worked to the bone and only bleed FB-brand blood :D
- djipko 6y agoWhile this may not be inviting to you, I think there is a flip side to the "wide-net" that big companies cast on LinkedIn and such. Instead of just hiring from a pool of "well-established" candidates, they give a chance to a wide variety of people from different backgrounds - as long as they can pass the interviews. This may not sound like much to anyone who is established in the industry or happened to be in the right places for a good career head-start, but for people coming from non-traditional backgrounds, industries and especially places where there's no tech - being able to study-up and land a job at some of the most well known names in the industry can be life-changing. I think this is a very under-appreciated side effect of the "recruiter spam" from FAANG that everyone seems to dislike if they can afford to.
- DaiPlusPlus 6y agoFacebook stopped being a /cool/ company to work for about 4 years ago. How can they expect to attract the best when they’re so lacking in corporate ethics? Don’t say it’s the almighty dollar because anyone with the chops to make $200k/yr from Facebook could start their own SaaS and make $400k/yr without too much effort. So what’s left to be proud of about working at FB? You don’t even get a private office anymore. Downvoted.
- thrwyoilarticle 6y agoAnd, for all that money, they can't seem to keep any of the features working.
- chiefalchemist 6y agoTheir biz model and revenue aren't based on user features working. The priority is on keeping what we can't see working. Most everything else is window dressing. Put another way, the engineering heavy-weights work on the important stuff. Interns and such gets the rest.
- Avalaxy 6y agoPlease tell me more about these SaaS ideas that will make me 400k/year.
- stdbrouw 6y ago> anyone with the chops to make $200k/yr from Facebook could start their own SaaS and make $400k/yr without too much effort. Or, I mean, they could start their own SaaS that for any one of a thousand reasons ends up making them $0k/yr.
- sumtechguy 6y agoThat is the rub of it. Making software and selling it are different skill sets. Not everyone has both. Selling things about getting others to think your incentive is good enough. Not everyone has that skill set.
- 6y ago
- NeverFade 6y agoBesides the usual advice, this observation is very interesting: > Applying for senior engineering positions (>E4) in FANG companies is one of the best ways to get into them. This comment by a veteran senior engineer confirms to me that Facebook, just like most other FANGs, does a poor job of promoting from within. There are multiple comments to the same effect from many other FANG employees: It's much easier to get recruited for senior roles from the outside, then get promoted from the inside. The result of this failure is that job-hopping is the most valid career strategy for aspiring seniors.
- jordan_curve 6y agoI think you’re misunderstanding the author. The sentence after the one you quoted is > Most of these companies have solid internship programs, and almost all E3 (entry-level) positions are offered to returning interns. The author is saying that getting an entry-level position without an internship is very difficult at these companies and so if you want to work at one, applying as a senior engineer is a much easier route. FWIW, I work at one of those companies and have found senior roles and promotions to actually be pretty biased toward longtime employees
- hpux 6y agoI don't necessarily agree with your observation. The issue here is that companies like Facebook hire a ton of entry-level (E3) engineers each year that come from their intern pool. Although many of them get promoted, not everyone can pass the bar. The need for more senior engineers is persistent in the company. Another thing to mention is that typically there is no headcount for E3 engineers at Facebook (besides returning interns) for external hires.
- tudelo 6y agoNot sure the source of downvotes, what you are saying seems true. From my experience they will generally not even interview a new grad who has experience for E3 jobs with an internal referal.
- myhf 6y agoWhat do you mean "pass the bar"? Promotion is a process of supporting and grooming someone for advancement once they have been selected by the promoter. There is no bar to pass.
- nicebellvue 6y agoIt is worth noting that interviews vary a large amount within Facebook depending on which organization you report up through. While I’m no longer at Facebook, I used to interview a number of senior engineers within AR/VR, and cramming CLRS would not really help with our Ninja loop at the time. Maybe it is different now?
- conorh 6y agoEvery time I read these posts I find them very depressing. Crunch through an enormous bunch of algorithm problems in order to perform well on some unrealistic whiteboard programming (I think the system engineering problems are actually more useful though) - as usual we've focused on the easy to measure metric rather than anything actually useful. Maybe these things are meant to be a proxy for how good you are at other development tasks, but it has never seemed to work out that way to me. Some of the very successful people I know at FAANG companies have told me that they would not pass the algorithm interviews without months of preparation and that they don't really use those skills.
- gonzo41 6y agoIt is a proxy or how good you are at other development tasks. I think it's a bad proxy. Mostly because I've read and studied CLRS at school. And I don't use the fun parts much in the wild. I'm also not expected to be able to recall things that you can look up. One 'slightly' shameful things I noted about myself reading that list of system design interview questions is that I actually don't use most of those systems or know their features well enough. Other than YT of course. I feel like the simpler interview process would be to just take a person and do a hand wavy system design interview. Then if they pass, hire em on probation for 2 months and slam them with work. They get paid, you maybe get a feel for them. They sink or swim. You keep em' or toss em' away at the end of the two months.
- wojciii 6y agoHmm.. this is how I got hired last year. I told the employer that I wanted to test them and to get me a short term project we could use to determine if company/me are a good match.
- dntrkv 6y agoThat approach would work for a startup, but not when you’re hiring 100s of engineers on a weekly basis. Not to mention the amount of bias that approach will introduce. At least with the current approach, you know exactly what the criteria is to land the gig.
- 6y ago
- sebastien_b 6y agoActually, I don’t need to read it, as I would never work for a company like Facebook - Facebook itself least of all.
- grumple 6y agoCLRS is over 1000 very dense pages. I assume the author just did a fairly casual reading and didn't work through many problems. Even still, this is a full month of study just for the interview process, and little of this sticks unless you practice it. This basically says to me that big companies just want to hire new grads or people who have copious amounts of free time to waste on studying, or perhaps enough wealth and freedom to take several months off (someone I knew with several children and a dependent wife took 3 months off to prep for interviews and got multiple offers! But this is only possible if you are already wealthy because of the high risk involved and lack of income). I'm not saying I haven't done an extensive amount of prep - I own 3 of the 4 mentioned books plus CTCI, though I've only read the latter and DDIA, and I just did advent of code 2020 - but I'm a man with a remote job and no children and it's still a pain for me to stay at my current level of being moderately competent at algorithms. And then, of course, you'll get into BigTech and spend time fiddling with frontend components or configuring infrastructure or gluing apis together and you'll never need any of this again - with the exception of the content of DDIA, which would be a much better focus for senior engineering interviews and you end up learning/using a lot of this in practice.
- almog 6y ago> CLRS is over 1000 very dense pages. I assume the author just did a fairly casual reading and didn't work through many problems. When I saw his day to day plan include things like chapters 22-26 of CLRS, I thought the same and casual might be an understatement unless he has read this book multiple times already. DDIA was by far the preparation reading I've enjoyed the most. I'm currently reading it again. It is so eloquent and fun to read but other than just the fact that internalizing these topics to a level where one can feel comfortable discussing and reasoning about them, you can also use this book to navigate a deeper learning path through its many footnotes.
- ajg360 6y agoHe also mentioned in his article: > When studying CLRS or PP, it’s essential to solve the exercises at the end of each chapter. That will help you to solidify what you have learned into your brain. That's what boggled my mind when I read this. There's no way that he read multiple chapters of CLRS a night and did all of the problems at the end of the chapter. I've done most of those exercises; some of them took a long while to get through. I guess that's why I take issue with the advice that is given in the article. It is kind of unrealistic for any 30+ professional with a family, children, etc. to study this much for an interview.
- tjr 6y agoThe author suggests studying Programming Pearls. Bentley wrote there: As soon as we settled on the problem to be solved, I ran to my nearest copy of Knuth's _Seminumerical Algorithms_ (having copies of Knuth's three volumes both at home and at work has been well worth the investment). Because I had studied the book carefully a decade earlier, I vaguely recalled that it contained several algorithms for problems like this. After spending a few minutes considering several possible designs that we'll study shortly, I realized that Algorithm S in Knuth's Section 3.4.2 was the ideal solution to my problem. Why is vaguely recalling an algorithm studied years prior and needing to look it up indicative of a poor candidate in an interview?
- tantalor 6y ago> Why is vaguely recalling an algorithm studied years prior and needing to look it up indicative of a poor candidate in an interview? The article does not imply that it does.
- blonde_ocean 6y agoThe article doesn’t but I think OP’s point was that relying on knowledge / algorithms designed and provided by others would mean an immediate fail in a FAANG interview, but it’s exactly what successful engineers do when employed at FAANGs.
- btilly 6y agoAnd the reason is that you have to stand out from other candidates. If enough candidates do know algorithms on the whiteboard, then they can set the bar that high.
- LandR 6y agoHow can anyone work at Facebooks nowadays and have a clear conscience. Is it just the salary? It is, isn't it? Just money. How depressing.
- lrvick 6y agoI know multiple people that have taken jobs at Facebook in recent years that feel it is a net negative in the world but could not resist the paycheck and justify it by committing to either by work hard as user advocates from the inside, or just finding open source work that doesn't directly exploit users to drain their resources on. I for one have taken interviews at Facebook with 0 intention of working for them just because they have a tough process and it is good practice. Wasting some of the time and resources of an organization that inherently evil also makes the world that much better.
- burnthrow 6y agoSo, they didn't make you an offer.
- simoncarter 6y agoHow is Facebook inherently evil?
- xR63cRyqrL 6y agoTurns out you got to pay bills even if you are on a moral high horse. Besides if one has to have a clear conscience to match everyone's standard here, one should stop working at FAANG, stop using FAANG products, maybe stop using big oil products, stop using big pharma products, is it ok to pay taxes to a govt if you don't agree with something they did or should one pick up and move too? what else did I miss? HN is so much of a echo chamber lately for some topics, there was a recent discussion about FB head of integrity leaving the company and the top comment and thread was a personal attack on the FB CEO's integrity without even understanding what an integrity team/dept does in these companies. I could just as well have been reading youtube comments. I see threads with some topics now and I can pretty much be sure to not expect to learn anything new or get a good discourse. Just people thinking they are better than others.
- deleted 6y ago[deleted]
- ajg360 6y agoI've been programming professionally for 12+ years. I haven't had a need to look at CLRS since I took my graduate (!!!) algorithms course in college. I don't work in FAANG, but I am a senior developer in another industry. It would take me way more than two and a half weeks to work through all of the problem sets in CLRS; two and a half weeks is more for someone who is a year or two out of college. I don't think being able to work through the problems in that book is indicative of a senior developer either... Anyway, this is why I'll probably end up never changing industries. The barrier to entry is (too) high; especially for those of us who already make comparable money.
- hocuspocus 6y agoI don't think many people who got a job at these companies used CLRS to prepare for the interviews. At least not the ones I know. There's a reason leetcode is so popular. In my own experience you really need to know how to solve the typical easy/medium questions quickly, interviewers themselves don't really want to ask hard questions. The infamous CTCI covers them, EPI is better from what I've heard.
- throwaway7281 6y agoSad to see that FAANG is so attractive - sure, pay is nice, technical problems are nice - but you are actively working on walled gardens. You become a walled gardener.
- exhaze 6y agoHey, someone's gotta paint the roses red.
- colmvp 6y agoI used to believe that when I was younger. Now that I'm older, I'm understanding of people optimizing pay and intellectual challenges. At the end of the day, people have to optimize for their own interests because the world sure as hell doesn't care about your or my sacrifice. Even my best friend who took a job at a non-for-profit for many years helping those in need eventually joined BigCo to be able to afford things in life.
- throwaway7281 6y agoYes of course. You have to give in at a point, because you have no options, it's probably simple as that.
- ah88 6y agoI like their interview process (minus the leetcode grind that’s been happening lately). They focus on fundamentals and core CS knowledge. Other company interviews, like mine, focus on knowledge or current trends, which change over time.
- j45 6y agoNot just for Facebook but a decent study guide in general.
- mlthoughts2018 6y agoFacebook is pure self-parody at this point. This post is tragic comedy with no practical value besides entertainment. Anyone pursuing job options following advice like this has a severe problem with lack of self-esteem and capacity for independent thought.
- krooj 6y ago100%. There’s an assumption in articles like this that you even want to work for said FAANG company. Additionally, these posts assume a one-way interview process, which is a sure fire way to end up places you don’t want to be. Jump through all the hoops like a good little show pony, then maybe if you’re good enough, you get an offer and... what? Congrats, now you work for a terrible organization at a level where you’ll never be able to affect real change - you’re a literal cog. Bravo. Do the research and learning out of a genuine kernel of curiosity and self-betterment, not to whore yourself out to some corporation.
- mlthoughts2018 6y agoThe comp offers aren’t even that great, even compared to midrange tech companies, especially for senior / staff level engineers. I worked at a midrange ecommerce and content licensing firm, about 20-25 years old, in a major US city, and my total comp as a senior engineer (6 years of experience then) was in the range of $350k between salary, equity and bonus, and this was over a decade ago. If you find a company that values you and needs your skills, you can get high comp at lots of places, and many have much better work / life balance, less wanton dysfunction and less political drama in the workplace. Even a 50% or 100% increase over the $350k isn’t worth debasing myself with “dance monkey dance” whiteboard hazing. You might as well ask Facebook to give you a dunce cap on your first day, or a t-shirt that says, “My lack of self-respect is so severe that I agreed to do Facebook’s interview process.” The mere fact that I’d actually be valued at the $350k place and wouldn’t be rectally probed to ensure I am fungible with every other assembly line programmer is a big indicator that my total earnings over a long time are likely to be much higher away from a place like Facebook. Generous scheduled equity refreshers are no match for actually rising in responsibility and skill growth to critical new positions in a firm.
- driverdan 6y agoThis just confirms how terrible FB's hiring process is. If you ask candidates questions about things they won't use on a weekly basis you're doing it wrong. No one should have to study for an interview.
- donatj 6y ago> The big tech companies will not get pedantic on the language that you decide to use in your interviews. Ten+ years ago, but I received an email minutes before my second phone interview with Facebook that they were passing on me for not being adept enough with JavaScript. I was supposed to be going over a take home project with the team on that call. They never even saw the project I’d spent the entire weekend on, and I’m still salty.
- davidw 6y agoI'd try and view it positively: you dodged a bullet in that you avoided working with a shitty organization that does things like that.
- paxys 6y agoIf it's a front-end position then that makes sense, considering there is really no alternative to JavaScript (or rather wasn't 10 years ago).
- donatj 6y agoWhile it was indeed a front end project. I was not _unskilled_ or unfamiliar with JavaScript, and had been working with it since the late 90s. I made this abundantly clear going in. It just had not up to this point been my focus, but I was very excited to grow into the position. They could have at the very least looked at something they had me spend hours on. Honest to god, if they'd had a single person cast eyes on it for 15 seconds I wouldn't hold this grudge. I still have the code in a private repo on GitHub and looking at it now it's very clean and with small exception not unlike code I would write today.
- sjg007 6y agoThey passed on the WhatsApp guy too and that cost FB $20 billion. So moral of the story is start a startup!
- derivagral 6y ago> People must avoid using less mainstream languages in their coding interviews as it’s possible that your interviewer might not be familiar with those languages You'd think the CS knowledge would be prized more than the application, but I suppose that's not what these roles are for...
- openfinch 6y agoAhh, so they're not actually looking for seniors then? Sounds like they want people who are "passionate" enough to spend months prepping for an interview so they can milk them dry without the risk of pesky things like "free time" and "family" getting in the way. Tongue in cheek analysis aside: - A phone interview to weed out timewasters. - A RELEVANT technical take-home task that could be done feasibly in a few hours. - A long, informal, in-person chat to determine "culture fit" and personality. - Actually checking references. That's all you need, anything more is just self-importance - or worse - time wasting.
- bra-ket 6y agotechnical take-home task is mostly time wasted for the candidate, working for hours just to be ghosted again and again, you will be selecting for people who have nothing better to do. I'd skip that (and leetcode) entirely and during in-person chat put emphasis on discussing prior projects in detail. As for "system design" ask a question on your current architecture, how would they approach solving a particular problem you actually have/solved, and see what questions they ask. That's how good people who built the tech industry used to get hired in the old days (i.e. when they were not friends of friends)
- blamestross 6y ago"Prior projects in detail" is a great idea until most of your desired candidates can't do that because of NDAs. Most of my NDAs do not permit me to discuss anything except the broadest strokes of my past projects.
- dilyevsky 6y agoI interviewed a bunch of fb E4s at previous gig and yeah imo not a lot of them would have senior title if you rewind industry say 10 years back. Once you deviate from their canned prep it all falls apart. They’re almost all very good with basic algo stuff tho
- freebee16 6y agogot to last round for E6 and found it frustrating. Answering the technical questions required intimate knowledge of production systems that scale to billions of users with proprietary hardware (i.e. no cloud). It seemed to require previous experience at facebook, google, or amazon.
- Kaizeras 6y agoMost of the people I know who did competitive programming in high school spent a just a few evenings preparing for FAANG interviews and still got offers in the end. I have the feeling that all the bitterness towards this interview process comes from people who refuse to do the initial investment of time to learn the foundation for solving coding challenges. Once you go through and understand a few hundred coding challenges, things start to repeat themselves and then it just takes practice and consistency. Personally, I find coding challenges fun and even quite enjoyable at times, so I don’t see why it’s a waste of time to get good at them. At the very least, I learned a lot about Java doing them than I would‘ve learned if I did a side project where I‘d need to use some framework or library that’s based on Java. Edit: grammar
- meowzero 6y agoIn my experience, most people who do coding challenges are the younger folks. As we get older, we have better things to do than do coding challenges, especially a "few hundred" on our spare time. They might have other hobbies or responsibilities.
- borvo 6y agoditto. I like to play with these as a fun intellectual challenge, even though I've never been interested in FAANG.
- janoc 6y agoThe problem is that coding challenges are OK if you are hiring for an entry level position and need to make sure that the fresh grad can actually write some code at all (surprising amount of them does not). However, what exactly are you hoping to achieve with this when hiring a senior engineer who is likely to have 10+ years of experience in the field? With verifiable references? You are only wasting everyone's time. Sorry but I am really not going to spend a month preparing for a single interview where I have no guarantee of neither an offer and not even knowledge of the team/project I would be working on (Google recruiter calling me seriously thought that this is normal - you apply "blind" and only after passing through their hiring "torture test" of 7 or how many interview rounds you get told which position may be "the best" for you. I said "No, thank you" and hung up.) The issue with this is that you are both testing the wrong skills (senior engineer really shouldn't be doing basic algorithms but system design, leading teams and managing projects!) and that this is "senior engineer" position is likely senior only in name because the recruiters want to attract more competent people. In reality it is an entry level job ...
- base698 6y agoBeen reading, "Disciplined Minds: A Critical Look at Salaried Professionals and the Soul-battering System That Shapes Their Identities" https://www.amazon.com/gp/aw/d/B008GRDKPG/ref=tmm_kin_title_0?ie=UTF8&qid=&sr= https://www.amazon.com/gp/aw/d/B008GRDKPG/ref=tmm_kin_title_... It's seems like qualifying exams seem to mirror tech interviews in structure and purpose.
- ericbarrett 6y agoI passed a Facebook Infra interview three times: 2007, but I declined the offer (whoops); 2009, accepted, worked there for 4 years as an IC5; 2016, returned for 6 months (whoops). The 2016 interview was much harder due to the influx of leetcode-style questions. I don’t think I’d pass one in 2020.
- spamizbad 6y agoA warning from a Python developer & hiring manager: The Python used in Elements of Programming Interviews in Python is NOT clean or idiomatic. Perhaps they designed it for whiteboard-style interviews, but if you walk into a Python shop that does stuff with coderpad/screen-shared you code like in the book you're not going to make the best impression.
- dmarchand90 6y agoIt seems to me to be almost superhuman to read multiple chapters and solve all the exercises in a single day. Maybe that's just the normal level of ability for FAANG staff? EDIT: maybe it's more reasonable if you're doing this full time. 1hr/question and checking the next day if you get stuck, as he writes in his blog, seems a lot more reasonable.
- war1025 6y ago> Maybe that's just the normal level of ability for FAANG staff? Based on personal experience, I think you certainly need to be "above average" to get hired by the big tech companies, but it's more like "top 20% of graduating class" and not "only the very best."
- techbroaway 6y agoThe best way to prepare for a fanng interview is to have friends there and get fast tracked on easy mode. FB rejected me twice and both times I followed a study plan much like the blog and in my case it turned out that I got too complicated with it and spent too much time on cool shit like dynamic programming, tries, all-pairs shortest paths but I should have stuck to drilling the simple data structures like stacks and BSTs cause that is all I ever got asked about. I also got backchannelled during the behavioral the 2nd time around which I suspect may have been defamation. In the end my fan club did me a favor helping me dodge a bullet because I probably would have accepted an offer until I read about how bad morale at facebook really is (which in hindsight was reflected loud and clear in the conduct of the aforementioned behavioral). One thing I have noticed about remote interviewing in general but especially with facebook is how disgustingly filthy some of the panelist's backgrounds were. During the portion where the candidate is allowed to ask questions I wanted to ask "Damn, you live like this?"
- xdavidliu 6y ago> Day 12 — CLRS (ch 22, 23, 24, 25, 26) > When studying CLRS or PP, it’s essential to solve the exercises at the end of each chapter. I spent the last 2-3 weeks of 2020 going through these exact chapters, 22-26 (solving every exercise and problem) and it took me about 15 hours a day. Toward the end of chapter 26, it got extremely difficult (Goldberg and Tarjan's push relabel algorithm for max flow).
- LordHumungous 6y agoOne thing to note is that FB has two system design interviews. There is an "infrastructure" track and a "product" track. The former is like the classic sys design round described here, but the latter focuses more on APIs and application level design.
- jakearmitage 6y agoI think we have a thread about software interviews every week, with the same discussion topics. Isn't this a problem solved by technical certifications? I mean, if the Top 100 companies do the same tests over and over again, with a very similar mindset and process, why not delegate that to a third-party? Then you just hire people that have Certification X, which matches your lust of algorithmic puzzles or whatever. I'm fine with meaningless tests that don't prove anything, as long as I don't have to do them for every single interview. I would gladly study for a certification, because it means I get to do it once and then I can prove everything you want me to prove in order to get a job to change button positioning.
- throw_me_2020 6y agoThat seems like something you could build. There's a handful of YC companies working on that. I don't think FANG companies are likely early adopters of that. They are all relatively conservative with hiring. Navigating the organization to find an internal champion who's incentives are aligned seems really tough. Internal established recruiting teams seem disincentivized to use a 3rd party certification. Using that might reduce the number/importance of the internal recruiting team.
- sjg007 6y agoThe advantage is that it would reduce total recruitment cost and burden. I mean filtering on a CS degree and school should be enough but apparently it isn't. There are also non-traditional programmers. There's a finite set of reasonable problems so there will be some difficulty in hiding the answers when you have access to Google vs in person. Outside of that, the most important skill is gathering requirements, gathering requirements and gathering requirements. In the startup world this is called finding product market fit. System architecture design and computational thinking are also necessary but I don't think any software engineer can do those well without gathering requirements which is basically about identifying product market fit within your corporation.
- btilly 6y agoThere are several problems with certifications. The first is that the certifying authority gets paid by the candidates. Therefore the trend over time inevitably is to make the certification easier and easier to get so that the candidates keep paying them. The second is that the field tends to move more rapidly than the certification. What does a certificate from 10 years ago about how well I know Python and JavaScript tell you about my current skills as a developer? Not a whole lot. There are reasonable certifications out there put out by companies for those who wish to work on their technology stack. (Open source, not so much.) The company has the resources and motivation to make sure that people who are certified for their technologies are going to be reasonably competent. But now the certification becomes a sales pitch. The company shows you how to use the latest version of all of their tooling with all of the optional side products. You go out into a real company and they are a couple of versions behind and didn't license all of those optional add-ons. You, the certified expert, are likely to become the person asking for everything to be upgraded and for a ton of new licenses for stuff that is only marginally useful. This isn't necessarily in the company's interests. True story. Many years ago I worked at a large FAANG. To limit how much time was wasted on bad candidates, they built a machine learning system to filter out bad resumes. In practice it was better than a recruiter at identifying promising resumes, but worse than a developer. But it limited how much recruiters had to bug developers with bad resumes. The machine learning system picked up all of the things that you'd expect. For example someone who thought it important to list Microsoft Word as a skill probably isn't a viable candidate for a senior software engineer. But the single strongest signal that it picked up was kind of interesting. At the time the MCSE (Microsoft Certified Solutions Expert) was one of the most popular certifications around. Anyone listing that was unlikely to be worth interviewing.
- fred_is_fred 6y agoInterviewing at some of these companies has become less about skill and more about having an abundance of time free from other responsibilities (work, family, etc). Perhaps that's the selection criteria intended since it indicates ability to work long hours?
- LordHumungous 6y agoLeetcode problems are good because they select for people who are willing to put in the hours to get good at them. Aka, hard workers. Above all else, what predicts success at a job is work ethic. This is even more true at FAANG.
- pseudalopex 6y agoThe hardest workers I know put up with the least bullshit.
- LordHumungous 6y agoPutting up with bullshit is also a desirable characteristic for FAANG
- pseudalopex 6y agoSure. It just doesn't test work ethic.
- andred14 6y agoAt this point in time I would rather go poor than sell my soul to work at Fascistbook: Where they ban you if your opinions differ from theirs.
- nilkn 6y agoYou can simplify the coding preparation by just getting a basic LeetCode subscription, filtering down to problems asked at Facebook in the last six months, and then sorting by frequency (how many times each question has been asked recently, according to user reports). CLRS, etc., are nice books, but if you're seriously considering a senior role at Facebook presumably you already know the basics and just need to memorize all the tricks for LeetCode problems. For system design, though, it actually is worth reading through "Designing Data-Intensive Applications."
- LordHumungous 6y agoYep, most of their questions are straight out of leetcode.
- jorblumesea 6y agoAs someone who just went through the FB E5 interview process and got an offer, this is largely incorrect. Or, doesn't reflect how my E5 interviews goes and doesn't match up with what I've heard from friends. This is all anecdotal of course and based on personal experience. 1) DDIA is way too deep for E5, system design or product design. In general, the book is just too deep for any interview. It's a fantastic book but it's dense and too detailed for a 45 min interview. 2) The system design interview is largely around communication and thought process, not spouting techniques and flexing. I feel like candidates have a fundamental misunderstanding of what the system design round is and why it's used. It is not simply a time slot to rattle off design concepts. 3) The big elephant in the room are the coding questions. 2 med/hard per coding round, and you need to nail it all. Not only that, but expectations are higher. So no bugs, test all your code, perfect one shot solutions in optimal time complexity. This is very difficult to do under pressure. 4) At E5 level, I found the system design portion fairly easy. If you've been through the sys design interview before or currently work as a senior, it won't be a big deal. I think people are blindsided by it because they are trying to up level themselves from L4 or E4, and then hit the "senior wall". 5) Behavioral is really important. Unfortunate to not see this being mentioned. tldr, E5 is hard because of the coding, not the system design. The system design at FB was similar to design questions and depth for all the major tech companies (MS, Amazon, Goog, Apple etc)
- Mauricebranagh 6y agoRe 3 really seems over kill an unrealistic for an interview, and maybe some times you don't need optimal time complexity. And TBH with a background in real technical computing I would probably look at buying in any required algos in from people like NAG. Your not really testing for those that can think outside the box in this style of interview.
- jorblumesea 6y agoThat's what I thought too, but I've heard from friends that didn't get offers that not getting the optimal solution is a reject. Even things like O(n) to O(log n). I don't agree with it at all, just communicating what my experience has been (and people I know that have gone through it). Obviously this is completely anecdotal.
- jonnypotty 6y agoI'm not interested as I think it would be hypocritical and immoral for me to persue a job at Facebook. Considering Facebooks current issues I'd be interested how people would justify this career path to themselves. It's like wanting to sign up for the UK armed forces in the middle of the Iraq war. Like, it's a really bad idea. What are your principle, are they summed up as "I want as much money as possible and who cares how"
- joe_fishfish 6y agoI'm surprised how far down I had to scroll before I found a comment like this. I was approached by a Facebook recruiter twice in the last year, both times I gave a polite "not interested", with a list of reasons why.
- chillacy 6y agoSome people probably _did_ sign up for the armed forces in the middle of the Iraq war. Not that I agree with them, but they probably saw themselves as patriots. Sometimes people just have different morals, try speaking to people who work in the MIC and you’ll notice that they all think they’re doing good.
- shiohime 6y agoPosts like this remind me immediately why I stopped bothering to apply for software jobs at other companies and stayed at my current place of employment to climb the ladder. The interview process is almost universally terrible and consistently tests you on a nearly useless subset of computer science that doesn't correlate well to actual implementation practices in the event you are hired. It really is a painful process, and probably needlessly so for most cases.
- objclxt 6y agoThis definitely isn't the only post you'll need to read, because it doesn't talk at all about the behavioural interview. Which at Facebook is actually one of the most important factors in terms of job levelling. The more senior a level you're aiming for the more important the behavioural interview becomes (because the less the job becomes about pure technical skill, and the more it becomes about people). Unfortunately - or fortunately, depending on your perspective - the behavioural is also one of the harder interviews to prepare for.
- lxe 6y agoPick a language that you don't have to "brush up" on before your interview -- the one that you work with on a daily basis and know like the back of your hand. Bonus points if it's a language with which the interviewer is less familiar.
- avl999 6y agoEven the ethical questions about working at facebook aside, as an engineering environment fb doesn't seem like that great of a place. Kent Beck was fired from fb, he worked there for a few years and shared his experience of the culture there https://softwareengineeringdaily.com/2020/12/10/facebook-engineering-process-with-kent-beck-repeat/ https://softwareengineeringdaily.com/2020/12/10/facebook-eng... It doesn't sound like a place I'd want to work at. Edit: Updated the link to the right podcast.
- johnnujler 6y agoSleep well, Eliminate stress from life, get a decent job that allows you to explore things you want to do on side, spend time with family and lead a happy life. Note that this is a very ambitious route to follow, most people never understand this or get to live like this. But if you are super ambitious and have a domain that you are interested in, go create a product, become an entrepreneur. There is nothing as rewarding. Please don't stress and burn yourself out for a job.
- lightsurfer 6y agoFacebook is unethical, immoral and destructive to human nature. No merit working there.
- alkonaut 6y agoImagine studying for an interview. Not about the company or its products, but bloody algorithm textbooks.
- leowoo91 6y agoI deeply regret clicking this. I've never worked with FAANG however I've been through 5-6 interviews. The way I see it, it's material that can be studied/recalled but you can make much more difference in your life with that amount of energy, unless you're a new graduate OR your job is interviewing other people. I understand the side effects that study can bring on to help ease the pain, though it won't work if you only rely on knowledge alone. That's where experience/context helps. Just be aware that fangs are not a measure of what a best software engineering can be, they're the ones make use of their branding well as a high entry wall. So please do yourself a favor and don't take the harsh to your heart, keep enjoying what you do.
- chojeen 6y agoDo people have any pride? Why would you subject yourself to this?
- ptmcc 6y ago300-500k/yr total comp
- lmeyerov 6y agoIt's interesting that the same questions apply to both a mid-level + senior-level technical interviews, but the answers+prep can be quite different: * Mid-level: Mostly topics you can learn in your 2nd/3rd year of college + having worked on 1-2 web data projects. Basically performing recall on textbooks and architecture powerpoints. * Senior-level: You can always go crazy on the same technical topics, such as by replacing "recite a paragraph from your old CLRS textbook" with "... and here's how that'd look on a multi-gpu/asics cluster". I didn't see anything directly on technical leadership, so maybe rethink the architecture questions from team/HR + product design + company/LOB perspectives. Weirdly, prepping at the CLRS-level seems like you're aiming for a more junior technical role / org, and I'd think more about 'revisit track record' and 'networking' than 'prep'. Curious how FB folks see that -- I'm probably misunderstanding something as there's a wide spectrum between 'Mostly knows how a production system works' and 'Ready to lead tech for a new team/LOB'.
- renewiltord 6y agoExcellent work and congratulations on the job. I like people who set themselves a goal and find a way to accomplish it, so I hope you find yourself successful at Facebook.
- orware 6y agoI arguably have a pretty good job currently in the public sector which has a fair amount of autonomy and prestige that have been earned within my current organization over ~13 years. Last spring after COVID hit I was reached out to by a Facebook recruiter with the conversation morphing after a few months (and two other individuals on their end) until having a really exciting conversation with a recruiter in early August that was just refreshing since it actually seemed like Facebook's hiring process wasn't that bad and that they might actually value me and my existing experience. Part of my challenge is that my current role is not completely coding focused so I really don't have that "true" software engineering background and find it hard to figure out where I'd fit in a typical tech company's role structure. Instead, I have experience coding my own projects for my organization and taking them from concept to production in weeks and maintenance over timespans of years, along with management and tech leadership experience within my own organization. Since coding isn't a daily focus all the time, my programming skills tend to need to be dusted off each time I take on a new project, and I know I'm not the best algorithmic expert, etc. but I'm reasonably intelligent (in my own humble opinion) and able to learn from others when I have that opportunity available (learning about extreme scaling techniques and certain advanced topics that might only be encountered within a tech-focused organization is unfortunately something I can't easily do within my current organization, and team-wise I'm the primary person interested in these sorts of topics so don't have others to really discuss the ideas with, which leads to that interest in potentially moving to a tech-focused company). I feel like my existing experience and ability to work with others and learn quickly would have some value (especially when you consider that new graduates don't necessarily have a lot of these experiences under their belt, but they are still considered for hiring...their algorithm knowledge might just be a bit fresher/recent). Switching back to the interview...I spent a bit of time studying for the initial coding interview and felt like I had done decently well, but still received the "thanks but no thanks" email a few weeks later. After that rejection (along with others over the last several years from companies I saw on the monthly "Who's Hiring" threads that intrigued me) I'm kind of done with trying to apply for tech jobs at the moment. I'd love to earn more and work remotely from my current location (now that the pandemic has made this a little more possible) and be able to contribute my working days to contributing to the success of a tech-focused company, but it's not easy to be accepted by a tech company when you don't have the right background or exact skills upfront, so at least for the time being I need to be happy with my current work situation (even if it isn't always the most glamorous, tech-wise, and doesn't pay the same as a large tech company might). This is just one personal anecdote of course, but I do wish there was a different hiring process for folks wanting to break into a tech company with existing experience that would be valuable, albeit non-traditional to typical hires.
- avl999 6y agoWhile I agree that these interviews can be a bit much but what's the alternative? If I am a job seeker I feel much more comfortable knowing that they expect me to write code and answer DS+Alg questions and prepare for it as opposed to companies selecting based on the the prestige level of the University you went or based on subjective judgments based on the resume and/or company fit. As someone who went to a University in Canada that no one working at big tech companies in SV would have even heard of I appreciated that I was given a chance to show my skill as opposed to them just hiring out of Ivys/Stanford/MIT or other big name schools (like what happens in Law). I also hate the new trend of "take home" tests. That just seems disrespectful of the candidate's time.
- deeeeplearning 6y ago>While I agree that these interviews can be a bit much but what's the alternative? So somehow literally every other industry on earth has figured out ways to interview people that don't involve whiteboard hazing but you think there is absolutely no alternative? Have you actually thought about what you are saying at all? Might want to check linkedin because I can guarantee most of your bosses are from Ivys/Stanford/MIT/etc >I also hate the new trend of "take home" tests. That just seems disrespectful of the candidate's time. But doing leetcode for 2 months is somehow better? Are you high?
- xtracto 6y ago> I also hate the new trend of "take home" tests. That just seems disrespectful of the candidate's time. And there lies the problem: I would prefer a take home test way more than whiteboard interview. With the take-home test I would feel more comfortable. As a VP of Engineering in a growing startup, I have to deal with interviewing 2 or 3 candidates every week. We have settled for a process which has given us good results. But for me the key has been to avoid taking tests "literally" but use them more as tools to get to know the candidate. To give you an example: I have had jr people that did too little in our "onsite" (a 3 hour coding challenge of modifying some source-code) but at the end we took a chance and offered 3-month internship with possibility of becoming full time after that. We have had success with that. I've had people who just flunk the interviews but I see something in them and we take a chance. Similarly, I have seen people that pass the interview pretty well but it so happens that they are just not cut for a startup culture (I had a guy coming from a"big corp" Tata/HCL/Cognizant/AmDocs kind of culture who struggled to strive in the uncertain and dynamic environment of a startup, after several months, we decided to end it (the nice thing in Mexico is that, by law, we paid him for 3 months severance) because both sides were suffering.
- deleted 6y ago[deleted]
- ProdigyFinance 6y agoAzole Kondlo is a toxic deadbeat who despite being a mediocre at best software developer, no longer applies those limited skills, and instead freeloads on the backs of his colleagues. The one area in which he still excels is in using meetings and processes to postpone active development, screwing over not just his colleagues but also his employer, who admittedly deserves this for enabling his behaviour in the name of diversity.
- lbriner 6y agoFirstly, the OP didn't say that you had to do what they did to get through the interview, they said what they did. If you think you don't need to do that much work, great, go for it and hope for the best. However, if you really want to work somewhere fang or not, the preparation might well be the difference between getting in and not. Too many recruits I have interviewed barely bothered going onto our website - are they really going to be bothered in the job? Secondly, these kind of posts always start the "technical interviews are terrible" bandwagon. As someone who has been on both sides of it, on the one hand, I was disappointed when I didn't make the grade at one agency but I have also wasted countless days of my life on candidates that claim to have what it takes but really don't. They might have LOTS of experience but objectively score very low in ability - honestly, people who take 5 minutes to write a 1-liner to split a string on a comma! They might be young and keen, but again, that in itself doesn't really count either way - unnaturally gifted or just over confident? Multiply that by 1000 for larger companies who must have hundreds or thousands of applications and how are they supposed to separate good from bad? By taking your word for it? By assuming that because you have worked for 10 years in the industry that you must be really good? Because you used to work on XYZ at a previous company? Unless you wrote it single-handedly, it is hard to know what value you added personally. They will test you in the best way they know how. Also, the testing is not just about being able to do what you and they already do, that is not worth $150K, they want someone who is flexible, a fast learner, someone who can approach problems creatively, who can tackle something that has not been done before without needing someone else to tell you how. Confidence is good unless you are unnaturally gifted and things like working well as a team etc. are minimum requirements for most organisations, not nice to haves. The technical tests then broadly fall into two categories - 1) find out exactly what you know about e.g. scalable systems by asking very specific questions. If you don't know how redis differs from SQL or the file system for caching, you are not suitable for a senior position in a company that operates only at scale. Most interviewer probably won't care if you have forgotten a subtlety or detail but phrases like "I know they are different, I can't quite remember why", don't sound so great. 2) The really strange questions where they are not looking so much for an answer as an approach - the one I heard about was, "how much would you charge to clean all the windows in Seattle". Any decent engineer should be able to reduce that to a set of assumptions or questions and then produce some kind of mathematical model in exactly the same way as being asked to write a complex program to serve one of your fang companies.
- oarabbus_ 6y agoI'm not at the level of a FB Senior SWE, but how does one do anywhere from 1-5 chapters of CLRS each day? Doing a single chapter of CLRS would take me multiple days. Is it that I'm just that far off from the level of a senior SWE? Can most of the experienced, talented programmers here cover multiple chapter problem sets of CLRS in a day?
- almog 6y agoExactly so, if they can actually read, understand, internalize and apply the dense content that CLRS delivers, 5 chapters a day (and mind you, he mentioned some of the more dense chapters in one of these 5 chapters days), that would have made for a much more interesting post. I would never recommend anyone to try and read CLRS in two weeks, or even a month. Even if you could do that, I think it would be much better to get through a chapter then try to apply the algorithms of that chapter to Leetcode/Codeforces question and cycle through the subjects as you advance through the book in a spaced repetition technique. For me and for many other people the linear approach for studying that they suggest is far from ideal.
- k__ 6y agoI read some devs simply did 1-2 months of interview training to get such a job. Learning what they ask and how to solve it. Had nothing to do with their work there, but it sure was a good filter against unmotivated people and idiots.
- alvarlagerlof 6y agoWhen I was a little younger, my dream was to land a job at a FAANG company, although I was thinking Google. Nowadays, I'm disgusted by the idea. Large and bulky internal processes, levels, interviews testing useless shit and constant controversies from management decisions. Now I'm actively avoiding anything that's like these.
- cambalache 6y agoHas anyone outside US has had any success to be interviewed by one of these big companies? (it does not have to be a FAANG). I have worked a lot in my interview preparation but then I get stuck in the "We wont sponsor any visa" wall, especially grating in the case of Canada because that completes the circular requirement that in order to get an express visa you need a job offer. It seems to me the only realistic option is to be hired at your home country, but the country I live is very small and I am not legally allowed to work here in any case.
- paxys 6y agoI assume things have changed in the last 4 years but before that all large software companies were sponsoring H-1Bs.
- tananaev 6y agoA lot of companies are still sponsoring H1B, but it definitely got more difficult. One thing to note is that most companies only sponsor visas for senior level engineers (FB/Google level 5 or above). It's not easy to get that level, especially in bigger companies. I would say the best bet is interviewing for unicorn startups. They are hiring more aggressively and probably more willing to give senior level offers.
- digianarchist 6y agoI’m in Canada and US recruiters reach out occasionally. The TN visa makes it easy for US employers to recruit here.
- cambalache 6y agoYeah, same for a few of other nationalities (Chileans, Mexicans, Aussies), as for the rest...not so easy. Things like these is why I laugh when people talk about globalization going too far. This is only true for powerful organizations
- draw_down 6y agoFeel free to moan about monocultures and how unfair these processes are to certain kinds of candidates (which may to some degree be figments of your imagination anyway), or you can deal with reality as it is. If you would like to make a lot of money in an engineering position, this is a well-written guide on an important step in that direction. If you want to do something else, great, go for it. Facebook is gonna be fine either way. I've never worked there, but something about every single tech job I've ever had makes me suspect it's not meaningfully worse or even different from the jobs you guys work that are supposedly so much better and probably pay 30% of their total comp. Oh but your culture is sooo good and Facebook is evil. Alrighty.
- strulovich 6y agoAs a person working in Facebook for 7 years I feel like this post is incorrectly portraying FB's process and culture: - First, Facebook avoids titles, so there's no such thing "senior software engineer". Levels are generally unknown by people so ICs get judged by their ideas, and not their title. - If there was such a thing as "senior" in Facebook, it's not starting at the E4 level. (If you look at levels.fyi and align the Facebook levels with Google you might get that an E5 is a senior) - This entire list of chapters of CLRS chapters is ridiculous. It's a great book and I'd recommend it for people into theory and who will be around Computer Science. But if you didn't go through a college degree and algorithms course, and need to interview, do yourself a favor and go directly for LeetCode or Cracking the Coding Interview. YMMV as to how much you need to learn. Some people I know can easily breeze through these interviews with no prep, those people are also super smart. Some smart people I know have a harder time, no system is perfect. - To actually get hired in one of higher levels at Facebook you will need to go through the design interview, which is a very different type, and the career experience one. No matter how well you ace the coding, you will not get an offer for a high level if you didn't succeed adequately in these. - All of my coding questions in the last few years required knowledge I learned in my first year learning programming. This is usually the norm. Of course, this is my personal experience at Facebook, but it is based on quite some time and a lot of interviewing.
- yrimaxi 6y ago> First, Facebook avoids titles, so there's no such thing "senior software engineer". How egalitarian. Let me guess: you are an IC6, or perhaps IC7? You just give off that vibe.
- strulovich 6y agoI joined Facebook 7 years ago as an IC3, and am still around so you could probably do the math. Had the same vibe to me when I was a new grad (well, maybe a less polished one) and got a lot of respect then. I also knew which people I enjoyed working with and trusting without ever knowing their level. I could make an educated guess of course. But those cases when your guess is wrong are the important ones. This is all not to say there's not plenty of issues with this system, and I totally get where your snark is coming from, but I would personally still stand by this idea over many of the alternatives.
- mocmoc 6y agoFcbk doesn’t deserve to have devs working for them
- patrickserrano 6y agoMaybe it's imposter syndrome, but it often feels like these interviews were designed to discourage self-taught developers ¯\_(ツ)_/¯
- orsenthil 6y agoIf you can read CLRS in a month thoroughly, the developer deserves more than a Senior Software Engineer position at FB.
- zls 6y agoI recently interviewed at Facebook with ~10yrs experience. I didn't get an offer. Their process was really quite rudimentary compared to the other companies I interviewed at, namely Google who I see as their most direct competitor for engineering talent. * Every single coding problem was about iterating over a string or an array and doing something with it. Seemed like there was no coordination at all on what's being asked from one interviewer to the next. For a senior infra engineer interview I'd expect them to touch on concurrency, or service architecture, or recursion, or debugging, or... anything besides strings and arrays (which I'm good at!). * The system design question they asked me was about how to design a frontend feature for live-updating comment chains. I understand the ideal that the questions are so high-level that it's an even playing field regardless of background, but the reality is that every problem is going to be close to _someone's_ domain and far from someone else's. I wish they had chose something at least related to infrastructure services, because I don't even know the 101 on how social media frontends work. * The interviews didn't include any time for me to ask meaningful questions of the interviewers. I was assigned to engineers at random, rather than based on where I'd likely be working. * None of the interviewers conveyed any enthusiasm about giving the interview. I could tell that speaking to me was a chore distracting them from what they wanted to be doing. Overall the process felt haphazard and low-effort, like I was Candidate #24601 in the machine for the week. Stark contrast to Google, where the interviews left me _more_ excited about working there, despite Google being more than twice Facebook's size. Fortunately I didn't get the job so I didn't even have to ponder any ethics questions :^)
- sg47 6y agoYes, please join Facebook and destroy what little is left of our democracy.
- waynesonfire 6y agoI wonder who the author was thinking of as the audience to this post? It looks like a manual that's targeted at young software engineers to recruit them into FB. And by proxy, the agism that goes on in that company. I just can't imagine a senior software engineer needs to be told that they need to pick a language to solve puzzles in, "I decided to go with Python" or being reminded that "To refresh my knowledge of the language" is a wise thing to do before an interview. I bet this guy is a manager.
- abj 6y agoThe question for those of us that aren't leetcode fans - what are we going to do about it? We should make it easier for people to get a job without leetcode. Here's a job board I made for jobs without leetcode. https://say-no-to-leetcode.netlify.app/ https://say-no-to-leetcode.netlify.app/
- digianarchist 6y agoAlso https://github.com/poteto/hiring-without-whiteboards https://github.com/poteto/hiring-without-whiteboards
- Technically 6y agoAll to sell ads.
- Aeolun 6y agoThe biggest thing I came away with is that their interview process is just as dystopian as at other places.
- champagnepapi 6y agoHow is the author of this article getting through multiple chapters of CLRS a night?! This by itself is very difficult to do in a few hours everynight.
- notretarded 6y agoWhat's the point? You can get favourably as compensated in a much less competitive more friendly atmosphere elsewhere. It's just a job.
- mro_name 6y agolol, 'your dream job at Facebook' to me would be pulling the plug and stopping it from earning money that doesn't come from benefitting humans. Stopped reading here.
- howlgarnish 6y ago> People must avoid using less mainstream languages in their coding interviews as it’s possible that your interviewer might not be familiar with those languages. As a former FAANG coding interviewer, I would disagree with this. Use your strongest language: being visibly fluent in any language gives a much better impression than trying to stumble through in a language you're rusty or unfamiliar with. The interview is (meant to, anyway) focusing on your thinking process, logic and data structures, not the details of syntax. I would avoid functional languages like Lisp or Haskell though, they're just too weird/different for most people and you risk coming off as an impractical idealist.
- permille42 6y agoBeen there. Done that. Fuck Facebook. They focused way too much on "college mentality" skills and zero on long term knowledge or experience with developing software in the field. They also didn't ask jack shit about my past experiences. Basically Facebook doesn't care about hiring specialists. They just want generic robots who will do their bidding.
- simoncarter 6y agoBut how can they do in a way that scales? Certain people seem to be annoyed that they don't just ask questions that can't be verified and take the candidates word at it.
- permille42 6y agoIt is better to hire fewer employees that last. That is, more effort should be spent on retention and less on acquiring as many disposable employees as possible. Most of the big companies treat their employees like trash and lose them rapidly. They think "Well we pay a lot so we have tons of people banging on our door to work for us, so we don't need to worry about getting new employees." This is a bad mentality. New software engineers need to always be interviewed by those who are senior to the level at which the employee is being hired for. You will never be able to reasonably determine candidate level if you don't have more experience than they do. The notion of "always hire employees smarter than yourself" is cute, but you don't have any way to determine rapidly that someone is. Some recommend take home projects. I don't think those tend to work well for various reasons... Things I do think work to find good employees: * Give adequate time for whatever task is assigned during the interview. I nearly always see that the interview is rushed because there is inadequate time given for what is being done. If time is not available, just do a portion of the tasks and quick fail if the candidate does not pass that portion. If they succeed schedule additional interviews. * Require open source contributions of meaning for higher level candidates. Have an interview ( an entire interview ) centered around reviewing their contributions with the candidate and discussing them. * An interview ( 1 hr ) of the following type: Tell the candidate "Convince me why I should hire you. You have 30 minutes to present your case. I will say nothing that whole time. Afterward Q&A about what you said for 30 minutes. * Ask questions of the candidate and don't bother with all the trickery. Bring me any software engineer and let me just ask them about random stuff freeform and I'll tell you if they suck or not within an hour. Don't demand some specific stupid process for interviewing them. You have to trust those you use to do the interview process and give them the authority to determine what the next best questions are always. The moment you turn the process into some "by the book" shit, you will get a shit process. * If a coding test must be done, it needs to be just like on the real job in that full access is given to use websites to rapidly acquire the information needed to give the best result. Also, let candidate use their own IDE setup, and have them ready to go ahead of time. If anything, give a loose idea of what the coding task will be without details, to give the candidate time to prepare in whatever way makes sense for them to be able to tackle a task of that time. * Give more time to accomplish tasks. So so so many of the stupid tasks I've been assigned in interviews cannot be reasonably and cleanly done within the 20-30 minutes usually given max to do them. Creating quality software takes time. Rushed software = crap software. Be real.
- y42 6y agoI wonder if studying those books in such a short time only helped him to get through the interview process or actually helped him with his daily work at Facebook?
- rodly 6y agoA post about hard work and diligent learning about CS concepts followed by an offer from a top-tier tech company will always be greeted by a bunch of dinosaur software engineers who feel entitled to a job in this industry for life purely because they have some arbitrary number of working years. If you're applying for an IC role, code or shut up. I don't care if you have solved wicked problems before, it's all talking and hand-waving. Can you take a hard problem, and apply CS concepts and good ole problem solving to produce working, succinct and well written code? That's what you're being hired to do, stop complaining.