As far as difficulty, interview was pretty standard. Facebook has a very low tolerance for bugs/mistakes, so definitely test hard!
Having received offers from major companies (Google, Microsoft and Amazon) and having 8+ years experience at one of these, I feel reasonably confident in saying I wasn't challenged. Instead, the whole process felt like an exam, and most interviewers behaved like examiners, not collaborators.
There was very little discussion or debate. During 4 coding rounds, the interviewers took a backseat right after they gave me the problem statement. After I was done coding, the interviewers examined my code and stated their objections to it, such as:
- There's a wrong variable name that won't let your code compile
- Please don't use your own utility functions, I've provided you with a few
- Your code doesn't meet my contract exactly (I did implement an optimization, with the verbal agreement that the client didn't need the extra data)
- In my system design round, I was asked to scale out a complicated data structure. I did make reasonable progress, but the interviewer and I were playing catch-up for the entire interview
Two interviewers told me to implement a 'silly' protocol, or a 'silly' class. This clearly makes it an exam, and not a true discussion/debate since it is not possible to make many logical arguments.