ADJA's blog

By ADJA, history, 2 years ago, In English

Hello, CF community.

About a year ago I wrote and shared a blog post about my approach to interview preparation that helped me get offers from Google, Facebook, Uber and Amazon. I thought that I can share this here too – I have a long experience with competitive programming, and hopefully other people here can find something useful for them:

http://adilet.org/blog/your-ultimate-guide-to-interview-preparation/

Let me know if this helps, and thanks for reading! All questions are welcome :)

 
 
 
 
  • Vote: I like it
  • +114
  • Vote: I do not like it

»
2 years ago, # |
  Vote: I like it +8 Vote: I do not like it

Auto comment: topic has been updated by ADJA (previous revision, new revision, compare).

»
2 years ago, # |
  Vote: I like it +31 Vote: I do not like it

Cool stuff, thanks for sharing. Here's a bunch of questions.

  1. Coding interview problems are completely different from CP but you should still have an upper hand if you're yellow in CF. Did you really need to solve that many Leetcode problems? Wouldn't around 100 be enough to get more familiar with that style (hashmaps, constant space, getting rid of logarithm, etc.)?
  2. Similar question: do you think that you would still succeed if you spent only half the time that you did spend?
  3. Did you apply to 4 companies and get 4 offers?
  4. Did you apply for L4?
  5. Why did you need "Learning PHP, MySQL & JavaScript" and "Modern Operating Systems"?
  6. Any reason not to use https://interviewing.io/ for mock interviews? It seems like a free version of Gainlo.
  • »
    »
    2 years ago, # ^ |
    Rev. 2   Vote: I like it +5 Vote: I do not like it
    • (1) Before I interviewed, I spent 2 days to solve 50 leetcode problems, focusing on linked list, trees using pointers (things that are not in CP). Interview questions are really easy. Most difficult part are asking the right "clarification questions" and finding the most simple algorithm so that your interviewer understands what you are doing (e.g. don't use segment tree, rolling hash).

    • (4) Generally you need ~3 years of experience to apply for L4 (shorter if you worked at other big companies before). And you have to explicitly tell recruiters that you only want to apply for L4.

    • (6) I actually want to ask about interviewing.io. Do they have (trained) interviewers from FANG? How do they give you feedback?

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +10 Vote: I do not like it

    Glad you liked it, thanks for reading! My answers:

    1. Yes, it may have been an overkill a bit, but I didn't want to leave anything to chance. I didn't really learn any new algos from Leetcode, and I think that even if I didn't solve any problems there (or just ~50), I would have a fair chance of passing interviews anyways. On the other hand, at the time of interview preparation I hadn't solved CP problems for a long time, and was a bit rusty at problem solving in general. So I looked at leetcode as a way to get back in shape (including speed), learn interview specific techniques, and practice solving problems in Java (which is my first choice for interviews and work, but not CP).
    2. I think I partially answered it in 1, and the answer if very probable yes. If looked at as probability, with half the time my chances of passing all onsites could have been like 75%, with all the time it was like 90% (very crude estimate). Also, I spent a lot of time reading material for system design (this also helps to be a better engineer in general) and behaviour interviews, so there's that.
    3. I passed phone interviews with 7-8 companies (failed one :), but chose to go only to 4 onsites. Got 4 offers.
    4. It's hard to remember exactly, I am not sure if positions I applied to had levels attached to them (some range may have been implied). I got L4 or similar level offers in the end.
    5. Ha, I think I wanted to check some small PHP related part in "Learning PHP, MySQL & JavaScript" (i.e. how is it actually suggested to do in textbooks?), but ended up unexpectedly enjoying several chapters. Not really necessary if you know web based stuff, but much better than I expected :) "Modern Operating Systems" is a great book, and I read some chapters regarding hardware and memory management (paging, caching, virtual memory, etc) there. Great stuff.
    6. Not sure why, but I think when I prepared interviewing.io was somehow different than how it is now. If it is really what it promises to be now, then I would say use it.
»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Small question, what do you think about the book "Elements of Programming Interviews"? Is there a reason you chose "Cracking the Coding Interview" over it?

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I never heard of "Elements of Programming Interviews" before. CTCI is a classic on the other hand

»
19 months ago, # |
  Vote: I like it -49 Vote: I do not like it

Geeks for Geeks not even mentioned?

  • »
    »
    19 months ago, # ^ |
      Vote: I like it +84 Vote: I do not like it

    Geeks for geeks solve NP problems in $$$O(nlog(n))$$$...

    • »
      »
      »
      19 months ago, # ^ |
      Rev. 2   Vote: I like it -17 Vote: I do not like it

      Hey can you explain what are you trying to say I didn't get it, I mentioned geeks for geeks because it has lot of Interview Experience Articles of all big companies

      • »
        »
        »
        »
        18 months ago, # ^ |
          Vote: I like it +14 Vote: I do not like it

        Solving an NP problem faster than polynomial time is not feasible, i.e. G4G is wrong a lot and low quality.

    • »
      »
      »
      9 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      First of all. Look at the size of Leetcode and GeeksforGeeks. Leetcode provides around 1600 questions and GeeksforGeeks provides more that 10x of that. I know that GeeksforGeeks is not always correct only because it's articles are written by Coders like us. But still if there are some mistakes ,you can mention that in the comments and it will get reviewed. And above all maintaining that big repository of algo and ds it is not an easy task.

  • »
    »
    19 months ago, # ^ |
      Vote: I like it +19 Vote: I do not like it

    Funny, because just yesterday I was looking into if it's possible to forever exclude GeeksforGeeks from my google search results (^▽^;)

    There may be some good articles there, but the average quality is very low. Also, they have articles just about everything, and pollute google search results...

    • »
      »
      »
      18 months ago, # ^ |
      Rev. 2   Vote: I like it +22 Vote: I do not like it

      You can hide results from geeksforgeeks from your search results by adding the -gfg at the end of your search keyword. Eg : sos dp -gfg.

      The - (minus) can be used to exclude a particular keyword from your search result. U can use multiple - in a single query.

      • »
        »
        »
        »
        18 months ago, # ^ |
          Vote: I like it +11 Vote: I do not like it

        Thanks! I know of stuff like this already, and was looking for more background solution where I don't need to even think about GfG :)

»
19 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Hi, I wanted to know apart from being good at DS and Algo and other topics like system design etc., are projects in web development/ML also important for internship/placement in these companies?

  • »
    »
    19 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Projects can be beneficial for two reasons: 1) they may make your CV look better, especially if the project is successful or you don't have much experience 2) working on a project can increase your software engineering skills, which increases your chances of getting hired.

    Also I would say people who like software engineering tend to start projects, and tend to be better software engineers, so there is some correlation.

    But in general, projects don't matter much in hiring decisions :)

»
18 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Good article! but I have some other concerns (Since I'm a university student).

  1. If there any other concepts that I should focus on beside problem solving and system design?

  2. Is it mandatory to learn some technologies for some big tech interns (Like Angular or some programming languages frame works)?

  • »
    »
    18 months ago, # ^ |
      Vote: I like it +1 Vote: I do not like it
    1. I would say know your fundamentals well. Stuff like networks, databases, general web stuff. Most of it should be covered with good university courses.
    2. No, there are no requirements for any frameworks or any particular tech. At the same time, I would say some work experience or personal projects definitely help (you simply become a better dev with them), and you will probably learn some frameworks there anyway.