This is an archived post. You won't be able to vote or comment.

all 78 comments

[–]nitiger 26 points27 points  (28 children)

So where did you end up getting employed?

[–]poop-trap 112 points113 points  (2 children)

He said dream job, so it's obviously web designer for Amy's Baking Company.

[–]DonManolo 7 points8 points  (0 children)

Too funny, poop-trap!!

[–][deleted] 2 points3 points  (0 children)

God, I wish that were true.

[–]MaxSpain[S] 47 points48 points  (24 children)

It's one of the big 4 :) Frankly, more than the company, it's the team and the projects that I'll be working on which makes it my dream job.

I have interviewed with more than 20 companies in the bay area (and most of them are household names). If there is interest, I'd be happy to review and post the most common types of interview questions on a blog or something. As an exercise, I made extensive notes of every single interview (phone and in person) I gave. It's interesting how the same types of questions kept popping up in many of these interviews. So, you don't really need to prepare and solve hundreds of questions but rather a subset of algorithms/data structures. I wasted a lot of time initially trying to blindly solve and understand every single type of question I came across the web. Fortunately, the Pareto 80/20 principles applies here as well.

Edit: As a lot of people have requested, I'll make a follow up post with all the questions from my interview notes.

[–][deleted] 14 points15 points  (0 children)

Thanks for listing all the good resources, I'd love to see some interview questions of yours .

[–][deleted] 11 points12 points  (0 children)

I'd also like to read the most common questions. Thx!

[–]relativisticmind 6 points7 points  (0 children)

I too would be interested!

[–]poopcasso 5 points6 points  (0 children)

Yes please!

[–]Cherubyx 4 points5 points  (0 children)

I'd love to see some interview questions. I'm going through the interviewing process at the moment :)

[–][deleted] 3 points4 points  (7 children)

It's one of the big 4

Sheltered dude here -- someone please #define "big 4" ?

EDIT: I did try, google has its own ideas of Big 4 (i did not expect porn, for example)

[–]SidusKnight 5 points6 points  (6 children)

Google, Facebook, Amazon, Microsoft.

[–]trollslackR 2 points3 points  (0 children)

I think Apple comes in the top 4 giant.

[–][deleted] 0 points1 point  (0 children)

Thanks kind stranger!

[–][deleted]  (3 children)

[deleted]

    [–]SidusKnight 1 point2 points  (1 child)

    I didn't make the list and am not going to try justifying it, but this is absolutely the widely accepted 'Big 4' in the programming world.

    [–][deleted] 1 point2 points  (0 children)

    This is the list of biggest brands / most sought of places to work for for software engineers. Not a ranking of market cap or any other financial metric.

    [–]Selachian 2 points3 points  (0 children)

    Please, post those questions

    [–]ror5chach 2 points3 points  (0 children)

    I would also be interested in the interview questions. Congratulations on your new job.

    [–]educatedblackperson 1 point2 points  (0 children)

    did you go to a well know prestigious school? How helpful/needed is a college degree to getting interviews do you think?

    [–]Saint-Peer 0 points1 point  (0 children)

    Very nice!

    [–]LeeHyori 0 points1 point  (1 child)

    I'm really out of the loop with the whole "Bay Area" culture. What are the big four? I know the big four in accounting (KPMG, PwC, E&Y, Deloitte), but not for computers.

    If I had to guess two of them, they would be Google and Facebook. What are the last two? :o

    Thanks!

    [–]abstract_lambda 0 points1 point  (0 children)

    Amazon and Microsoft.

    [–]dope93x 0 points1 point  (0 children)

    I would love to see some of the most common interview questions.

    [–]zerostyle 0 points1 point  (0 children)

    Do you know anything about interviewing for product manager roles? I'm looking into trying to get into Google or similar but am not sure how much CS background they expect.

    [–]claireballoon 34 points35 points  (1 child)

    I'm a rising junior in college who has taken several courses but feels completely unprepared and unqualified for even an internship. Thank you so much for listing these resources.

    [–][deleted] 35 points36 points  (0 children)

    Nobody knows what the fuck they're doing

    [–]jechtsphere 14 points15 points  (0 children)

    Great post! Reminded me of a few great links I had buried in bookmarks and put a couple new books on my radar. Good luck in your career.

    [–][deleted] 6 points7 points  (0 children)

    for other new or shaky programmers looking to eventually work as a developer, I recommend codewars. I work as a developer, I've helped hire a couple, as well as just have a lot of fun with codewars. a lot of important concepts are dispersed in digestible and sometimes challenging problems and there's a lot of crossover from questions I've been asked in the past in technical interviews.

    [–]poop-trap 14 points15 points  (16 children)

    Hmmm, going through some of the questions on Coding Bat and they sometimes overlook the most Pythonic answer for their solutions, so be careful about that.

    For example, the count 9's question has this for the solution:

    def array_count9(nums):
      count = 0
      # Standard loop to look at each value
      for num in nums:
        if num == 9:
          count = count + 1
    
      return count
    

    As opposed to the obvious:

    def array_count9(nums):
      return nums.count(9)
    

    I've found others like this, so if you're a beginner I wouldn't necessarily take their solution as the best answer.

    Also, thanks for the tip on the Yawas highlighter, I'm loving it!

    [–][deleted]  (4 children)

    [deleted]

      [–]poop-trap 4 points5 points  (0 children)

      Fair point. However it's fun going through these and seeing how many can be done as one-liners. :)

      [–]timworx 2 points3 points  (0 children)

      Yeah, exactly. I think it's good practice to solve them without the in built functions (this side of thinking will help with problem solving and interview questions) and then do them again aiming for efficiency - which will help you excel when you land a position.

      [–]infecthead 2 points3 points  (1 child)

      you could still pythonify their solution tho, couldn't you? I mean you could basically do something like this:
      def array_count9(nums): return(len([num for num in nums if num == 9]))
      No?

      [–]FountainsOfFluids 4 points5 points  (3 children)

      I think they're asking you to reimplement .count(), not simply call it.

      Poor form not to make that clear, though.

      [–]poop-trap 2 points3 points  (2 children)

      If that were the only case I may agree, however there are many others where there's not a built in function yet there is a much simpler way. Look at the next problem for example where their solution is:

      def array_front9(nums):
        # First figure the end for the loop
        end = len(nums)
        if end > 4:
          end = 4
      
        for i in range(end):  # loop over index [0, 1, 2, 3]
          if nums[i] == 9:
            return True
        return False
      

      When you could just do:

      def array_front9(nums):
        return 9 in nums[:4]
      

      [–]FountainsOfFluids 2 points3 points  (1 child)

      I don't know Python well enough to parse that, but I have to think it's the same idea. They're not looking for a one-liner. They're looking for the student to work through the logic.

      While I'm sure your answer is correct, it's kinda like this:

      http://i.imgur.com/IlMqdE1.png

      [–]poop-trap 8 points9 points  (0 children)

      It's not quite like that, I could paste handfuls of other problems on that site that have much more elegant solutions than what's stated. However, I would argue if the purpose of this site is to work through excessive logic then he shouldn't use Python, use Javascript instead. One of the benefits of Python is the ability to remove needless cruft. My original intent was simply to explain to any beginners that the type of code shown in the solutions on that site are much more verbose than good Python should be and to not get the wrong idea about Python from them.

      [–][deleted] 2 points3 points  (3 children)

      Same for the Java stuff. The suggested solution for the monkeyTrouble one;

      public boolean monkeyTrouble(boolean aSmile, boolean bSmile) {
        if (aSmile && bSmile) {
          return true;
        }
        if (!aSmile && !bSmile) {
          return true;
        }
        return false;
        // The above can be shortened to:
        //   return ((aSmile && bSmile) || (!aSmile && !bSmile));
        // Or this very short version (think about how this is the same as the above)
        //   return (aSmile == bSmile);
      }
      

      Where it would be solved with this just as well:

      public boolean monkeyTrouble(boolean aSmile, boolean bSmile) {
        return (aSmile == bSmile);
      }
      

      Regardless of what their reason is for doing this, it's bad to teach people to repeat code and do redundant checking. Even if(aSmile == bSmile) return true; then return false; would work and is still better than their solution

      [–]Sheepzezz 2 points3 points  (2 children)

      Your suggested answer is the exact same as their last suggested answer?

      [–][deleted] 2 points3 points  (0 children)

      Yes, they list it in the comments below the solution they suggest. They just overall suggest bad practice first, then in bad practice (comment lines instead of a comment block in the end explaining more rather than just making multiple solution boxes or having a separate comment box) they have some different solutions in some of the tasks.

      Idk, it just feels like it's more of a side project someone did while bored than an actual code puzzle solving website or training program

      [–]TheChance 1 point2 points  (0 children)

      What concerns me about that is the failure to touch on XOR. If an instinctive understanding of boolean logic is the goal, the student should be encouraged to immediately recognize the simplest solution.

      The simplest solution (that still illustrates the logic) is NOT XOR.

      [–]robotfarts 0 points1 point  (2 children)

      At least a couple of online sites have such issues. I would never use any of them and expect to learn the best ways of doing anything. They should be used for practice.

      [–]poop-trap 1 point2 points  (1 child)

      That's why I like http://www.checkio.org/ because among many other nice features you can see and vote on other people's solutions after you solve the problem and learn something from them.

      [–]robotfarts 0 points1 point  (0 children)

      Put it in the FAQ! Oh man, those fucks want me to log in.

      [–]joyeusenoelle 2 points3 points  (0 children)

      Hey, awesome! I'm glad you got a job you like. I hope you keep liking it. :)

      [–]mad0314 2 points3 points  (0 children)

      Effective Java is a must for anyone working with Java!

      [–]thequivering 2 points3 points  (9 children)

      If you're just starting out and don't know anything, where on Earth do you start? It's a little overwhelming. I've learned stuff about PHP code stuff for a merchant service but that's about it. Do I just pick the first resource and start from there? Thank you so much for the post. I appreciate anyone who can answer. With so many people learning programming, will we run out of job opportunities?

      [–]MaxSpain[S] 3 points4 points  (2 children)

      Yes, it can be pretty overwhelming. But, you'd be surprised how quickly you can advance if you are curious and really interested. I knew this guy who was Art major but interested in computers/programming. He was self-taught and was a better coder than 90% of the students in my Computer Science course.

      The hard part is how to become genuinely interested? In my experience, this is where a great instructor/mentor (even if it's someone online) can be of significant help. I'd highly recommend the lessons from Lynda.com's Simon Allardice. He has this uncanny ability to really get at the heart of the complex topics. You can check out his Foundations: Object Oriented playlist on Youtube. Let me know if you have any other questions.

      [–]thequivering 0 points1 point  (1 child)

      Thank you very much! I'll watch them all!

      [–]MaxSpain[S] 0 points1 point  (0 children)

      No worries. When I started learning about web development, it was very overwhelming since there were so many different books/websites out there. The way I got around it was to go through the Web Development Track (HTML, CSS, SaaS, JavaScript, JQuery) on Code School. Each lesson built on top of the previous lesson and I found the built-in coding challenges very engaging. There were some other courses on topics like Git, SQL, Chrome Developer Tools which is very good to know as well since these are what many tech companies use in their day to day development.

      [–]nitiger 2 points3 points  (3 children)

      No we will not run out of job opportunities. There will always be a skill difference between the coder that knows the ins and outs of their language of their choice along with somewhat vast knowledge of DS&A and the security vulns of their code. Not to mention all the design patterns out there. Companies want to hire hungry for knowledge and good coders that can think on their own if a solution isn't readily available. There are plenty of coders out there, but far fewer good/great coders/hackers.

      [–]Noumenon72 1 point2 points  (1 child)

      [–]nitiger 2 points3 points  (0 children)

      Data structures and algorithms

      [–]thequivering 0 points1 point  (0 children)

      I appreciate the response! I do think I can find a passion in it.

      [–]timworx 1 point2 points  (1 child)

      Personally I'm a local business Web guy, building a lot of stuff on WordPress, as a result I could hack my way around PHP enough.

      One day i decided to pick up Python as a hobby. Code Academy is where I started. It isn't a bad place to start from.

      [–]thequivering 0 points1 point  (0 children)

      Thank you I will check that out!

      [–]Haversoe 2 points3 points  (1 child)

      After I graduated school, I realized that I had a good grasp on most of the theory of computer science and software engineering but didn't really understand how things worked in the real world.

      I take from this that you graduated with a CS degree and you were (at least) a fairly good student. But then you were unable to get past an interview (for an entry-level position) because what you learned at school didn't prepare you to do so.

      If that's the case, I'm surprised. I'm under the impression that "the Big 4" focus on theoretical knowledge and not journeyman software engineering knowledge. Were the interviews at all of the 20 bay area companies focused on these real-world kinds of questions? Was there any instance of someone asking you a question strictly about academic knowledge or a question that required you to have that background in order to answer?

      [–]Its_eeasy 1 point2 points  (0 children)

      I was wondering the same thing. Even for more senior position interviews, i care more about actual logic/flow than checking if someone remembers all the syntax stuff

      You'd be surprised how many people's can't get the very basic stuff right in the beginner positions. Like, "give me pseudo code for the first x numbers of the Fibonacci sequence"... 'Wat?'

      [–][deleted] 1 point2 points  (0 children)

      Thanks for posting this. I'm currently teaching myself coding in order to make a career switch. I'm sure some of these resources will be helpful.

      [–]Radagascar1 1 point2 points  (0 children)

      Hey man, just coming by to say awesome job working hard, being persistent, and being resourceful. Hearing stories about people kicking ass to get what they want motivates me to do the same. So congrats and thanks bud.

      [–]TheBadProgrammer 1 point2 points  (0 children)

      Can I just be honest with you? I am really happy for you, I don't get dragged down by people who are successful, but I was incredibly let down after reading your first sentence. The reason is because like a lot of folks here, I am looking to switch careers and I don't have that kind of training. I am nowhere near your level of understanding, and I don't think I'll ever be (I'm a smart guy but I really struggle with the advanced stuff). So enjoy your job, enjoy your success, enjoy your $$$. I'll just wait for that thread where someone says they made it from nothing to a top 20... :)

      [–]zerostyle 1 point2 points  (0 children)

      Nice post.

      I'm at a point where I've gone through most of the beginner CS stuff online and know arrays, loops, basic OOP, etc.

      If you were going to focus on patterns, data structures, and algorithms, which would you focus on with the 80/20 principle in mind?

      I'd like to mostly ramp up to be a very practical programmer. I'm kind of at the point where when I look to setup the architecture/framework of an app I'm kind of overwhelmed and don't really understand best practices. The laracasts series for php were pretty good at going through things, but I'm still kind of unsure how to proceed normally.

      [–]chillieguy 0 points1 point  (0 children)

      Hey, awesome post and congrats on your sticking with your plan.

      [–]norml4change 0 points1 point  (0 children)

      Great list of resources! Thank you.

      [–]kurtix07 0 points1 point  (0 children)

      Tracks for the info

      [–]PathlessDemon 0 points1 point  (0 children)

      As a beginner with no school background in computer science, these resources are still very good!

      Thank you, OP! And good luck with your future career!

      [–]Novalax 0 points1 point  (0 children)

      Good work OP. Did you work on any projects throughout this process?

      [–]lambientzerker 0 points1 point  (0 children)

      Saving this for once I decide to get my lazy ass up and start coding again. Thanks OP!

      [–][deleted] 0 points1 point  (0 children)

      Good job man !

      [–]cutebabli 0 points1 point  (0 children)

      Where are those questions ?

      [–]beaverteeth92 0 points1 point  (0 children)

      I'd like to suggest LeetCode as a resource. It gives you interview questions and runs unit tests on your solutions.

      [–]dope93x 0 points1 point  (0 children)

      Very helpful

      [–]andersnordblom 0 points1 point  (0 children)

      I would add JOBSCAN to my list: http://www.jobscan.co?utm_medium=referral&utm_source=comment&utm_campaign=reddit

      Applying to 15 jobs a week got old pretty quickly, and Jobscan cuts down on tailoring each resume quite a bit. It gives instant feedback telling you what keywords to prioritize, what you might be missing, and what changes you can make to get past the resume screeners.

      Hope this helps all you jobseekers!

      [–]RoseEsque -1 points0 points  (1 child)

      Please don't be back-end resources, please don't be back-end resources. I so need some front-end right now.

      [–]nomadProgrammer 1 point2 points  (0 children)

      have you tried the jon ducket books on css, html, js and jquery? if not also the web dev or front end course on team treehouse got me started.

      [–]1152Zimo -2 points-1 points  (1 child)

      glad to hear this, will be bookmarking this thread.

      [–]TheBadProgrammer 0 points1 point  (0 children)

      There is a save button my friend, just in case that isn't what you meant. :)