Reddit Reddit reviews Cracking the Coding Interview: 150 Programming Questions and Solutions

We found 166 Reddit comments about Cracking the Coding Interview: 150 Programming Questions and Solutions. Here are the top ones, ranked by their Reddit score.

Business & Money
Job Hunting & Careers
Job Hunting
Cracking the Coding Interview: 150 Programming Questions and Solutions
Check price on Amazon

166 Reddit comments about Cracking the Coding Interview: 150 Programming Questions and Solutions:

u/parlezmoose · 59 pointsr/cscareerquestions

Nah, don't be silly. There's the real world knowledge that you use on the job and then there's the stuff they ask in interviews, which mostly consists of things you learned in college and forgot. Most programmers, regardless of experience, aren't going to do well on an Amazon technical interview unless they study before hand.

u/a_cs_grad · 47 pointsr/cscareerquestions

/rant Something that concerns me about this sub is how up and coming Software Engineers ask for handouts of information that they can easily acquire by googling and researching. Now I'm going to reward this behavior by pointing you in the right direction.

First off: The FAQ

1.) Resume:

Using Latex: (A lot of people love the Deedy Resume template - note that if you choose to use Latex then your output will be pdf which may not be processed well by automated resume processors)

Using Word:

Notes: White space is valuable. Target your resume to the position(s) (but don't lie). Write it, then proofread it, then edit it, and repeat (grammar/poor wording looks terrible). The easiest way to maintain a good resume is to do just that - periodically (every ~6mo) open it up and add new experience (ignore the proofreading if you want.. just write anything new down).

2.) and

Notes: East Coast/Tier 2 companies typically don't ask as many (or as difficult) programming questions so focus on behavioral and domain knowledge. For the technical questions practice on an actual whiteboard with a partner while explaining your thought process out loud. Communication skills are probably more important than technical skills but this sub doesn't bring that up as much.

3.) See 2.

Final Notes: Maintain & update your LinkedIn. Prepare for your job search to be a grind (mentally). Do lots of research. Try and get referrals to increase the likelihood that you get an interview. There's no magic advice that will enable you to land a BigN job without hard work (though some will achieve it more easily than others - many people interview at Google 2-3+ times before they land a job there). Reading "Clean Code", "The Pragmatic Programmer", "How to Win Friends and Influence People", and at least owning a copy of "Code Complete" are often suggested here as ways to improve your abilities as an SWE.

u/Finbel · 29 pointsr/learnprogramming

If you're working on your math and might pursue a CS degree I'd recommend Cracking the Coding Interview. I actually haven't read it myself but it's a highly recommended book often mentioned on subreddits like /r/cscareerquestions

EDIT: Perhaps pair it up with books on algorithms and data structures so you get comfortable in working with, lists, arrays, trees, graphs etc :)

EDIT: (currently 0) Why would someone down vote this? I just don't understand why?

EDIT: Someone mentioned that it could perhaps be because I hadn't read it myself so I thought I'd add a heartfelt recommendation by /u/amputect that I just read in the authors AMA:

> Gayle, I don't have a question, but I wanted to say that your book helped me get two programming jobs. I used to push grocery carts in the arizona summer, now I work for Google. I also, like, went to college and learned and stuff, but your book was a huge help in prepping for interviews. Thanks to you, I felt more confident and more prepared, and I was able to interview with several major tech companies without fear vomiting a single time which for me was a pretty big deal.
Seriously, thank you, thank you, thank you. Your book is great, I recommend it to everyone. You are a fantastic writer and a brilliant human being. Thank you!

u/riatonmiguelito · 23 pointsr/mexico

Yo estoy viviendo en NY desde diciembre del año pasado y estos son los consejos que te puedo dar.

  1. Aprende inglés y trata de practicarlo lo más que puedas. Si ya lo sabes trata de mejorar tu comprensión verbal, qué tan bien lo puedes escribir etc. Yo sé de muchas empresas inclusive en México que dejan ir a buenos ingenieros porque no manejan inglés.
  2. Compra o descarga libros para entrevistas y léelos completos, haz los ejercicios del libro, etc. Muchas preguntas de programación terminan siendo las mismas o variantes de las que encuentras en estos libros. estoy seguro de que si traes buen inglés y puedes contestar el material de los libros, puedes conseguir trabajo en EUA. Algunos clásicos son:

    Básicamente, refuerza tu conocimiento de algoritmos y estructuras de datos. El decir "esto sí lo hice o lo vi en la escuela pero ya no me acuerdo" no es una excusa válida en ninguna entrevista.

  3. Si ya te sientes a gusto con tu nivel de programación, saca una cuenta en HackerRank y aviéntate ejercicios de ahí o entra a algunos concursos. Si traes un buen nivel entonces vas a poder hacerlos, si no pues entonces necesitas seguir estudiando. También te sirve poder estar familiarizado con esta página ya que sé por experiencia propia que Bloomberg y Amazon la usan para reclutar.

  4. No le tires a todo, trata de enfocarte en una o dos tecnologías. Sí puedes decir que en tu carrera haz usado C, C++, Python, Java, JavaScript, Ruby, Perl y C# y que puedes aprender fácilmente, pero trata de definir qué tipo de trabajo quieres y usando qué tecnología. Esto con el fin de que puedas estudiar bien las características del lenguaje, sus standard libraries, sus frameworks más comunes, etc. En mi experiencia si le tiras a todo no vas a profundizar en nada. Si estás aprendiendo una nueva tecnología checa bien el mercado laboral y la demanda que hay de la misma. Creo que ahorita Javascript está muy de moda.

  5. Actualiza tu LinkedIn y cambia tu ciudad de residencia a la ciudad en donde te gustaría trabajar. No todos en EUA están conscientes de las visas TN y lo fácil que es traerse a Mexicanos a EUA, por lo tanto no buscan a gente en México. Sin embargo si cambias tu ciudad vas a empezar a salirles en sus búsqueda y te van a contactar. Siempre puedes luego decirles que lo cambiaste por ese motivo. También investiga un poco acerca de la visa TN para que puedas convencerlos de lo fácil que sería el proceso de llevarte a EUA, como te digo, muchas empresas no saben de la visa TN.

  6. Manda tu CV a alguna empresa que se encargue de llevar a ingenieros a EUA. También agrega a reclutadores por LinkedIn y mándales mensajes. Si necesitas hacerlo, paga por LinkedIn Premium. Aquí te dejo la página de algunas reclutadoras.

  7. Si tienes tiempo haz algunos proyectos por tu cuenta y ponlos en github. En algunos lugares (especialmente empresas pequeñas) les gusta ver como codificas.

    Mucha suerte, cualquier cosa mándame un mensaje!
u/khnd · 21 pointsr/cscareerquestions

so if you're aiming for summer 2015 then two things i suggest are:

  1. pay attention during data structures + algo courses
  2. spend fall semester with the cracking the code book

    when january 2015 rolls around, you'll be battle ready for all the interviews. but ya - thats what worked for me.
u/RunninADorito · 20 pointsr/cscareerquestions

It's really simple. If you're have problems passing phone screens and in-house interviews, there's a gap somewhere. You need to figure out what that is and fix it.

Do you have personality issues (be honest). I have no idea what 2000+ friends on fb means. Who the hell actually knows 2000 Do you have close friends? Can you have causal conversations with people? Are you aspy? If you're sure you're cool here, move on. If not, sign up for Toastmasters and dive in.

More likely, you have some gap in CS fundamentals. There's stuff you don't know and people aren't hiring you because of it. Write the code to solve the following two problems (no cheating or I can't help).

  1. Given 2 sorted lists of integers, write a function to merge them together and return the resulting list.

  2. Reverse the nodes of a linked list in place.

    There's something you're doing or don't know that's causing people not to hire you. You need to pinpoint what that is and fix it. It's probably nothing that a weekend or two of cramming can't fix. Check out and get to the point where you can solve most any of the questions. When you're practicing, write the code for each one. Get this book:

    You're completely wasting your time "playing around with frameworks" because no one's going to hire you for that. You need to work on the stuff you're scared of that you're putting off learning about. Can you code a red/black tree from scratch? If not, you should learn to do that before even thinking about doing a "personal project."
u/HomeNucleonics · 19 pointsr/learnprogramming

Cracking the Coding Interview is a bestseller on Amazon and is extremely helpful. I've read through it on flights out to interviews, and it puts me in a great frame of mind.

If anything, I get more out of the guide for how to approach interview questions more so than the meat of how certain problems or algorithms work themselves.

Make sure you take the science of approaching your answering process for the questions just as seriously and systematically as the mathematics/algorithms involved. Cracking the Coding Interview does a good job of summarizing the approach you should take, and gives a series of questions to practice answering in the manner provided (all sorts of common algorithms and data structures used in interviews are contained in the book, giving you great practice at applying these types of things). You should buy that book right now, and buy a whiteboard and an erasable marker to practice answering some of the questions on. Well well well worth it.

Most of all, have fun! In a certain way, the more fun you have, the better your impression will be on your interviewers.

Also, I wore a suit once to an interview, and I felt like a moron.

Edit: some quick re-wording.

u/m1001101 · 17 pointsr/femalefashionadvice

For a software engineering position? I highly recommend Cracking the Coding Interview if you're looking for something to prep!

u/Bonta-Kun · 15 pointsr/learnprogramming

I've found Cracking the coding interview to be an excellent resource. That book together with online sources helped me get several internship offers. The book won't spoon feed you from the ground up - but will cover all the topics necessary. The interview questions are all about PRACTICE! Spend a lot of time thinking about how to solve programming questions, the complexity of your solution, and ways to improve your solution.

After a while, you should reach a point where you start recognizing patterns when you see a new question. There are often existing data structures (that you must know backwards - like hash tables) that you can use to solve a given problem - try and think of which one fits the question nicely.

Finally, read this. Good luck!

u/jsyeo · 15 pointsr/singapore

Let me be a devil's advocate here and defend why companies wouldn't pay > 5k a month for a 10x programmer.

First off, our typical firms in Singapore can't appreciate good technical value. They can't tell the difference between work done by a good programmer and one done offshore. To them, it's just like buying a chair. If I can get a much cheaper chair in India, why not? They are still used to judging quality by experience. In fact, technical quality can't be judged by experience and the number of projects you have done. A fresh poly grad might be way better than a programmer with 5 years experience and a CS degree. If the poly grad spent his time in poly dabbling in new technologies and programming languages, writing code for open source projects, he might be way better than the CS grad that stagnated in his J2EE job.

Also, good technical value is very hard to measure. Even Google have problems measuring this. Even if you care about technical value, you may not be able to tell if the person you are hiring is good. An interviewee that aced a coding interview may not be a good programmer. It simply means that this guy is good at solving such questions. (It's possible to cram for such interviews as if you're studying for Os by studying technical interview 10 year series, mind you.) He might ace the interview but suck at writing production quality code. Instead of using well tested libraries, he might hand roll his own red-black tree and crypto library >_<. What's more, such programmers may not write high quality, readable code. And, good programmers may not pass such coding interviews. One classic case was when this guy who wrote a program that's used by 90% of the engineers at Google, failed to pass Google's technical interview because he couldn't invert a binary tree.

Unfortunately these are hard problems. Fixing the first problem requires a mindset change from employers and key business decision makers. The second requires companies to change their hiring practices. Try pair programming some projects with your interviewees. That way you can get them to articulate their thought process and see how well they handle real world problems.

u/rogelius · 13 pointsr/cscareerquestions

I am going to give my perspective, but as always, your milage may vary.

>When and how did you start?

I didn't start programming until I started in college. I knew I was good at Math, and good at Science, and that I was interested in Computers. I pursued a CE degree (I was 18 at the time), and am now pursuing a Ph.D. in CS. My wife started her CS degree 1 year ago (she's now 25), after being dissatisfied with (and subsequently abandoning) a degree in Marketing. For the sake of mentioning it, we both started with Java.

My real point is: I don't think it's ever too late to start. If you're sincerely interested, your passion will take you far.

> What are some daily things you do that drove/drive you to your goals?

I consider programming a type of carpentry, and so, I strive (and don't always succeed) to program as much as I can, in as many languages as I find interesting. So far, I've programmed in Java, Python, Javascript, C#, C, Objective-C, and Lisp. It can be daunting to learn new programming languages, but I wouldn't worry. I got around to playing with each one because I found they were good tools for things I wanted to do. In academic circles, I believe that's called "project-based learning," where you learn as much as you need in order to complete some project or task.

> What books do you recommend, ones that have had a huge positive impact in your professional career?

I absolutely love the Head First series, and it made me value my own unique learning style (which in turn led me to discover that I learn better through projects). I own 6 Head First books, and I absolutely love each and every one of them.

My wife recently discovered (and I also really enjoyed) the book Cracking the Coding Interview, which is a concise review of the fundamentals of programming, as well as very good guidelines for doing well in your coding interview.

> What advice do you give to junior programmers that want to plunge into open-source community but are just overwhelmed by the amount of complexity in most of this projects?

If you're just starting out, I would start your own project to do something you want to do. The chances are that, in doing so, you will leverage someone else's tools, and in turn, you may discover that a tool you're using...
...has an obscure bug, or
...would be really great if it had this one other feature

You then contact the project lead (or project board of directors), and state your case, and then...BAM. You're an Open Source contributor.

> Which work-related fields are you most interested in?

I am a fan of artificial intelligence, and I think it's the bees knees. I also do game development, which I enjoy very much.

> What was your first big investment after your degree?

I bought a car, mostly because I needed it. Bear in mind, I am on a graduate student salary, which isn't necessarily the most financially rewarding position out there.

If you have any other questions, or if you would like me to go more in-depth into some of the previous questions, do let me know. :)

u/Gunner3210 · 12 pointsr/cscareerquestions

I have been through 3 Microsoft Internships and am currently a full-time employee there.

First of all, congrats on securing the interview. 5 days might be a little tight. But I would recommend you take all 5 of those days off from school and study these two books thoroughly:

  • Programming Interviews Exposed
  • [Cracking the Coding Interview] (

    You must study these books and the problems in them very carefully. The basic data structures such as lists, arrays, stacks, queues, trees and hashtables - you should know these and associated algorithms like the back of your hand. You should be able to produce code for algorithms such as inserting to a list or searching through a tree in a few minutes. Most problems can be solved by using a specific data structure and some associated algorithm.

    You will most likely have 2 back-to-back 45-minute interviews. Both of these will be highly technical and focused on algorithms and data structures. Typically, you will be presented a problem. For example: determine if a linked list has a loop or not. You must then come up with a solution to this problem and be able to explain the algorithm to the interviewer. You should also be able to quickly analyse the time and space complexities of the algorithm. Finally, you will be asked to code this algorithm. Here, knowing a specific programming language is not important. So put down your C Programming Language book and start reading the other two I have listed. You can code in pseudocode. The syntax is not important - only the algorithm.

    If you manage to do all this in less than 20 minutes, you will typically be asked to answer an extension to the same problem. For example: Find the exact node where the list loops back on itself. Then you repeat the same process and solve this modified problem. Alternatively, you may be asked to describe yourself (small-talk). However, these HR style questions have very little impact on your result.

    If you are ever stuck, you can always ask for clarifications from the interviewer. The interviewer will also provide hints if you seem to be struggling. Always think aloud as this will allow the interviewer to stop you from thinking in the wrong direction. The second interview will go the same way but with a different interviewer and problem. Remember to ask when they will let you know of the interview result.

    After you have studied your books, go through glassdoor/careercup and search for interview questions. Sort these by date and learn the latest ones thoroughly.

    If you managed to do everything right, you should be invited to Redmond to do your real interviews. Good luck!
u/scanlonman · 12 pointsr/cscareerquestions

You excel at questions found on, (lookup the company you're applying for), and from this book:

For personal projects work on things you're interested in. To get interviews, connect with recruiters on LinkedIn and have your portfolio on there or a separate website they can check with a quick glance.

u/Revocdeb · 12 pointsr/learnprogramming

This book helped me: Cracking the Coding Interview: 150 Programming Questions and Solutions

It goes over data structures and algorithms as well as many other common questions.

u/shiinee · 12 pointsr/girlsgonewired

I don't think I could do a mock interview exactly... not sure that would be kosher. But I can definitely offer you some tips from my experience with both the intern and full-time interviews.

How to prepare:

  • Study algorithms and data structures as much as you can. Google doesn't ask the type of questions where the answer is just "a hash map!" or "depth first search!". But those things will be the building blocks of your solutions, so know your tools.

  • Pick a language you're comfortable in ahead of time. Python is my favorite for interviews, since it's pretty terse and clear. But you can pretty much choose anything. The coding questions aren't language-specific.

  • Take some problems from a textbook or something and practice coding in a plain text document, or even on paper. No IDE, no compiler, no running your code, etc. You won't have any of those tools in the interview, so you should practice without them.

  • If you can beg, borrow, or steal the book "Cracking the Coding Interview" and read it in the next two weeks, do it. The author, Gayle Lakmann McDowell, worked at Google, where she interviewed a ton of candidates and was on a hiring committee. She also has an interview prep website, CareerCup, which I haven't explored.

  • There are some YouTube videos going through the interview process and providing some tips. I linked two but the "Life at Google" channel has more.

  • Feel free to ask the recruiter if there's anything in particular you should study or how you should prepare. They really want you to be ready and do your best, so they should be happy to guide you in the right direction.

    How to interview:

  • Take a deep breath first! (literally... you can mute for a moment so you don't sound creepy.) You can do this. You've studied for this and you're ready. Once you've got a problem in front of you, stop thinking of it as an interview at all. It's just coding, and that's your thing.

  • You may get a few easy questions first, but sooner or later you'll be faced with a problem you don't know how to solve. That's exactly as intended. The interviewer wants to know how you approach a hard problem, to get an idea of how you think. In fact, solving the problem is not necessarily the goal.

  • Ask for clarification about the problem. What does the input look like? What does the output look like? How big is the data? How should you handle a certain edge case? The interviewer will be happy to answer, in fact, sometimes the problem can only be solved by asking the right questions first.

  • If you're stuck, your interviewer will likely toss out a hint or nudge you in the right direction. Definitely pay attention to that hint, because the interviewer is honestly trying to help you succeed.

  • Think out loud. As long as you aren't typing, describe what's going through your head. "Well, the naive solution for this would be [...], but that would take O([...]) time, and I think I can figure out something better..." The more you say about what you're thinking, the easier it is for the interviewer to help you. Having been on the interviewer side, it's really hard to think up a hint for someone who's just going "hmmmmmm" over an empty doc.

  • No matter how interview #1 goes, you have a clean slate with interview #2. So stay calm, and whatever happens, let it go and focus on the next problem.

    What's next:

  • For interns (at least when I was an intern), they don't do onsites. So this is the main part of the interview process that is basically intended to assess your technical abilities. If it goes well, the rest will be placement interviews where you'll talk to potential hosts and try to find a good fit for an intern project.

    Good luck!! It's always really exciting for me to hear about young women applying to Google. Hopefully I'll see you rocking the propeller beanie this summer. :)

    P.S. I love your username. Avocados are amaze balls and I don't know what I would eat if they didn't exist.
u/BrandonKNewman · 11 pointsr/cscareerquestions

> My strong suit is ruby/rails which I feel like is pretty rare and specific when it comes to most internship positions. (I can count on 1 hand the people who know rails in my school).

First off, trust me, you're not that special.

> So far, I have had interviews with 6 of the companies, and have yet to miss a question, & every time I am able to solve the technical questions relatively quickly (e.g. 45 min coding problem, done in 20 etc.) and then we go on to talk about interests etc. The thing is EVERY single company, after the technical interview (usually the 2nd-3rd phone interview), I am in limbo. Usually from 2-3 weeks, before I get denied.

So far, I'm picking up an attitude problem.

> I have only now started asking for feedback(but of course nobody replies to my emails).

Yeah, don't do that.

> I know they are large companies (vmware, yahoo, dell, etc.) but is it strange to have an interview go well and then just go into the void?

YMMV, but it's entirely possible. However, for myself I'd say 95% of the time, someone gets back to me.

> Also I am not socially inept, yet it always seems as if me and the recruiter get along great, while the technical people give off a cold disconnect (but still nice).

How often is this happening? I'd say there are some technical people who are just like that, but I'd say the majority of the time I see them acting that way in an interview is because it isn't going well.

> However it seems pretty inefficient to apply to jobs with 2000 kids hunting for 2 open positions, so it may be the lottery effect that is killing me.

Maybe, but if you're applying to 100s of jobs, you'd think something would eventually edge out in your favor.

Honestly, to me it sounds like:

  1. You give off a cocky/bad attitude

  2. You aren't doing as well on the technical questions as you think you are.

    There's nothing much you can do about an attitude problem other than hold your tongue and think before you speak on anything that isn't directly related to the technical question at hand. Explain, don't boast about past projects and experiences. Be open to learning.

    As for technical questions, the best I can do is prescribe the usual: Cracking the Coding Interview. Good book for getting the basics down for technical interviews. Others will suggest other books after that, but I've had good luck with geeksforgeeks and the interview section of Glassdoor for companies like Google and Yahoo for going above and beyond.
u/nonanonoymous · 11 pointsr/UofT

Hey there,

I'll answer as a recruiter.

My company, ParseHub is probably the type of company you should be targeting as a first year. It's very rare for first years to get internships at, say, Google or Yahoo because they get filtered out before being seriously considered.

At a smaller company like ours, you get a relatively similar experience with relatively similar salary, get to stick around in Toronto, and get resume padding so that you can be seriously considered for larger companies in later years if you choose to investigate those.

I'd recommend looking at CLN and LinkedIn, as well as reading Cracking the Code Interview, which helps you understand the interview process.

A few notes about interviewing:

  • Don't come in a three piece suit unless you are asked, the discomfort that wearing a suit gives you will far outweigh any image gain you get.

  • Try not to be too nervous. Even if you don't get an internship at the company, they don't put your name on the "NEVER HIRE AGAIN" list. Treat it as practice -- it's better to do a bunch of interviews in first year so that even if you don't get an internship, you have experience for future years and know what to work on.

    Finally, if you don't get a summer internship, do personal projects! I'd recommend doing at least one 10,000+ line project by the time you seriously start looking for internships. We try to ask students about their experiences with personal projects they list specifically because the passion you have for your own projects is a strong indicator of your passion for the field of Software Engineering.

    Hope this answers some of your questions.
u/cjt09 · 10 pointsr/compsci

I'd recommend buying one (or both) of these books and reading through them:

  • Cracking the Coding Interview
  • Programming Interviews Exposed

    Each of those books has a wide range of programming problems that are commonly asked during an interview. I highly recommend going one question at a time and actually trying to solve them yourself before looking at the solution. This way you won't simply have a dictionary of interview questions--you'll also be able to develop the skills to figure your way through similar problems.
u/jpstevans · 10 pointsr/cscareerquestions

Current Microsoft intern here! You've got your first sentence perfectly in order of increasing importance. Since you interned at IBM, I'm assuming you have a decent grasp of data structures and algorithms. If not, you now know where to start!

Do some thinking around your app -- if that's a highlight for you, then it's going to come up. Who was your audience? What was the goal of the app? What were the design choices you made? What could you have done to make it better? faster? more secure? What did you learn?

Go pick up an interview book or two -- I used Cracking the Coding Interview to prepare. If you notice yourself stumbling anywhere (especially the first two-thirds of the chapters), be sure to do some learning around the things giving you trouble.

I wrote about my interview experience at Microsoft, if that interests you. It's also got some links to other people's experiences.

u/SomePirateDude · 10 pointsr/cscareerquestions

I work at Google (full-time). Before Google, I had been writing software for 8 years professionally (Computer Science degree). I would say that every other day for about 1 month I spent about 2-3 hours preparing. Looking back, I probably over prepared, but I would rather have that than be underprepared. Here's how I prepared:

  • Every day, do several questions from Cracking The Coding Interview and the CareerCup website. I didn't get to every question in the book
  • Listen to Berkeley CS Data Structure courses while at the gym.
  • Put together a binder of all important CS data structures I wanted to be able to quickly review.

    In the end, the interviews were easier than I imagined. Couple of n-ary tree questions, a distributed computing question, a math/algorithm question and a basic Java coding question.
u/[deleted] · 10 pointsr/cscareerquestions

Start building your resume now with personal projects. It can help a lot. Start practicing for the technical interviews now and making your resume look good. Use Cracking the Coding Interview to help practice the interview questions. Go to your Career Center, or ask here, for advice on how a resume should look. Make a nice cover letter. Start applying in the Fall, so around August or September. Definitely apply for the larger tech companies (Microsoft, Google, Facebook, etc.) in the Fall. Apply to a lot, even if you are not interested in working at the company just so you can get practice interviewing. Also, the more you apply to the more likely you are to get an interview. I applied to 20 companies for Summer 2014 and only got 5 interviews. Good luck.

u/naxir · 9 pointsr/cscareerquestions

I went through the Google interview process not too long ago. Here's my recommendations:

  • Don't focus all of your effort on one concept. You will have at least four different types of problems and there is no guarantee that DP will apply. While this is an anecdotal n=1 observation, I did not have any DP problems. You should still look into DP so that you may better understand where to apply it and the basics of applying it, but don't neglect other areas (graphs for example).
  • Grab cracking the coding interview and practice on a white board. I used a small travel whiteboard that you can get on amazon for ~$6.00. (Though, based on the reviews, I also grabbed some better markers.)
  • Practice easy questions to warm up, then give yourself 30-40 minutes to solve the more challenging questions.
  • Don't focus on memorizing the exact implementation of different algorithms. Know their basic flow and different places to optimize, but more importantly know where to apply them and what their complexity is.
  • Remember to talk through the problem before solving it. Your interviewer will often give you some indication of whether or not it's the solution they want to see. When actually writing the code, don't feel obligated to explain every line as you're writing it. If you feel like you're making a good decision, explain what it is and why in a sentence or two, but otherwise focus on getting your thoughts on the board. You should explain your solution at some point, but unless they ask questions about it, don't feel obligated to talk while you write.
  • Don't try to solve every part of the problem at once. If you hit something you're not sure how to solve, call a function that does not yet exist and tell them you'll come back to its implementation.
  • You mentioned being able to solve things in 23 minutes. I don't think that really applies. Some interviewers will give you one hard problem which may be optimized several ways. They will expect you to implement a solution and spend the rest of the time optimizing it. Other interviewers will give you perhaps 4 problems, but all of them are inter-related and earlier solutions to problems are used as components to later problems. You may also be given one or two small warm up problems before a larger problem. However, it is unlikely that you will be given two very different and complex problems and have 23 minutes to complete each one. Furthermore, completing every problem isn't a requirement. Demonstrating good problem solving skills is. Don't focus on a specific amount of time, focus on the problem solving process. This is also true because it will take you less time to solve the problems in the interview because of guidance from your interviewer.
u/bittersweet587 · 9 pointsr/computerscience
u/metahGVA · 9 pointsr/learnprogramming

Introduction to Algorithms is probably the best book if you want to go deep in algorithms eventually.

Cracking the coding interview book is also a great repository of "must-have" concepts for CS.

u/YuleTideCamel · 9 pointsr/learnprogramming

Practice whiteboarding (solving technical problems on a whiteboard). Try to read Cracking the Coding interview . If you look online you might find a pdf version.

General tips for the interview:

  • If you get asked a really simple question, don't be cocky or overconfident. Answer it professionally like any other question. This is often a personality test to see how you react when speaking to non technical people.

  • If you get asked an insanely hard quesiton, relax. Sometimes these questions are not about the answers, but about how you react to a difficult problem and under stress. Take a deep breath and make it a convesation with the interview. Talk out loud about possible solutions, even if you are not sure explain what you are thinking and how you would use your resources (books, google etc) to solve it.

  • If you don't know something (like a technical quesiton "explain templates in C++" ) just be honest and say you're not sure but will look it up. Don't try to BS.

  • Be positive about everything, it's ok to have opinions, but don't bad mouth technologies or coding styles, even if the interviewer does. Just explain why you don't like (whatever) in a polite way. Being too much of a downer can impact an interview. I once interviewed a guy who hated everything. "Angular? Stupid/dead, react? A fad stupid, Ruby on Rails? Hipster crap". He was super smart but didn't et the job because no one wanted to work with someone as negative as him. Oh when I asked him point blank "so what is good code?" his response "code I write". This is problematic also because it tells me he wants to reinvent the wheel for everything instead of solving a business need.

  • Be nice to everyone, receptionists, people you walk by in the hallway, interviewers, janitors, doormen. Anyone you interact with. We regularly ask everyone who interacted with a candidate their thoughts and we have turned down people because they were rude.

  • Practice solving problems on codewars or codingbat, just be ready to answer technical quetions.

    To be clear, I don't work for HP but I do work for a large tech company and I'm on a hiring panel. Good luck!
u/Ektastrophe · 9 pointsr/cscareerquestions

Disclaimer: I teach at a bootcamp in the midwest.

Here are some things I'm noticing:

  1. Your job sounds like it sucks quite a bit.
  2. You're feeling a lot of pressure to make a big move right now.
  3. You're feeling afraid that you don't currently have what it takes to make a big move.
  4. You've got some funds saved up.

    I'm going to suggest a couple of things to try before you enroll in a boot camp.

  5. Spend a few hours researching job boards in your area. Make a list of jobs where you've got 50% or more of the qualifications listed, or where the thing listed is close enough to what you already know that you could learn it sufficiently quickly. Make another list of things that appear pretty frequently, and see if you can categorize them. What's in your area? In my city, we've got lots of graphic designers who mostly build out Wordpress sites, a small but growing number of startups who mostly use Rails or an MVC Javascript framework, and a whole bunch of big finance corporations who mostly use Java. Your city is probably different, but it's also got some trends.
  6. Reach out to your network. You surely know some folks from college, from meetups, etc. Don't tell them that you need to escape your current terrible gig, but do tell them that you're looking for a change and see if they know anyone who's looking for a junior dev, especially one with a CS degree. Be frank -- you've been working mostly QA and support for the last year and a half, and you'd like to move to development instead.
  7. Take a few days off. They can even be unpaid days (if you can swing boot camp tuition, you can swing not getting paid for a few days). Doesn't even matter if you code on those days off. Just give yourself a chance to be a person.
  8. Pick up a copy of Cracking the Coding Interview and practice. Don't know Java? No problem. Do the exercises in a different language. Do one-sided mock interviews and record your answer with your webcam, then watch it. Don't worry about 'ums' and 'uhs' -- instead worry about clear, concise, and precise responses. (NB: almost everyone hates watching themselves talk, and almost everyone finds it excruciating. Don't worry about that part. You don't suck anywhere near as much as you think you do).
  9. Once your finances are set (i.e. at least 6 months worth of living expenses in the bank. Even better if you've got a year of living expenses, as that'll help if you've got an emergency), quit your job.

    From here, it's a matter of learning. You're never going to learn everything (there's too much out there), but you can definitely learn quite a bit.

    If you've got a CS background, you should be able to pick up the basics of Ruby on Rails. Michael Hartl's Rails Tutorial is pretty commonly cited; if you want to do web development, go through this tutorial twice. Maybe three times. Then start building projects on your own. Alternatively, Daniel Kehoe's Learn Ruby on Rails is also pretty commonly cited.

    A good understanding of Rails, plus a solid foundation in HTML, CSS, and Javascript/jQuery will make you a reasonably compelling junior developer for a company that builds web applications. Doubly so if you can show off a few good personal projects. A good bootcamp (like the one where I teach) will give you a structured and guided opportunity to learn these skills. A terrible boot camp will also give you this opportunity, but you'll have to work a lot harder on figuring out how to make it all happen.

    In addition to self-study and building projects, start attending meetups and actually talk to people.

    If you do decide to start looking at different boot camps, here are some questions to ask:

  10. What will we be learning?
  11. What sorts of jobs do graduates have?
  12. What are your placement rates? How many graduates have internships after graduating, and how many go into full-time jobs? What sorts of support do you provide graduates who are searching for jobs? How long does it usually take for all the graduates from a given class to find jobs?
  13. What is the typical experience for new graduates in their first 6 months as an employee?
  14. What are some examples of student projects? What are some examples of average work? Some examples of really stellar work?
  15. What opportunities will I have to design and build a project of my own determining? How many portfolio pieces can I expect to have by the time I graduate?
  16. What are some examples of typical days?
  17. Who's the instructor? How long have they been teaching? What are their qualifications?

    Of course they can lie to you, or use weasel-words to obfuscate, or make stuff up, or.... Of course that's the case.

    A good boot camp will give you lots of opportunities to practice AND will help you find your first job. We (where I work) do a lot of talking with recruiters and companies in our network, and we work really hard to make sure that our students get jobs that offer lots of opportunities for growth and development, and, when possible, that align with strengths and interests (there's not usually too big of a disjunct there). So far, we've had quite a bit of success in terms of our students finding employment, and even the companies that have been resistant to hiring students like our grads have started coming around (albeit slowly) as more and more companies hire our grads and have good experiences with them. But it'll be at least another year or two before our grads reliably get hired as junior devs in the bigger corporations (as their first or even second job) without first having a CS degree.

    There are lots of different ways you can find success, and almost anything you do (quit your job and self-study, stay at your job and self-study, go to a boot camp, backpack around Europe, and so on) can be reasonably explained in an interview, especially if you can demonstrate that you are someone who is smart and gets things done.

    Even your current job can be explained. Sure, your dev skills aren't what you want them to be, but you've got a ton of practice fixing code, which means you've got a huge list in your head of all the different mistakes you might make while writing code (which then means that you can, given adequate leeway, build systems that help you avoid or at least catch those mistakes). Don't discount that. It's important stuff that you learned, even if the way you learned it makes you feel really terrible.

    Hope this helps.
u/Soreasan · 8 pointsr/cscareerquestions

Make your own projects or code to build a portfolio. Upload the code to Github to build an online portfolio.

Here are some excellent books that may help as well:

Elements of Programming Interviews

Cracking the Code Interview

Programming Interviews Exposed

u/c0Re69 · 8 pointsr/cscareerquestions

I can name you a book, Cracking the Coding Interview.

u/NSAownsRSA · 8 pointsr/cscareerquestions

I compiled lists of interview questions from Glassdoor before my interviews and used Cracking the Coding Interview.

The interviews questions that I received were fairly varied. From what I can remember:

  • String Manipulation
  • Trees
  • Array Manipulation (Find duplicates, partial sort etc.)
  • Sorting (Specifically radix sort and quicksort)
  • Dynamic Programming (Pot of gold)
  • Concurrency

    There are a lot more of these topics covered in Cracking the Coding interview.

    My previous internships were for big non-tech companies. They weren't particularly interesting or impactful, but they were a line in my resume. Keep in mind that your resume is just to get an interview. Once you're in front of engineers, what you say and write in the interview are most important.
u/pokoleo · 7 pointsr/uwaterloo

Going through jobmine, there are exactly two parts to getting a job:

  • Get the interview
  • Get the offer

    You get the interview by having a good resume, and knowing how to talk to recruiters.

    You get the offer if you appear technical. Socially fitting together with your interviewer is invaluable. You want to feel like a coworker.
u/gameguy43 · 7 pointsr/cscareerquestions

It's never "too late" for smaller startups. Keep applying! Even if you get the offer halfway through the summer, it might still be worth it for the company to take you on for the rest of the summer.

Find smaller companies on and

What specifically is going wrong with your applications so far? You say you've gotten some phone screens--are you generally having trouble getting to the phone screen, or generally having trouble getting past the phone screen?

If you're having trouble getting past phone screens, there are a bunch of resources for brushing getting better at technical interviews:

u/theootz · 6 pointsr/cscareerquestions

TL;DR Improve yourself, invest in your future, don't worry about the the books listed at bottom, and practice!

Few months ago I royally fucked up an interview at Microsoft. A really simple question. But I had no experience doing coding on paper instead of a computer.

I spent a lot of time studying various books and paper coding to make sure it wouldn't happen again.

I then had an interview for another (in my mind at the time) dream job. I did fine for all the phone interviews and they flew me over to the west coast for an in person interview for the day. I did well for the first bit until they started pulling out dynamic programming and integer programming questions on me and expecting me. Once again something I didn't prepare for, and f'd up. Didn't get this job either. For the longest time I was really hard on myself at fucking up on both these interviews one after another. Especially this second one since a lot more was riding on it than just the job (another story).

But then I decided I didn't want to have this sort of experience again and expected better of myself. I made myself further improve and brush up on all those concepts as well. Did a few mock interviews with friends, spent some time working on interview type questions on both the computer and on paper. A month or two later I started interviewing again. By this point I was an interviewing machine - and I'm now able to do just about anything thrown at me. I've had my choice of employers and until just recently, was in the situation where I had so many offers I didn't know which one I wanted most. I'll be heading to silicon valley soon at one of the top tech companies in the world with a fantastic offer considering I just graduated.

The point is - learn from the mistakes and improve yourself. I realize you don't want to be that guy spending heaps of time coding outside of work or whatever... but this is an investment in yourself and your career. Do it once, and then just brush up on your skills from time to time. Get into the interviewing mindset and just rock them so you can have your choice of job - and then you can go about your thing once you have the job locked. The up front investment will be worth it!

Things that helped me:

  • - practiced a lot of questions on here
  • - another great site for questions
  • Cracking the Coding Interview More help on questions, but also some great insights into the interview process for the larger tech companies and many hints and tips on how to go about solving the more complex problems
  • Code Complete A great book for helping you to refresh or learn about software design
  • Eternally Confuzzled Great resource to learn how to think about common data structures and algorithms

    Having trouble with Algorithm design/analysis? These are some of the go-to books for that:

  • The Algorithm Design Manual Probably the defacto for learning about algorithm design and analysis
  • Introduction to Algorithms A great book with many different algorithms and data structures to learn about
  • Algorithm Design A great book if you want to dive deeper into more complex subjects like graph theory, dynamic programming, search algorithms, etc.. etc..
u/brobi-wan-kendoebi · 6 pointsr/cscareerquestions

Never ever ever ever ever ever ever EVER ever ever EVER tell a company "I'm not suited for the job". Have some balls! Sure, you messed up, but hold your head high. Everyone messes up in their life at interviews; I know I have many times. Confidence can go a long way in promoting your personal image.

FizzBuzz is probably the most simple, commonly used interview question out there to see if a programmer can actually program. It doesn't get much simpler than that. I hate to break it to you, but Modulus is one of the most basic foundation concepts you need to know, and it's definitely taught in any entry level OOP book or Uni program. I dare you to show me a "Learn programming in Java/C++/Any other OO Language" book that doesn't cover it in the first few chapters.

You are over-thinking the solution here: it's meant to show how well a candidate can easily write clean, short code. There's no reason for you to abstract the functionality of finding whether a number is evenly divisible into a method - that's over complication in design, and it's a red flag for employers. I think you may have believed that isolating specific mathematic processes into methods seemed like a good idea to show off that you know object oriented principles. You're on the right track. However, if the process you're writing can be completed in a single line of code, let alone under 10 characters, you're just adding more dependencies and complication to a simple block of code. I would suggest this as a more clean solution to fizzbuzz (in Java):

for (int x=0; x<=100; x++) {
if(x%3==0 && x%5==0)
else if(x%3==0)
else if(x%5==0)

I personally struggled with a decent amount of interviews until I started to actually prepare for the interview. I recommend finding time to work through these two books; they'll help prepare you for what kind of questions to expect.

And most important of all: NEVER get down on yourself! Every tough problem or terrible interview you have is just a learning experience. Never tell yourself you aren't good enough, or just outright give up. You aren't allowed. Stick with it, and prepare months in advance, like homework. You don't have to be that person dedicating every waking moment of their life to programming, but if you're serious about keeping your interview skills sharp, you need to dedicate some time to learning the questions. Good luck!

EDIT: Grammar, etc.

u/mudkipzftw · 6 pointsr/uwaterloo

I've had about 5 interviews with companies in the Bay Area, and in my experience all of them follow the same general sequence:

  1. Resume screening. If they like you they'll ask for a phone or skype call
  2. Three technical phone screens. Usually last an hour each, and usually 100% technical (very rarely they ask about your resume). Each interview is done by a different software engineer. After the third screening they talk to each other and discuss or vote on whether you're any good. This is the hardest part and most people don't make it past this stage.
  3. Discussion with a high ranking engineer (e.g CTO). This is more of a get-to-know-you type thing and they usually go more into your resume here.
  4. (Sometimes) Discussion with a non-engineer manager
  5. If you make it here, buy a bigger wallet

    For the specific type of questions they ask, I recommend this book and /r/cscareerquestions

    edit: and the technical screenings are always live coding sessions using a shared document. That shit is nerve racking and I recommending practising before the interview.
u/AmalgamDragon · 6 pointsr/programming

> short of a very detailed rehearsal of many different problems


u/shhyfz · 6 pointsr/uwaterloo

Read this
It will help you pass the interview process.

But before that you need to have a strong resume to attract recruiters.
Build a personal project. Participate in algorithm contests(acm).

u/WaxenDeMario · 6 pointsr/cscareerquestions

Yes! Also, quite honestly I don't know that many CS majors who took linear algebra at my school for whatever reason.

Where do you get started?

  • If you're the type of person who likes an organized class to learn concepts, consider checking out coursera or other similar websites which offer free online learning courses! Check out their CS offerings and start from the intro.

  • I must be known for spamming this SR with this, but check out CLRS, it pretty much contains most of the "CS math" you need to know for algorithms. As well as pretty much all you need to know about Algorithms and Data Structures for any basic job.

  • REALLY make sure you understand your Algorithms and Data Structures, nearly every interview for a basic position centers around these topics. As well as some others, depending on the company: Bit manipulation, multi-threading, TCP/IP, etc.

  • You want to learn some mainstream language as a lot of other people mentioned: C++, Java, C#, Python are a few that come to mind (though there are more like Ruby!). Side Note: Some people have differing opinions on whether C++ is good to learn as a first language. I don't know C# (but from its apparent similarity to Java) I would say C++ is probably the most difficult language to learn of the four I listed, but I feel that it also provides the most flexibility, because once you understand C++ it's easier to trainsition from C++ to Java, than say Java to C++ (similar for the other languages).

  • Practice! Start working on some Project Euler problems, or other practice problems. Bonus: Someone in another thread mentioned that they made a blog post for each problem they solved and explained every one of their design decisions. This seemed like a bit over the top, but it really is a good practice for an interview and a job! You can even put a link to this on your resume to share.

  • Find an Open Source to contribute to, come up with your own projects and post them on your github! This can show off your skills to a potential employer!

    Bonus for programming:

  • When coding alone it's easy to get lost and start "hashing" together code. When you get to big projects, you'll find that this causes a lot of problems (and when working with other people it can cause even more). Some things to keep in mind when coding:

  • Make sure your code is maintainable.

  • Make sure your code is scalable.

  • Test, test, test!

    Maintainable kinda means that your code is easy to test, easy to comprehend (by others) and easy to modify. Read up on different design patterns to learn more about this.

    Scalable is something you'll learn more about later, but basically it's kind of thinking about whether your code will be "good" enough to handle a lot of users (how fast is it how much memory will it take up)

    Testing is very important when coding. You want to try to write small pieces of code then test it (i.e.: make sure it works).

    All three of these things show up a lot in interviews, and if you can relate why you made your code the way you did to one of these three points (or something else) you should be pretty well off :D

    How do I land an interview?

  • In your resume make sure to list any CS projects you want to mention, a link to your website (if you have one) or to other work. As well as Operating Systems you're familiar with (Linux is a big plus, but not absolutely necessary), IDE's you're familiar with (things like Eclipse, Visual Studios), and Languages you know. If you can, make sure to relate those three bullets to your project and work somehow to reiterate your experience with each language.

  • A lot of recruiting is done on-campus, but there are other options, like applying online or even better...

  • Network your way in. This gets your resume through the massive HR screen

  • Edit, edit, edit (ask friends who are in the industry).

    How do I study for an Interview?

    Typcially, an interview will have you and the interviewer. The interviewer will first ask questions about you, what you're majoring in. And then maybe ask questions about your previous projects, and then he'll throw you a programming problem. Sometimes these can just be questions like "Which is faster: quicksort or mergsort?" or something like that, but other times they'll have you code something. If the interview is online, this will either mean you'll need to tell them the code you're writing or you'll code online on some collabarative envirionment (i.e.: you type the code online). If it's in-person they may have you write on a whiteboard. There are other formats of interviews as well, so make sure to research. Typically, for most larger companies, they won't care what language you code in (hopefully though it's mainstream!), but if you don't code in a language which they use, they may test you later for proficiency in one of their languages.

  • As I mentioned before, Algorithms and Data Structures are usually go-to's for interviews, but other topics may come up so check out the req's for each job specifically.

  • It may have been a while at this point since you studied your material, to brush up on interview questions, Cracking the Code Interview is a great book to brush up on your topics for an interview, it also has some resume advice, etc. if you choose to follow it.

  • Be sure to practice talking out loud while you're coding, as this can help you during interviews. If you're stuck but your thought process is good an interviewer can help push you in the right direction.

  • If you struggle with interviews, try having a friend who you know has experience and having him ask questions, better yet if you know a friend at the company, ask him to mock interview you.

  • If you have time ALWAYS make sure you run test cases through your code mentally, and mention the test you're running and what it's supposed to catch (expected behavior) to your interviewer! If you have time and choose to ignore these, it can give the interviewer a wrong impression :\ (it also makes you look really good if you come up with all the boundary cases)

    Sorry, not sure if this helps or not!
    Good luck!
u/iimpact · 6 pointsr/cscareerquestions

I would recommend brushing over some basic CS concepts first. Since you've been out of school for a few years now, it might be a good time to start working on little side projects and/or programming exercises if software engineering is what you want to get into.

You can also check out this book, which will help you prepare for a programming/tech interview.

What type of job are you looking to get? Are you interested in software support? development? IT? Your preparation will depend on what route you want to go down.

u/pleaseprovideadvice · 6 pointsr/vancouver

I can only recommend bootcamps for 2 types of people:

  • Someone with a CS degree 10 years ago and needs to update skills quickly, changing cities, or going back into tech a career
  • Someone who cannot commit to a 2-4 year degree program due to family, financial or other commitments

    But for the rest, I think you're better served biting the bullet and going back to school for an actual diploma or degree program.

    For what a bootcamp provides, I think it's really expensive ($8600-9000 over 2-3 months). Ironically, the appeal of a bootcamp is also the main flaw of a bootcamp: time. For people who have no tech background (which is the main target demographic of bootcamps), you're essentially cramming all these tech concepts, languages and frameworks in 2-3 months. Are you going to retain all of this information 6 months later?

    When you graduate from a bootcamp, you're competing with CS graduates, diploma students who had years to hone their skills. Give yourself an honest assessment and ask how you'll do against them?

    I highly recommend going through a book called: Cracking the Coding Interview

    These are the type of questions that the top companies will ask. Good luck with your pursuit!

u/aMonkeyRidingABadger · 5 pointsr/learnprogramming

Here are the resources that I have used in the past. These are the type of questions that the large bay area software companies ask during phone screens and on site interviews. I've interviewed at a number of these companies and currently work for one of them. They all do similar things both in terms of the coding questions they ask as well as the overall interview process. I've never interviewed for a start up or any other sort of company, so I cannot speak to how it's done outside of large software companies on the west coast.

The following book, Cracking the Coding Interview, is great. Some companies use questions straight out of this thing. Others will ask one of these questions with a little twist.

Either of these sites are good resources for actually writing code. Some of the challenges on Hackerrank are harder than you'll probably ever encounter in an interview, though it's worth noting that I've been asked a couple of the problems marked as hard on OJ Leetcode during onsite interviews (I recall LRU cache and a dynamic programming version of text justification specifically).

For general stuff you need to know, this blog post about how to prepare for an interview at Google is a good resource. Jump down to the Tech Prep Tips for the relevant stuff, or just read the whole thing, it's a good read.

u/10_6 · 5 pointsr/learnprogramming

Some books that could help you practice algorithms and coding challenges are:

  1. Elements of Programming Interviews

  2. The Algorithm Design Manual

  3. Cracking the Coding Interview

    If you want some actual practice solving challenges with some guidance and/or help, I'd recommend Coderbyte which provides solutions to the problems along with the ability to view other user solutions so you can learn how others solve the same challenges. This article might help you find some other coding challenge websites as well.
u/VT-Hokie · 5 pointsr/cscareerquestions

Cracking The Coding Interview Read this book from cover to cover and be ready to accept your 75K+ job after you start murdering interviews left and right.

u/wpnx · 5 pointsr/learnprogramming

Better yet, start building a portfolio by open sourcing the code on github. Include links to your projects in your resume. Have your resume live on linkedin and make sure its up to date and completely public.

As an interviewer, I love to see code examples and a pasion for coding in free time.

P.S: If you're about to go into software engineering interviews

  1. Do 4-5 problems from this book every day. After about a month, you'll be acing interviews.

  2. Do problems from here

  3. Check out topcoders for extra practice.
u/thatsnotgravity · 5 pointsr/learnprogramming

Pragmatic Programmer, Clean Code, and Head First Design Patterns come to mind right away. They're 3 of my favorites.

There's also Design Patterns by the Gang of Four. That's a lot more dense IMO than Head First, but it's fantastic material.

Since you're looking to jump ship and start interviewing, take a look at Cracking the Coding Interview. That will prepare you for any questions you run into during the process.

It's probably also worth brushing up on Algorithms and Data structures.

u/eric_weinstein · 5 pointsr/learnprogramming

Seconding The Pragmatic Programmer and Cracking the Coding Interview. I'd also recommend:

  • Code Complete: verbose and somewhat self-congratulatory, but extremely good.
  • The Mythical Man-Month: a little dated and weirdly religious at times, but has great insights into how software problems are actually people problems and how large projects are (mis)managed.
  • Design Patterns: a.k.a. the Gang of Four book. This one's a classic.
  • Pro Git: you mentioned version control systems. IMHO, you should learn Git if you don't know it, and this book is a great resource.

    If you let us know which languages you primarily write, I can probably recommend some good language-specific titles, too.
u/cjrun · 4 pointsr/cscareerquestions

Everybody's learning style is different. Here are some books I believe to be essential for any novice or pro.

Programming For Dummies. It has a stupid title, but it is well reviewed for good reasons. I read through this beast in three weeks. There is no coding involved, as it is mostly theory, but it covers most of the bases of computer science and programming logic. Looking back, much of it confused me at first read, but the big ideas are all presented here. Reading this during the summer before first semester was a huge boost for me. All of the major computer languages are discussed in the book.

Cracking the Coding Interview. A book meant for veterans trying to get into highly demanding top tech companies, the book is a great introduction to programming paradigms. There are numerous examples of problems in each chapter with answers at the back of the book. The whole thing is in Java, with a short chapter on C++.

Design Patterns. As you learn more about object oriented programming, the concept of design is introduced. This book is the holy grail of software architecture and recommended by many. I would hold off acquiring it until you are certain that CS is where you want to be, it is quite technical. This book follows C++, although a Java version of the patterns exists on

A non-technical book just for fun:
The Innovators is essentially the story of computer science and how it got to present day. It follows the characters, human beings, that were involved each step of the way right up until modern day. Your professors will be impressed that you know who Alan Turing, Grace Hopper, and Charles Babbage were. If only I had been at THE MOTHER OF ALL DEMOS! The actual stories of Microsoft, Apple, The internet, the PC, video games, the space program, etc. On Quiz Up, a trivia app, every other question in the CS category involves names from this book. Read it just to be a real geek that knows where this stuff came from, and the drama/tension that led to innovation. The book is actually really funny at times.

u/VerticalEvent · 4 pointsr/cscareerquestions

> Now herein lies the problem. I now need to condense a 4 year degree down into two years.

Just to be sure, your department should have an undergraduate adviser whose sole purpose is to help figure this out for you. Arrange a meeting to make sure your plan will work as you expect (just to be on the safe side).

> Also, I have heard that interviewers in Big Tech will probably ask Operating Systems questions, memory management questions, and scalability questions, so I am very worried that I won't have the experience to answer these questions in interviews. My biggest fear would be to just say "I haven't had any experience with this yet" in response to a question in an interview. I would be dropped in a heartbeat.

First, the ability to say "I don't know" is a huge thing for you to say, since it's an honest answer and will give a general good impression on your interviewer (provided the question isn't a basic one :p). If you want to prepare for these interviews, I recommend reading Programming Interviews Exposed and Cracking the Coding Interview (which you have read, but I'll mention it here simply for other people's benefits) (in that order), to brush up and learn about technical interviews.

> Finally I want to note that throughout this time I have been working through "Cracking the Coding Interview" [...]

Can you elaborate on what you mean by "Working through"? You don't (and shouldn't) be able to answer all those questions from memories, but understand the general thought process and tricks to solving them. It's very unlikely you will receive an exact question from the book, but a variation of it might appear. It's also important to note that each problem should take no more then 30 minutes to solve (some far less).

u/Zacru · 4 pointsr/compsci

Cracking the Coding Interview: More to help you get a job as a Software Engineering, but full of fun problems even if you do them just for the challenge and learning.

The Code Book: A great overview of the history of Cryptography.

u/mattpratt · 4 pointsr/cscareerquestions

This post is incredibly realistic and I found it to be very helpful:

Practice. Practice. Practice. Know your data structures and algorithms. I would read up on Glassdoor and CareerCup to get a general idea of the level of difficulty. I would say Google's interviews tend to fall about average on the level of phone interviews I've done.

Other resources:

u/Just_a_Lampshade · 4 pointsr/jobs

Don't. Do not under any circumstances say you would work for them over all other choices. There's a few reasons for this.

  1. It often comes off as non-genuine. Hiring managers hear this phrase constantly
  2. It seems desperate.
  3. It's easy to lowball you or keep you waiting if they know you aren't going anywhere. Companies make offers very quickly to the candidates they want to take quickly before someone else does

    This isn't necessarily done on purpose, but I've seen it happen first hand too many times to count. It's almost like the "bad-boy" dilemma in dating- the guys who seem farthest away to reach are usually the most in-demand.

    Instead, communicate your passion through the knowledge you have about their company. Talk about their things they've done you admire, ask them questions about how the framework they use and why (Do your research, don't say anything obvious!). If there are company github projects, read through them all. Try to get an idea of what they might be working on next and why.

    In a phone interview your goal is not to get the job, just to get to the next interview. Give them what they need without sending across any red-flags. Really look closely at the job description and make sure you check each criteria. Have prepared answers for questions like: "Tell me about yourself," "Where do you see yourself in 5 years," etc.

    I'd also recommend buying "Cracking the Coding Interview" if you have some time to prepare:

    It's extremely helpful.
u/Ojamallama · 4 pointsr/uwaterloo

I've had a 70 minute interview once, it was one long technical question with personal questions in between parts. Apparently this is the key to success for software interviews*Version*=1&*entries*=0

u/Redrot · 4 pointsr/math

Can't speak for graduate programs, but if you're applying to positions that involve coding, you'll be asked at the very least about your coding experiences, and (if you're applying to a company that actually has decent tech) be asked some technical coding questions - so basically, don't sweat the wording too much because companies will verify your experience in interviews. For applying to software development positions, I highly recommend checking out Cracking the Coding Interview, this book pretty much hits the nail on the head for everything you need to prepare for.

For reference, I was a math major and only took 2 coding courses in college (1 was required for all graduates), but I had been coding in java since 7th grade, and despite learning practically nothing new in college and getting fairly rusty, I was hired at a smallish company and do data science and software dev (currently messing around with neural nets basically just as experimentation). I put down on my resume/cv that I had 10+ years of experience in Java, was fairly proficient in C++ and Python (which was true, I had done some work in those in college and coded up some fairly large projects), and said "had experience with" a few other languages.

u/ihavecsquestions · 4 pointsr/androiddev

To expand on the above, I would say that you definitely need to learn DS&A before you can get a job. I got lucky getting my first job because they didn't ask me any algorithms questions but trying to find a job is next to impossible if you can't answer their questions on a whiteboard.

Also, practice coding on a whiteboard/paper. I cannot stress this enough. It's amazing how many things you think you know but you realize that your IDE fixes for you/reminds you of. Simple, simple things that make you look completely silly if you don't know them during interviews. Plus, it's just a different process.

It's also quite nerve-wracking to stand in front of a white board and have people watching you write it's easy for nerves to get in the way as well...

Also, get this book:

There are plenty of other books out there as well...

Good luck!

u/mmmarvin · 4 pointsr/cscareerquestions

I remember reading a study where researchers found that people who were smart generally felt that they were dumb and people who were dumb, generally overestimated their intelligence. So I thought that's something you should maybe think about since you mentioned that you think you're not a smart guy. With that said, I think you should go for it for sure and I think that with enough preparation and planning, you can increase your chances of getting an offer from Google. And if you don't get it the first time, you should try again. I've read that some got in on the 2nd or 3rd try.

Your plan looks sound. I would recommend focusing on a specific language though instead of focusing on functional programming, C, JavaScript (unless you plan on doing front-end work, I don't think JavaScript would be useful in this situation). Java is one of the widely used languages at Google.

Buy Cracking the Coding Interview. It's such a useful book. The material it goes over isn't very in-depth, so don't expect to use it as a way to learn about various algorithms and computer science concepts. Rather, solve the problems in the book. The problems are of varying levels, some easy while some may really challenge you. You will feel really dumb trying to solve some of these problems, but spend as much time as necessary and try to come up with a solution that you then refine. You may not come up with the optimal decision on the first try.

Solve problems on CareerCup. From what I understand, some of the questions on there are actual Google interview questions.

Make sure you have a thorough understanding and know how to implement basic data structures such as Linked Lists Hashtables, Trees, Binary Trees, N-ary trees, Graphs and Di-Graphs. Know how to perform breadth-first search, depth-first search on both trees and graphs. Know post-order, pre-order and in-order tree traversal. There's more but that's what I remember off the top of my head.

The last interview of the on-site interview will be about system design and it requires a more general architecture knowledge (HTTP, SSL, compression, network latency, disk latency, etc...).

Search for blogposts of people who've interviewed at Google. There are like a dozen or more of them. They give you a good overview of the process and some even contain questions.

Best of luck!

Edit: I forgot to mention the Big-O notation. It's important and every interviewer will ask you for the time complexity of the algorithm you just implemented.

u/pewpsewp · 4 pointsr/learnprogramming

I really like this book for brushing up on concepts for interviews.

u/dlp211 · 4 pointsr/rutgers

I had an internship with Amazon during my Sophomore to Junior summer. I also received offers from Microsoft and Google to intern this upcoming summer (Junior to Senior), but instead took an offer from Fog Creek Software. I have friends that have interned or are full time at Microsoft, Google, and Amazon, all from Rutgers University.

My advice is to anyone looking to get one of these positions is:

  1. Start early, companies have only so many positions, and once they are taken, they stop looking. Generally this means you need to apply by November.

  2. Data Structures and Algorithms, know them inside and out, know their complexity, know how to implement them, know their tradeoffs, and know when to use them. A great book for someone who has never done any data structure stuff is Data Structures and Algorithms in Java. I took CS111 and read this book and was able to get through the Amazon interview.

  3. Read and do the exercises in Cracking the Coding Interview. Also use the author's resume template for making your resume.

  4. Interview every chance you get. Seriously, I interviewed at about 15 places before I interviewed with Amazon, by the time that I got to the Amazon interview, I was fairly comfortable with the process. I was still nervous about the interview, but I knew generally what to expect and didn't get hung up on their curveball questions.

  5. Pick a single club, whether it be IEEE, USACS, RUMad, etc. and be deeply involved with it. You can be a member of more than one, but you should be really involved with one.

  6. Pick a language and know it. You aren't going to lose points because you don't know Python, or Ruby, or whatever else is the hot language this month. Java, C, C++, you should know one of these languages, and preferably two, C and then either Java or C++.

  7. And finally, the only way to really know a programming language is to use it, so program, program, program, and then program some more. While you're doing all this programming, you should take a few minutes out of your day to learn about source control (git or git, there are no other options :) ). Then put the cool stuff you make on github or some other source control website.

    This may seem like a lot because well frankly it is. But if you actually enjoy programming and computer science, than this is pretty straight forward and easy. And finally, don't get discouraged. Just because you didn't make it into one of these companies the first time you apply, doesn't mean you'll never make it. Some people don't interview well(it is its own skill, hence #4), some people just can't build out a good resume(seriously use the template that I provided and read cracking the coding interview from front to back), and other people just aren't ready(you really need to program a lot). But that doesn't mean that you will never make it with them, just give it another year, identify your weakness, and work on it.
u/bankimbhavsar · 3 pointsr/cscareerquestions

I think you are taking the right approach of preparing for algorithmic questions before applying.

I would highly recommend the following book for preparation...
Cracking the Coding Interview: 150 Programming Questions and Solutions by Gayle Laakmann McDowell

All the best for interviews.

u/rcsAlex · 3 pointsr/rawdenim

I just picked up this book and it has some nice insight into the process, along with a ton of good programming problems.

u/sumzup · 3 pointsr/jobs

The only way to become good at programming interview questions is to practice questions.

Some good resources: (run by the author of the above book)

Find a whiteboard and work through the questions as if you were doing an interview IRL. Talk your way through problems. As you do more and more problems, you'll get better at solving them on the spot during interviews.

u/jmonty42 · 3 pointsr/cscareerquestions

> I'll also make sure I have the necessary skills before even considering interviewing and preparing more when I do.

No. Interview often and for jobs that might not even fit your skillset. If the company grants you an interview based on your (honest) resume, then they think you have at least a chance at getting the job. But more importantly, it will give you more confidence and make you more comfortable in those intimidating situations.

I got by BS in compsci last year and have been working at an ok company since then. I interviewed about every other month that whole time with other companies, some I didn't even care about. But I just got an offer from one of the Big 5 this week and I think a lot of my success came from interviewing often and becoming comfortable with that situation. Also, Cracking the Coding Interview helped with a lot of the preparation. Knowing what to expect from these types of interviews and preparing for that scenario is a big confidence-booster.

Also, as a side note, what school did you get your degree from that you hadn't heard of the modulus operator before?

u/Poofleberry · 3 pointsr/intj

Not an engineer, but a technical marketer. We get these types of interview questions too. It feels like I'm taking a math quiz and the interviewers are scrutinizing the way I'm holding the expo marker.

You can't avoid these situations in all cases, but if you practice enough at home, I'm sure you can make up for any "dings" in the whiteboarding portion of the interview by offering up code samples via your GitHub, portfolio etc.

This book has been recommended to me many times: The way the author thinks through the problems has been really helpful for me, even in non-coding interviews.

Good luck!

u/SeanNoxious · 3 pointsr/learnprogramming

I have done a lot of interview prep in the past but would always be interested in keeping my skills sharp. I highly recommend this book it's really the most comprehensive text you can get for any generic coding interview. I am interested in learning but if there is anything I can do to contribute, I would be happy too as well.

u/tmoss726 · 3 pointsr/cscareerquestions

Cracking the Coding Interview: 150 Programming Questions and Solutions great book. Has examples too

u/Uwaterloo123-_- · 3 pointsr/uwaterloo

hmm... As for me, i saw a lot of tech companies requiring the knowledge of c++, java and front-end development.
You could also learn either iOS development or Android development.
You definitely need to learn git.

Try "TeamTreeHouse" for 2-3 months, they have a lot of stuff there. Try some of the courses and then create some projects and put them on github to later on add to your resume.

And also, during interview when they give you some technical questions, you need to be ready for them.

Here is the good book for it.

GOod luck :)
Try to find a job and if you dont, try to learn as much as you can during this summer :)

u/Maximillionnn · 3 pointsr/iOSProgramming

A lot of people are answering if knowing data structures is useful.

To actually answer your question, you will need to know data structures and algorithms for the larger tech companies like Facebook, Apple, Amazon, Netflix and Google (FAANG). Smaller companies will focus less on those academic things, and focus more on what projects you can actually make.

Cracking the Coding Interview is the seminal book on these types of interviews.

u/29624 · 3 pointsr/SeattleWA

Are you absolutely sure its your age? If you haven't already have someone else look at your resume and checkout Cracking the Coding Interview.

u/jb567 · 3 pointsr/cscareerquestions

well, since no one has said it yet Cracking the coding interview is a great resource for learning the stuff you'd be tested on.

Over summer, for a project it doesn't have to be amazingly unique, just something you're interested in.

If you have some free time learning a functional language like Haskell really helps learn a different side of programming than the traditional imperative/objective norm.

u/asdfman123 · 3 pointsr/financialindependence

I took a few CS classes in high school and two in college, and then took post-bacc classes in computer science because I thought I needed to get a master's in it. I was wrong. A CS degree teaches basic coding skills, and then a lot of theory which is basically inapplicable, or barely applicable, to a programming career. I didn't need to know 90% of what I learned.

If you want to make sure you're well rounded and ready for an interview, read something like this and learn everything in it. Work on a few decent sized projects on your own time. Maybe read classics like The Art of Computer Programming by Knuth. Even if you just master the concepts in the first book you'll probably be ahead of 75% of CS graduates in terms of career skills.

u/bluerosebud · 3 pointsr/OSUOnlineCS

In addition to the two reddits /u/monkish2002 suggested, I really liked Cracking The Coding Interview for help working though those problems. Interviewing is a skill, just like programming.

u/DaBritishyankee · 3 pointsr/learnprogramming

>What did/do you find hard about learning programming? If you could be specific about things that frustrated you or roadblocks that got in your way, that would be helpful.

The hardest thing I've found about learning programming is knowing where to start. If you're trying to learn without a mentor its really hard to know what you need to learn and how. To someone inexperienced with the field, learning to program seems as simple as learning a language, but the difficult part is learning to apply that to different problems. Overall, the hardest thing to learn is something that you don't know exists. As for a specific subject, I remember finding recursion and Polymorphism hard to understand the first time I encountered them.

>Did you choose to go to an institute of higher learning for programming instead of using the free resources that are all over the net? If so, why?

I am an undergrad sophomore at Northeastern University, studying Computer Science. I chose to study computer science at university instead of using online resources, because I realized that there was a lot to learn which I couldn't find in a web page. I made the decision shortly into my Junior year of high school when I was taking AP Computer Science. I enjoyed studying the subject so much that I couldn't imaging studying anything else.

>What is something that you wish you could change about your current programming instruction?

My current programming instruction is great. I generally think that my professors are very interactive and experienced in their fields. Something I think is great is that most of my professors lecture without computers. They write code on the board, which gives them much more freedom to move about and ask questions, and it makes that classes interesting. I also think it removes the focus from the language being used and places it on the theory, which is the important part.

>Do you look for career preparation or support? If so, what have you been looking at or what resources do you use? To clarify - I mean interview help, prep questions, advice, etc...about preparing to enter the field.

One of Northeastern's greatest tools is its coop program. Typically students graduate in 5 years with 1.5 years of working experience over three 6-month coops. In preparation of this, I had to take a class to prepare me for applying to companies. The experience was amazing. The advising department brought in employers and other students to talk to us and do mock interviews. As someone looking for their first "real" job, this is invaluable. Technical questions are an important part of the application process, but for entry level programming jobs they aren't too difficult. I've heard that is a great resource.

>For those of you still in school/learning - do you worry about how you will find a job programming? What concerns do you have?

Nope, already got my first job in the field. From my experience over the past semester of interviewing, it you're excited about the field and have a reasonable ability to program, you can find a job somewhere (especially if you live in a city.)

>If you're out of school and in the workforce - do you ever worry about how you will move forward in your career?

Not there yet.

>Does your place of employment (you don't have to tell me who) provide you with feedback or a clear path to advancement? Tell me about your concerns here.

Not there yet.

u/_bilbo · 3 pointsr/learnprogramming

Check out Cracking the Coding Interview. You'll find examples of many different types of problems ranging from those centered around sorting, searching, data structures, dynamic programming, you name it. The solutions for the problems are great as they often illustrate several different approaches for solving any given problem based on optimizing for speed, resource usage, development time, etc. The questions are all similar to the types of questions you'd likely come across in software engineering interviews so it's also great practice if you're looking to sharpen your skills for the job market.

u/AbaloneNacre · 3 pointsr/cscareerquestions to get the gist of things, and (surprisingly) Wikipedia to go into detail.

u/minhaz1 · 2 pointsr/javahelp

If it's for interviews, I highly recommend reading Cracking The Coding Interview.

u/hardleaningwork · 2 pointsr/learnprogramming

I usually don't recommend books for this kind of thing, but that book is exceptional for refreshing your knowledge and anticipating questions.

u/objectdisoriented · 2 pointsr/learnprogramming

Khan has a great primer in CS:

Also, there is a book about programming interview questions that can be useful in going over some common CS problems:

u/duuuh · 2 pointsr/cscareerquestions

It's good that you know what the feedback was.

I'd practice doing some 'whiteboard coding' problems and maybe work your way through this or something like it.

Some of this kind of stuff is just practice.

u/gladimdim · 2 pointsr/FlutterDev

Quote from the book:

"Imagine you have a call center with three levels of employees: respondent, manager, and director. An incoming telephone call must be first allocated to a respondent who is free. If the respondent can't handle the call, he or she must escalate the call to a manager. If the manager is not free or not able to handle it, then the call should be escalated to a director. Design the classes and data structures for this problem. Implement
a method dispatchCall() which assigns a call to the first available employee"


+ UI in Flutter

u/Coneylake · 2 pointsr/jobs

I think you already have a good outline. Look at this book:

I'm sure you can find a pdf of it somewhere. ;)

u/cheeekyslug · 2 pointsr/UCSC

Here's my two cents.

Other things to consider: I'm a girl, minority, and have a mental "disability" (diagnosed anxiety and depression). These all come into play when you do apply for tech jobs in some ways.

I was a MCD Biology major last year but switched when UCSF Admissions told me that getting into med school is an honest crapshoot. I literally switched to CE during the summer. It was a pain to switch but it's working out.

Right now I'm taking 29 units, 15 units here and 14 units at another school. The only class I've taken so far that is CS related is CMPS 12A/L in the summer at a CC where I aced it and the professor really liked me. And CMPS 12A/L isn't even part of the CE program.

You know what you should do today? Make a resume. Right now. Already have one? Apply to internships. Right now. Making a LinkedIn also helps so much.

I applied from August - November to 100 companies and got denied to 20 already (Uber, Asana, TwoSigma, Pinterest, some video game companies) but already have 5 offers on the line with offers from $25-40 an hour with other frills like free food and corporate housing. This last end of the quarter I've been getting scheduled for phone interviews, technical tests, on-sites.

This is with one CS class too. Most companies don't look at transcripts or references and all they look for is project work (which I don't have either) and talent. I studied my ass off with this book and have learned so much on how to tackle interviews.

SOE literally thinks I'm silly, but I probably have done more in terms of networking than some Senior CS major. I also still have a pre-med mentality which helps.

TLDR What I'm saying is that even if you don't have a lot on your belt, people see talent easily. Be persistent and optimistic.

I have a personal list of applications if you want them, PM me. Will not disclose to everyone though because this place is already competitive enough.

u/sun_tzu_vs_srs · 2 pointsr/UofT

As far as courses go just take the math-oriented ones like algos and data structures seriously. It's about developing your problem solving ability more than anything. Strong problem solver, strong interviews. Also developing an intuitive understanding of complexity and problem classes will help you to think clearly.

For interview-specific stuff courses won't help you. Pick up Cracking the Coding Interview and Elements of Programming Interviews. The latter used to be called Algorithms for Interviews which is also good.

Protip: last time I checked all these books were available through Safari Books Online, which most university libraries give you access to for free.

u/kaisercake · 2 pointsr/computerscience

Current industry professional and interviewer. Just got out of one in fact.

Certs won't do much for you. I know some interviewers who actually look down on people who get certs. I personally don't care at all if you see them. Chances are, I don't know enough about the process to get that specific certification to give it proper weight. Did it take a few hours of training? Several weeks? Years of experience? I'm not going to look that up when I have work to do along with better things to grill you on for your resume.

Speaking of those better things: Projects and internships. Projects done OUT OF ASSIGNED CLASS WORK are always more valuable than just showing off that you can do assignments. Everyone will also push the importance of internships. They're great. They show that you know how to work on a team in complicated systems with a different set of demands and people.

School in NY? I'm an RPI grad. Transferred in from HVCC. Big roadblock you won't hear about is how big company interviewers typically completely disregard your CC experience. They didn't care about my 4.0 there.

"Okay, but what's your GPA here?"

In a field/school where many people get internships after their sophomore year, it puts us at a big disadvantage, especially for the schools who do job fairs during your first semester. You won't have a GPA you can tout there. Several online applications require your 4 year university GPA. Doing a 2-3 program will slightly alleviate the issue...but now you graduate a year later. There's a myriad of hidden problems no one will tell you about because they're too busy pushing positives. Also, it's more complicated than just "being a sophomore" again. Feel free to PM me, I wrestled way too much with my administration while I was there.

You'll have some challenges ahead. But two things will help your resume immensely:

  • INTERNSHIP At least if you can get one.

  • Does the school have an open source program you can do for "research?" We had RCOS, a two hour a week class you could do for credit or research. It helps you fill out your resume with interesting and more complicated projects that aren't assigned.

  • Portfolio What good is all this if you can't show off your work? Make a GitHub. We Look.

  • Interview skills. Maybe not on the resume directly, but you need to be able to sell yourself. Practice an elevator pitch for job fairs. Practice doing interview questions. Cracking the Coding Interview is a great resource to see what to expect from us.
u/Godbutt · 2 pointsr/badeconomics

Oh no you misunderstand, all code is shit code, hence the "like the rest of us" part. Anyway, back end work is easily the most popular and easiest to get into so I wouldn't worry too much about getting stuck doing UI development.

My advice is do try and figure out at least some idea as to what you want to do or where you want to be because the nice thing about the programming world is jobs are plenty, but it's usually CRUD all the way down. Obviously that's the usual advice but you have time so do that now as opposed to later.

If you think you want to dick around in the lower level world which sort of leads to embedded systems, start with writing a dynamic (meaning malloc) linked list in C with void and function pointers since that ensures you know what a pointer is and is a common enough data structure that you've probably already covered it as a sophomore. You could do something else but list questions come up sometimes and are used a lot. Next would be knowing your bit operations and some basic things to do with them, mainly masking. A question I've seen is to do bit packing so like given two 4 byte numbers put them into a single 8 byte number and then get those two numbers out.

That's enough to at least stand out at an interview, especially at a sophomore level for an internship. Actual embedded systems work/experience puts you in a weird spot since pulling out an arduino and lighting LEDs up is neat, but when it comes to the shit show that is security, real time responses, ISRs, drivers, multi-threaded programs, and whatever else comes up software side, it's just hard to get without having something to do it on and side projects are meant to be fun projects, not that. That said, if you want to look like a baller, get some early experience with multi-threaded programming in something like C with pthreads. Then knowing what an ISR is and how it works is good shit too.

However if you're looking at back end work, that requires a bit less specific knowledge as a lot of it is CRUD app data plumbing so much of what you learn is already applicable. Basic data structures will likely be the most important. So know how an array, list, tree, hash table/map, queue, stack, graphs, and how a list of lists of lists works as multi-dimensional data structures are a near constant. A few of those are rare (like trees) in actual "I'm writing some code and need to use something" code, but they come up and don't require a burden to know.

The next thing would be the basic questions like reversing a string or fizzbuzz as those come up a lot for new people. How quicksort works might too but that was always a stupid question so I hope nobody asks it of you, but they might so have some idea of how it works and be able to make a reasonable attempt at it (I'm lucky in that I don't have to anymore). This book has a lot of decent-ish general questions. I do dislike some of it's more esoteric exercises but that comes out of my own disappointment over people being unable to use if's properly, let alone answering questions in that book. Regardless it'd be handy for you to thumb through.

I'm tired so I'm probably forgetting things. My one last thing would be use some kind of version control as you should be doing that anyway, and if you end up at an interview you can ask them what kind of version control they use, and if they say we don't, thank them for their time and just get out. If they say subversion treat it as slightly better than not having one but assume it's also hell.

u/rem87062597 · 2 pointsr/homestead

I'm a CS major that got an internship in college that turned into a full time position after college, then I used that to jump into an engineering firm in my field with the stipulation that I'd be a 100% remote employee. 100% remote work is really hard to get, there's jobs out there but they tend to be extremely competitive. I only got this job because my particular specialty (GIS) is pretty tight-knit and I knew some people who knew some people so I had great references. Granted, I still had to prove myself on my own merits in the interview, but having a network definitely helped. Basically I applied to a non-remote job and wrote on the application that I'd only consider remote work, they took a chance on it, and it worked out.

I can't say much on being self taught or finding a job after being self taught but if you know your stuff you'll be competitive regardless of the degree. If you know your programming languages inside and out and you can answer the questions in this book you'll get hired somewhere as long as you're a good fit. Remote might be harder and it involves a bit of luck, but I wouldn't expect getting that for your first programming job. In my experience people tend to want proof that you can be productive at a previous employer before they'll consider letting you work essentially unsupervised.

Salary went from $12/hour as an intern to $45k/year as a full time on-site contractor at state government to $63k in my current position (I graduated Spring 2014). I could make more elsewhere, especially if I lived closer to a city with multiple firms and I was willing to go into the office, but I'm super happy in my current job.

u/jonhanson · 2 pointsr/programming

> cracking the coding interview

First hit on google.

u/021fluff5 · 2 pointsr/cscareerquestions

Do you have evidence of what you're capable of? (Contributions on Github, a website, a portfolio, published researched papers, etc.) If they have an idea of what you can do before you start the interview, that'll help them a) tailor questions to your skill set and experience, and b) understand that you do know what you're doing.

I've seen Cracking the Coding Interview recommended on this subreddit quite a few times - the author probably has much better advice than anything I can think of. :) Best of luck.

u/dragonnards · 2 pointsr/cmu

I would highly recommend reading this book.
My brother is a CTO of a tech startup and he used it to practice for his coding interviews at Amazon and Facebook, and still references it when interviewing candidates today. It lays out a great timeline for long-term preparation for coding interviews.

u/1finite · 2 pointsr/cscareerquestions

I can address a couple points from the perspective of a new-grad software engineer in the Silicon Valley with a lot of internship experience.

Having no experience hurts you regardless of your age or school status. I'd recommend actually finishing some personal projects so you have something to show and talk about in an interview.

Charm and enthusiasm are important for CS interviews, but less so than in softer fields. They can easily test your programming strength in an hour interview, unlike with many other professional skills. In a CS interview they are going to want to get an idea about your actual CS abilities.They'll ask questions about algorithm complexity and design and will probably have you do some coding on the whiteboard. I'd recommend reading a book like Cracking the Coding Interview and working through every single exercise in the book.

u/GoatSnake66Six · 2 pointsr/uofm

Like the other commenter said, intro to algorithms by CLRS is a great one. However, if you're trying to do interview prep I highly recommend Cracking the Coding Interview. It has tons of fantastic coding questions with detailed solutions. Big 4 companies use problems directly from that book sometimes.

u/149244179 · 2 pointsr/cscareerquestions

This book is often recommended. It covers a lot of the whiteboard type stuff.

Lookup common non-technical interview questions and prepare answers ahead of time. Stuff like "what is your biggest weakness?" "Describe yourself in 3 words." "What do you enjoy about programming?"

Personally, I would go into the first 4-5 interviews fully expecting to fail. Your goal should be to learn how to interview, not get a job. Write down any topics or questions you did not know. After the interview, study those so you have answers for the next time they are asked.

The answer "I don't know" is a perfectly good answer. If you knew everything already you wouldn't be applying for entry level positions.

u/donjulioanejo · 2 pointsr/jobs

Looking at your post and your other replies in this thread, I feel like you simply don't do that well in coding or technical interviews.

Now, I'm IT, not development, but a few people I've met swear by this book:

Buy it or find a PDF and get cracking :)

u/Delta-tau · 2 pointsr/DataScienceJobs

I'd recommend this book. But frankly, it is quite old school to ask such type of questions in a DS interview. This is mainly material for engineers.

u/14736251 · 2 pointsr/jobs

You might want to try cross posting this to /r/cscareerquestions, to get more discussion. However, since you posted this here, I will try and answer your question. First off, some software engineering job interviewers will have unrealistic expectations. However, it's unfair to say that all or even most software engineering interviewers have too high expectations. After all, there are huge differences in quality between good and bad developers. The issue is that there isn't a great way to tell how good of a software engineer someone is in a short interview. Asking technical questions about algorithms or aspects of programming related to the job is one of the best ways of measuring a developers quality within the constraints of an interview.

By the way, if you feel that your skill as a developer isn't coming through in interviews, you should buy the book "cracking the coding interview". I have found it very helpful in preparing for technical interviews. One great piece of advice that it has is that for preparing for technical interviews you should write code on paper not in an IDE or text editor. This is the kind of thing that separates being a good developer and seeming like a good developer in an interview.

Tl;DR Some interviewers have unrealistic expectations, but not all or even most.

u/smalljd · 2 pointsr/iOSProgramming

Check out Cracking the Coding Interview , it has tons of practice interview questions that cover common data structure/algorithm questions.

u/mlindgren · 2 pointsr/slatestarcodex

> Given a few years, could you teach your mom (or dad) to pass a technical interview at Amazon? How about your best friend from high school?

I'm not sure this is the right question to ask. Technical interviews are notoriously bad at selecting for actual competent software engineers. If you spent years just studying a book like Cracking the Coding Interview, to the point that you had memorized most of the problems and solutions and were able to infer patterns from them, you might be able to pass a technical interview loop. But you probably wouldn't actually be a good software engineer.

But to answer your question, I think it would be very hard to teach this to my parents. They're both smart, but they lack the foundations for for computer science, and they're old enough now that I think it would be pretty hard for them to adjust to the ways of thinking required.

My best friend from high school... also unlikely. That person is not dumb either, but I do think that CS requires, as /u/brberg put it, "a certain way of thinking that may not be teachable." Whether or not it's learnable is another question, but if so I think you have to learn it through practice rather than instruction.

u/euid · 2 pointsr/cscareerquestions

Open source projects aren't what you do to get a job. They're what you do because you love to program. You can see it in the code and the attitudes of contributors to them, and sense it in their heated debates on mailing lists and bug trackers. There's a real love of the craft present in people who work on OSS, and that's why people like to hire contributors, or suggest contributing "to get a job".

I'm not suggesting that. I'm saying you will grow far more and learn much more important things by contributing to a project that other people work on. Programming is a community effort even more than a personal one - the interfaces you build, the libraries you maintain, packages that get released, and the experience carried with you that you share with your team - those are the product of good code. And they are a community effort.

No, the easy bugs have not been fixed in every project out there. The easy bugs are mindless, boring work and people don't like to do them. Not every project can afford to keep these down on their own volunteer effort.

I think you should dedicate time to open-source because right now, you have nothing better to do. Look for a job and build things. Those are two real goals and they'll come to complement each other as you work down that road. You'll gain experience you can talk about in an interview, put on a resume, and maybe will get you hired as side-benefits.

Another thing: you have an IS degree. Which means you might lack some of the rigorous material taught to CS students. Brush up on trees, sorting algorithms, and basically the stuff mentioned in Cracking The Coding Interview while you're not working on a big project. That book is full of tiny pieces of the puzzles that confront the daily lives of programmers. Each problem you finish on your own will build your experience. When those problems come up in a project, or an interview, you'll breeze through them and have time to focus on the hard stuff.

u/wallstop · 2 pointsr/cscareerquestions

Generally, the more weird something is to outsiders, the more you should take a hard look at the practice and actually weigh whether its "good" or not. This tends to be a "smell" of bad practices/coding techniques.

If you've stepped away from STL and general algorithmic-y implementation details at your (current? old?) job, I would highly recommend this book as a refresher. It's a lot of high quality algorithmic and data structure problems, solutions, and general information.

u/balloonanimalfarm · 2 pointsr/AskProgramming

> However, something pulled me away from Marketing, and I decided to try and go the tech route. I took two basic programming courses (Java/C++ & SQL) at school however because of lack of time did not do a minor/major.

From this I would suggest data science, but it looks like you're already into that. If you like programming, maybe find a marketing position that needs some programming rather than going for a full-on programming position. That way you can ease yourself in.

> I consider myself pretty creative, and I think about things deeply/logically

That's great!

> however even when I programmed I never felt like a smart/clever programmer, more so watching what others do and replicating.

Don't worry about that too much. Programming is a trade--a very sophisticated and exacting one, but it's still a trade. There is no silver bullet to gaining great programming skill. You need to make 10,000 mistakes to be a master.

I've been programming for ten years now, others have told me I'm clever or a good programmer so I suspect it's more or less true. All of my clever tricks, good ideas and ability to make difficult things simple come from others. When I see something I like, I remember it. When I build something later I can pull out my bag of tricks and build elegant solutions to complex problems. Study other people's code and learn from it. Try to figure out why they chose to make every decision they did; every line tells a story.

If you want a good place to start with that, look at the JavaScript source files for 2048 (ignore the ones that end with polyfill). It's one of the most beautiful pieces of code I've seen.

To quote this

> Every programmer occasionally, when nobody's home, turns off the lights, pours a glass of scotch, puts on some light German electronica, and opens up a file on their computer. It's a different file for every programmer. Sometimes they wrote it, sometimes they found it and knew they had to save it. They read over the lines, and weep at their beauty, then the tears turn bitter as they remember the rest of the files and the inevitable collapse of all that is good and true in the world.

> I did receive a Data Science internship, as I knew the answers to basic programming questions and was able to think through a problem logically. However, today I had a technical interview where I had to join a chatroom and write pieces of code for the person. I struggled with 2 out of the 3 problems and they were fairly simple-- a little embarrassing.

These types of things are designed to trip you up and separate the people who can't program at all with those that can. The link is short and worth a read. If you want to practice read Cracking The Coding Interview by Gayle McDowell.

> So now I am really doubting going to programming track as maybe I am not 'talented'/capable of really performing that type of thinking, especially for an entire summer & career. Any advice or tips is greatly appreciated!

Impostor Syndrome runs high in CS. There's too much to keep up on and it's impossible to know it all. In a way, we're all constantly beginners. Learn as you go and don't be afraid to ask questions, nobody knows everything.

u/biochromatic · 2 pointsr/cscareerquestions

It would help to identify what point you made it in the recruiting process.

Recruiting Step | If you didn't make it here...
Company Reads your resume | Apply to lots of companies, network (tell everyone you're looking for an internship), and attend recruiting events / career fairs
Company invites you to initial interview | Polish your resume / cover letter
Company invites you to follow-up interview | Improve your interviewing skills
Company offers you an internship | Improve your interviewing skills

Improving your interviewing skills includes learning how to communicate, but more especially for CS related interviews it includes learning how to complete those coding style questions you'll be asked. This book might assist with coding questions.

The few times I have been asked by my employer to participate in recruiting I mostly looked for candidates who correctly knew how to use data structures, understood Big O notation and correctly analyzed their code using it, and also clearly explained what they were doing as they were solving the problem. Candidates were less desirable when they sat there silently not explaining their thoughts to me or writing a really convoluted solution that completely ignores well known data-structures / algorithms (even though we told them they were welcome to use any that they knew).

u/koolex · 2 pointsr/cscareerquestions

I think people in this comment section will do a good job with the ideas, but here are some questions you should know. Maybe some are fairly hard since you seem to be playing down this interview, but you can never be too prepared. Some of these are from: an Amazon interview me and my friends went to, other interviews I had, internet, and a book I read.

Java Questions:

"Whats the difference between final, finally, and finalize in Java?"

"How does garbage collection work in Java?"

"Whats the difference between HashMap and HashTable in Java?"

"Whats the difference between String, StringBuffer, and StringBuilder? What are the advantages and disadvantages of each one?"

General questions:

"Tell me everything you know about HashMaps and then implement a simple HashMap (lets say key of type String and value of type String, don't bother with any fancy java generics)"

"How do you modify your HashMap implementation so that it can pick a random element in O(1) time?"

"What is the range of a 32 bit Integer"

"How do you rotate a 2D matrix 90 degrees?"

"Explain and give the average and worst case complexity of: Heap Sort, Bucket Sort, Radix Sort, Quick Sort, Merge Sort"

"What is the worst possible set of data for Quick Sort and how long does it take (without any fancy optimizations, just the classic vanilla version). How do we help alleviate this case?"

"Implement Quick Sort (vanilla/classic version) and Merge Sort"

"What are the 4 famous/common simple recursion functions"

"How do you find the biggest substring palindrome in a string in O( n^2 )?"

"How do you reverse a linked list?"

"Explain how Dynamic Programming works."

You should probably also run through fizz buzz, it'll only take you a few minutes, but the last thing you ever want to do is make a stupid mistake on such an easy question haha.

Every interview I have ever had, they grilled me on HashMap, so I would highly recommend you know that data structure in and out.

And of course, if you're going to try and solve these problems, do it in pen and paper. That's how the hardcore interviews work.

Talk out loud explaining your reasoning while you do it. Interviewers want to hear how you think, and why you make your decisions. This is arguably more important then getting the answer right.

Never disagree with your interviewer.

u/peterlongnguyen · 2 pointsr/learnprogramming

It's going to be tougher switching to a larger, HR-heavy company, so my answer is focused on smaller companies.

  • No idea on your current/desired title, salary, location, or skill level, but I think bay area startups generally like seeing (live) projects/actual experience, initiative, and a sharp mind. Some inevitably will require certain degrees or test you rigorously on data structures or core cs fundamentals, but there's no harm in applying and mentioning all the extras you do on the side. If you feel so inclined, you could mention that you'd be willing to start off as QA or devops (if you've got the skills). This is something you can do now, without taking any extreme steps.

  • For a great crash course on cs interviews, buy, read, and practice
    It's got five stars and 180-something reviews for a reason.

  • Attend meetups and tech events around your area.

  • If you're ready to drop it all and invest about 13k or so to dive headfirst: The workload is intense, more than full-time, but they have recruiting relationships with companies, and wikipedia reports that "95% find jobs with an average starting salary of $85,000."

    Good luck.
u/boognerd · 2 pointsr/nba

I'm in the industry (in PHX) and just got a new job. Got a job directly out of school, spent 5 years there and started applying for new stuff. Not sure how many interviews you've been on or if they do interview interns usually but I'd recommend doing as many practice interview questions (both technical and behavioral) as you can. This book was really useful: IMO that same advice applies to your first full-time job.

u/Sinistersnare · 2 pointsr/UMD

If you want to make a videogame, you could use what you know from Java and make a game with libGDX, or join the Game Developers Club and work on a team to make a game. Games are good projects to show to possible employers.

A lot of internships at small local companies wont have super crazy tech interviews, but I would suggest getting Cracking the Coding Interview if you want to see some example questions to prepare.

Also, I have never put my GPA on my resume, and I have done pretty well for myself. If your GPA drops under 3, just drop it from your resume and only give it if a possible employer asks.

u/seanbrown99 · 2 pointsr/javascript

I'm self taught as well and decided to help bridge the gap in 2 ways:
Read this book...Its not gospel for how every interview will go, but will give you an idea of how a CS heavy interview might go:

If you have enough time, follow the videos in this course and also get the pdf of the book. The topics will be quite dense at first, but keep at it and they will eventually make sense:

To reiterate the same as others, its meant to weed out people who don't have a CS background; but don't be afraid to say you don't know something. Use that as an advantage and come prepared with situations where you didn't know something, but were able to read up/comprehend it and then applied the knowledge as a new skill :) Its impossible for everyone to know everything as a developer, we can only keep learning :)

u/peppage · 2 pointsr/malefashionadvice

That's a difficult question to answer, there is tons of information about interviewing but some of it relates to google type interviews. I've had all kinds of interviews and I'm not sure I prepared correctly for any of them.

Some of them were based on knowing how to rewrite a linked list and some of them were just based on my personality. I failed a lot because sometimes those questions are more about memorizing an answer than actually knowing what you're doing. Which is complete bullshit. Fuck everything about taking a quiz during an interview.

This is all I have saved now:

u/garyandbarry · 2 pointsr/cscareerquestions

The answer to your question is highly dependent on the company in question. In general, the more competitive/higher paying the internship, the more you'll need to know. What you're learning in your data structures and algorithms course should be a good foundation, but you might want to do a bit of self studying.

Both of those books will offer good preparation and can I believe be found online. You don't need to go through the entire thing, but definitely reading a bit and trying out a couple of practice problems will give you a feel for what to expect.

u/dEAthdEAlEr69 · 2 pointsr/cscareerquestions

Make sure you can whiteboard all the easiest questions from this book:

But do so in a way where you are not memorizing answers but instead learning the concepts and the problem solving techniques. A side benefit is you will almost certainly write better code and find more elegant/performant solutions at your current job as well.

u/ChickenConsideration · 2 pointsr/cscareerquestions

no worries, happy to help.
This book is pretty well regarded for tech interview practice.

u/craftywalnut · 2 pointsr/cscareerquestions

Yeah, it's normal at first. But eventually you'll recognize the patterns and be able to solve most problems, even if not in the most efficient manner. Hash tables are helpful for a lot of these problems.

I recommend buying Cracking the Coding Interview and reading up on strategies.

Also, before you go look at the answer try "cheating" by clicking on the "show tags" button. Sometimes it gives a big clue about what kind of data structure or algorithm type to use (like DP or greedy).

u/T_Munchakoopas · 1 pointr/cscareerquestions

I highly recommend this book.

This one is also great.

Not only do these provide a lot of good examples of how the interview process works at Google (as well as Facebook, Amazon, Microsoft, etc), but they also provide a lot of good information on things you can do to prepare yourself months or even years before trying to start the process.

u/Grimsvotn · 1 pointr/learnprogramming

You could try problems at online interview question sites like .

The reviews for this book sound good, especially because the few 1 - 3 star reviews are about silly stuff, and I think it's by the CEO of the careercup site:

It is a pretty inexpensive book.

u/ElectricMoose · 1 pointr/uwaterloo

Go find and read/memorize "Cracking the Coding Interview". It's the one book I've had consistently recommended to me by Software Engineers, hiring managers, and other co-op students :)

u/shipshipship · 1 pointr/cscareerquestions

Contribute to open source. Create something of your own, and contribute to other projects. Since you are basically self taught and you are going for your first gig, conveying to prospective employers that you care about design, testing, and that you are not a cowboy will help. Read and understand books like Practical Object-Oriented Design in Ruby. Also, don't be a one trick pony. Tackling JavaScript could be a next logical step. Needless to say, all your open source and projects you demonstrate should have good test suites.

Learn about the non-technical stuff as well. I think Land the Tech Job You Love is great, and you probably want to look into Cracking the Coding Interview as a starting point for learning more about algorithms and data structures. Upcase is another great resource for beginning/intermediate Ruby programmers who want to up their game. Start solving challenges on e.g.

u/eatstraw · 1 pointr/learnprogramming

I don't know of any standard programming certificates. Java certification from Oracle is one that comes to mind. But there are so many languages to choose from. An associates degree from a community college could land you an internship. You could then transfer to a four-year institution and complete the degree. The college degree is still important these days, and this is what I typically recommend if is an option. Coding bootcamps are another option. Some only charge you if you get a job afterwards.

Another way to show your ability is to create an online portfolio of your code examples, maybe a website or some GitHub repositories. The bottom line is that you'll have to prove your worth to get an interview and an offer. Interviews tend to have coding questions, so be prepared for that (Cracking the Coding Interview). Just as important is being someone that they'd want to work with. Present yourself well. Starting salaries around double your salary are very possible. I've seen many offers in that range or higher. Good luck.

u/HardcoreWaffles · 1 pointr/learnprogramming

Do you know what team your interviewing for? SDE, SDET, PM?
Might I recommend Cracking the Coding Interview? One of my interviewers read 3 questions straight from it

u/F00zball · 1 pointr/learnprogramming

Read This

Was this your first technical interview?

u/heartuary · 1 pointr/uwaterloo

Here is a book that will help you with those tech questions during interviews:

u/crystal__math · 1 pointr/math

Master this and you'll have no trouble with future interviews (minus nerves). You could certainly try applying to Google again next year, as a previous rejection won't be held against you. Also you could look for these "1 year internship" positions at places like Google that transition you to software engineering for people with a weaker background in CS, it pays slightly less but I'm sure someone like you wouldn't have trouble getting a full time offer after that. Also if you have money on hand, you could apply for a Masters of Engineering at a top school, pay 1 year of tuition to get some solid coursework + a brand name on your resume (however unfair it sounds, school name along will get you interviews).

u/mogeb · 1 pointr/computerscience

There's this book called "Cracking the coding interview" which is very popular. I actually had questions straight out of this book while interviewing for some companies. On Amazon:

u/Pantstown · 1 pointr/iOSProgramming

Check out a book called Cracking the Coding Interview

u/squidiron · 1 pointr/TheRedPill

congrats bro.

but word of advice on the programming interviews. literally all they care about is how well you answer the questions. as someone whose been on both sides of the table - many of the people doing the ebaluating are neckbeards so maybe this shit has a subconscious effect but youre evaluated on how well you answer the questions check out:

fwiw: i'm talking about the elite places like google, facebook, etc. maybe lower tier places care about confidence, dress, etc. for programmers but the top don't.

but everyone else in life does so it's def something still hella worth doing.

congrats on your progress, keep it up.

u/CSMastermind · 1 pointr/compsci

sigh This sub lacks good advice sometimes.

All right, I'm going to give you a real answer.

Go get yourself a copy of Cracking the Coding Interview. It's the best resource for tech resumes / interviews. Additionally you might want to look at The Google Resume by the same author.

Let's start at the beginning:

Get a Resume.

Here's my slideshow from the last time I gave a presentation about it. Here's a template to start from.

Now's a good time to stop and mention something. I can't tell you the number of times someone has come up to me and said, "<CSMastermind>, I have an interview with <big name company> tomorrow, how should I prepare?" I have to tell them, "Nothing you do in the next 48 hours will dramatically affect the outcome of your interview." It's just not how the process works.

Start Doing Things You Can Put on a Resume.

Right now. Go read this article. Then go watch this video.

Now that you're in the right mindset, do you have a Github profile? No? Get one tonight. You need to learn to use source control, you probably won't be taught it in school, and it will make you a better developer. Start by uploading the projects you've done for school. Once you have them uploaded, go back and clean up the code. Now that anyone can look at it make sure it's something you're proud of.

Likewise go sign up for a StackOverflow account. You'll need it in the future.

Go to Khan Academy's coding section, Code Academy and Udacity. Start learning outside of the classroom.

Ever been to a hackathon? No? Find the one that's nearest to you here. Go to it. Make something. It doesn't have to be good, it just has to be something.

Start reading some books about software development. Code Complete, The Pragmatic Programmer, and Don't Make Me Think are the ones I normally recommend starting with.

Watch the first video in this series. It gives a good overview of the history of programming languages.

Read through the archives of Joel on Software. Then get off of Reddit, the talented programmers are all on Hacker News.

Finally start doing personal projects. Use technology until you find something that you wish existed, an idea for an app, a game, or a browser extension. Make it. It will be hard, you might fail. Focus on making something, then work on improving.

Good now you have things to put on your resume.

Applying to Jobs

Okay, I don't know where you go to school. If you're at a top ~25 school the recruiters will be coming to you, ask around. If you're at a smaller school start by applying online, consider looking for career fairs in the area and travel to them. Remember that hackathon you were going to go to? It's full of recruiters. Are you a minority? There are conferences if you're a woman, black, hispanic, or native american. Those conferences are also full of recruiters. Does your school have a computer science club? If so they probably maintain a "resume book" that they pass out to employers.

So say you're at a hackathon / conference / job fair and you're about to talk to a recruiter. Before you go practice your "elevator pitch". This is the first thing 10 seconds or so where you introduce yourself to a recruiter. Something like:

"Hi, I'm <name>. I'm a sophomore in computer science major, and I'm really excited about applying game development to learning. I've actually developed an interactive educational program to teach children how to draw. Do you think you have an opening for someone like me?"

Hand them your resume, be prepared to answer some basic technical questions. Finally are you a woman? Congrats, you get a free job at almost any company you want. Go apply to Microsoft's explorer program and others like it.

Got an interview? Great.

Handling the interview

Remember when you got Cracking the Coding Interview? That's now your bible. Get some friends, got into a study room with a whiteboard and start to practice. Make sure you can answer any of the questions in the book in the language of your choice. Here's my slides from the last presentation I did about technical interviewing.


My background: internships at Microsoft, Facebook, and Google, Microsoft "intern ambassador" twice, Microsoft "student partner", Google "student rep", president of the ACM on campus. Now I work at a large financial company in NYC and help run our recruiting program.

If you need help with any of this stuff PM me.

u/democratizetech · 1 pointr/cscareerquestions

As anyone working in tech will tell you, landing a job/internship can be attributed to some combination of past work, interview practice and luck.

Some good resources for interview practice are and There's also Cracking the Coding Interview, which is a must have for any technical interview prep.

To find a side project to work on, I would suggest trying to solve a small problem you have in your daily life with software. For example, maybe you want to brush your teeth for longer, or remember to do something everyday. A project like this will allow you to both write actual code, but also talk about your process with deeper understanding to interviewers.

Besides that, there are other great online resources that can help you learn more nuanced aspects of software engineering like or

u/ghking · 1 pointr/cscareerquestions

This book has really helped me in the past. Know your OOD concepts and do a few practice problems right before the interview. They really want to see your thought process rather than the correct answer, so be sure to think out loud and take your time. Good luck!

u/cutebabli · 1 pointr/cscareerquestions

You should revise, among other things, the design section in Cracking the Coding Interview! book.
Also, thanks for sharing your experience, I am sure there are others having similar experiences.

u/duskwastaken · 1 pointr/portugal

Acabei a licenciatura há 3 dias atrás e vou trabalhar para o UK no dia 1 de Agosto. As portas abriram-se por ter feito um estágio de verão (no verão passado) com esta empresa e eles terem gostado e decidido avançar com uma proposta. Para mim esta é a forma mais fácil de conseguir sair (agora para ti já é tarde, infelizmente).

Tens vários caminhos a tomar. Se quiseres ir para os Estados Unidos, especialmente para Silicon Valley, tens de ter em mente que as entrevistas são puxadas (em termos de algoritmia, estruturas de dados, desenho de sistemas...) mas que financeiramente se fores aceite vives muito mas muito bem. Se for esta a tua visão aconselho-te vários livros, em especial o Cracking The Code Interview e vários websites de preparação como Codeforces.

Por outro lado, se quiseres ir por exemplo para o UK, Alemanha, Holanda esta componente de algoritmia não costuma ser tão avaliada. Geralmente tens uma entrevista mais técnica e possivelmente algo mais prático para fazeres durante uns dias e depois mostrares o que fizeste. Se preferires esta vertente, tens aqui uma lista com centenas de empresas que seguem este conceito.

Existem vários recursos para encontrar estas empresas. Por um lado recomendo a Landing Jobs para veres várias ofertas. Um truque que podes tentar é começar por spammar as empresas que encontras e que gostas a propor ires trabalhar com eles no Verão (embora agora já comece a ser tarde!!) e se eles curtirem de ti de certeza que te convidam a ficar. Sei de várias empresas que estão há meses e meses a tentar contratar e não conseguem arranjar pessoal...

Quanto à situação do mestrado, sinceramente pelo que tenho visto as empresas não ligam nada, mas posso estar enganado.

De qualquer das maneiras, não tenhas medo em mandar montes e montes de emails nem que seja só a perguntar se têm oportunidades para recém-licenciados ou para estágios de verão (remunerados claro, não há cá exploração). Vais ficar surpreendido com a quantidade de empresas que te vão abrir a porta.

Qualquer dúvida apita!

u/GuinnessToucan · 1 pointr/cscareerquestions

Well, I would say you should try to work your way through this:
The other thing you might want to do is find a personal project you're interested in and contribute/complete it. When you work on your project you would be able to brush up on your skills and have something to talk about in your interview. As far as tutorials go, you could try Coursera, Udemy, or MIT's open courseware. If you have any of your projects or textbooks from school you could look over those and try to "improve" your work if possible. I'm new to this sub but have been visiting daily for a quite a while and I think these things would all be something to look into. You might also want to look into finding an internship where the pressure might not be as high and the compensation won't be as high as if you were full time but you'd get some experience and if you do a good job you might get an offer at the end of your tenure. Best of luck!

u/CSstudentNosib · 1 pointr/learnprogramming


Those are some solid resources there as well. From my experience with interviews (mainly being internships) a common question is what projects are you currently or have worked on. In my personal opinion focus on developing your own personal projects rather than making small contributions to open source is better for learning. You can reinvent the wheel here, that's the point of it.


Good luck :)

u/CodeTinkerer · 1 pointr/cscareerquestions

Write a document of things you think you need to learn, in priority order, and have another daily journal where you write down your thoughts/accomplishments each day in meeting anything on that first list.

Everyone fears wasting their time learning the wrong things. Alas, it's going to happen. Either you waste your time learning the "wrong" things, or you don't learn anything at all (because your fear stops you), or you constantly dabble (learn an insignificant amount about everything). I don't think dabbling is horrible because it gets you a picture of the landscape, but if you want to make progress, you need to pick a few things to work on.

Look up books on handling technical interviews, e.g.

And practice your tech interview skills, since you need a good interview to get to that internship.

u/LokiNinja · 1 pointr/gamedev

Practice, practice, practice. Look up some programming questions or exercises and practice writing the code for them on paper without the help of a compiler. At each step of the process explain out loud what you are thinking and what you are doing/why you are doing it that way. Once you have a working solution, type your code directly from the paper into your compiler of choice and verify that it works. This is a good book that can be used to help prepare for the technical portion. It covers a gamut of technical questions starting with basic string processing and moving to much more advanced topics such as performing swaps without temporary storage etc:

u/kiwijafa · 1 pointr/ucla

"I dont want to do the CS major as it seems too bureaucratic and without direct application in the employment sector" uh what? CS has a very direct application, which is software engineering or algorithm development. Both are essential in industry. Really confused by what you mean by "too bureaucratic"

  1. If you're looking to get employed in software look at Cracking the Coding Interview

  2. Take CS111 as well, you will probably get asked operating system concepts during your interviews
u/iamyourdad · 1 pointr/cscareerquestions

I was recommended by another redditor to get this book and read the heck out of it. I just received it and it seem to have a lot of good information.

u/inhalingsounds · 1 pointr/portugal

É mais para exercícios de código propriamente ditos, mas não posso deixar de recomendar um livro excepcional: Cracking the Coding Interview: 150 Programming Questions and Solutions.

u/DanMD · 1 pointr/cscareerquestions

Negotiating a little sounds like a good idea. Offers are by no means absolute, that's why they're called offers :).

It sounds like you are not too familiar with interview questions which are related but not at all reflective of your "CS skills", if there even is such a thing (in my opinion CS skill is a collection of talents). You should read this book:

Read this book backwards and forwards, multiple times. The tech interview process is a game that can be mastered.

u/Silchas_Ruine · 1 pointr/cscareerquestions

I've been looking to prepare for some Internships for Summer 2015. I've heard a lot of good things about Cracking the Coding Interview, but I was wondering what everyone's thoughts are on Elements of Programming Interviews.

u/toastykittenz · 1 pointr/AskComputerScience
u/PsYnCere · 1 pointr/UMD

If you're serious about going into computer science, I would strongly recommend taking a mathematics course, just to get you thinking logically. (You're going to end up taking 250, but still, it's incredibly helpful)

I'm not going to mention the coursework partly because /u/lordlicorice does a good job already and partly because I'm also a freshman like you, and I can't really advise anything from experience. I'd just suggest reading Introduction to Algorithms, which is a pretty well-known book to get started. I've also picked up Cracking the Coding Interview, just to help with some tech internships I want to get into. (My professor implied sometime back that you should have at least 330 before considering internships, but some of my friends have done some even before 216)

u/donutbagel · 1 pointr/cscareerquestions

Starting your own projects or getting involved with open source projects shows initiative to recruiters when you apply again in the Fall. At the same time you could get ready for future interviews by studying technical questions and making sure you could answer basic behavorial questions well.

Its okay to not have internships the first 1 or 2 years. Being a freshman definitely makes it harder because you are not about to go fulltime anytime soon. I myself did not have any offers for the first two summers. But I did what I just described to you and landed a Big 4 company without any internship experience.

The fact that you already tried applying will help you in the future because you will learn from any mistakes you may have made.

These are the books I used, like many others:

The first contains shorter explanations of topics and mainly questions and solutions. The second has longer explanations of what you need to know for each topic. Very great resources that helped me become comfortable with interviews.

Have you had your resume reviewed by anyone? I thought my resume was solid 2 years ago but now that I look back at it, there were tons of mistakes.

Hopefully this helps.

u/KrustyKrab111 · 1 pointr/cscareerquestions

From what I've see lurking around here, this books seems pretty useful

If you don't wanna spend the money, I'm sure there are pdf downloads avaliable online

u/Befriendswbob · 1 pointr/cscareerquestions

I'm sorry you're going through this. Other commenters have said it'll get better and stuff (which it will!), but below I've linked some resources I've collected over the years for you to use. Hopefully this will help!

  1. Cracking The Coding Interview
  2. Read through this site and this Wiki, really try to understand what it's talking about. Try some simple implementations of the patterns. The main thing with patterns is being able to recognize and apply them. Sometimes in reality they don't look as simple as the nice graphs on the page.
  3. This is another good article on good API design practices.
  4. This is a good article on writing Testable code.
  5. Here are some terms for writing good unit tests, you should Google these and start looking into it: Domain Analysis (Input and Output), Structural Analysis, Unit Test Patterns, Mocks, Test Driven Development.
u/jhoneycutt · 1 pointr/cscareerquestions

It happens. Try not to worry about it too much - things are going to be OK. There's a job for you out there.

Practice a lot. Find lists of interview questions online, and try to code all of them - first on paper and then with the help of a computer. Learn them through and through, so that you can easily recognize variations of them. Consider getting this book.

Feel prepared in your next interview. Good luck!

u/0fficerNasty · 1 pointr/AdviceAnimals

This post is silly. Granted, you can be intimidated from freshman year, but that is to weed out all the slackers or people who just aren't built to code.

Good programmers are at their highest demand these days with average starting pay around 50-70k. If you do your work, do some cool projects, find your niche programming language, build up that resume with internships, and explore the open doors, you are pretty much guarenteed to find a job before you even graduate. For the love of God, GO TO YOUR COLLEGE CAREER FAIRS.

I read this book sophomore year of college and it helped me more than I can say.

I'm a software developer at a software company in North Dakota, and we have job opportunities exploding for CS grads. So ignore this pic, and keep working at it.

u/NotAGeologist · 1 pointr/cscareerquestions

As /u/Amarkov said, you're not screwed and you really should put in the time to learn basic algorithms and data structures. But, I also think it's a bad idea to go overboard.

For example, you should know why and when you'd use a binary search tree over a hash table, and be comfortable implementing basic graph algorithms (BFS, DFS, shortest path). But, much beyond that, and you are likely better off spending your time actually building stuff and developing your coding skills. I know most of the big tech companies will grill you hard on CS, but many smaller companies will be more concerned with how quickly you'll be productive with their tech stack. Rather than have you implement a graphing algorithm, they'll want to see that you're comfortable with Java's threading model or writing a JQuery plugin or working with Active Record or whatever.

I'd recommend grabbing either of these books and working through at least 2 or 3 questions in the chapters you're weak on. At a minimum, they'll help shine a light on your blind spots.

u/stratovolcano · 1 pointr/UofT

Book: Cracking the Coding Interview Learn it and learn it well. Also, don't forget Java after 207. Very few PEY jobs use C (which is the primary language for second/third year), so good java skills are more important to have.

u/junkpizza · 1 pointr/cscareerquestions

I have been interviewing the past few weeks. The 2 things that have helped me prep:

  • HiredInTech - They have pretty good guides on how to prep for interviews. As someone who has interviewed 100s of people for Amazon it is pretty solid.
  • Cracking the Coding Interview Book - Has great example questions and tips for interviewing
u/dewayneroyj · 1 pointr/learnprogramming

Check out this book Cracking the Coding Interview . It’s definitely worth it.

u/LocalAmazonBot · 0 pointsr/cscareerquestions

Here are some links for the product in the above comment for different countries:

Link: Cracking The Coding Interview


This bot is currently in testing so let me know what you think by voting (or commenting).