#3 in Business & money books
Use arrows to jump to the previous/next product
Reddit mentions of Cracking the Coding Interview: 150 Programming Questions and Solutions
Sentiment score: 91
Reddit mentions: 166
We found 166 Reddit mentions of Cracking the Coding Interview: 150 Programming Questions and Solutions. Here are the top ones.
Buying options
View on Amazon.comor
- MIT Press MA
Features:
Specs:
Height | 9.01573 Inches |
Length | 5.98424 Inches |
Number of items | 1 |
Weight | 1.49032489112 Pounds |
Width | 1.0251948 Inches |
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.
/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.
/endRant
First off: The FAQ https://www.reddit.com/r/cscareerquestions/wiki/index
1.) Resume: https://www.careercup.com/resume
Using Latex: https://www.overleaf.com/gallery/tagged/cv (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: https://templates.office.com/en-us/Resumes-and-Cover-Letters
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.) https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X and https://leetcode.com/
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.
Outliers: The Story of Success - by Malcolm Gladwell
The Pragmatic Programmer - By Andrew hunt
Cracking the coding interview - Gayle Laakmann McDowell
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!
Yo estoy viviendo en NY desde diciembre del año pasado y estos son los consejos que te puedo dar.
http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
http://www.amazon.com/Programming-Interviews-Exposed-Secrets-Landing/dp/1118261364/ref=sr_1_1?s=books&ie=UTF8&qid=1458414826&sr=1-1&keywords=programming+interviews+exposed
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.
http://www.bairesdev.com/
http://www.opensystemstech.com/
Mucha suerte, cualquier cosa mándame un mensaje!
so if you're aiming for summer 2015 then two things i suggest are:
when january 2015 rolls around, you'll be battle ready for all the interviews. but ya - thats what worked for me.
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 people...wtf? 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).
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 glassdoor.com 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: http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
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."
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.
For a software engineering position? I highly recommend Cracking the Coding Interview if you're looking for something to prep!
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!
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.
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. :)
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:
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!
You excel at questions found on http://careercup.com, http://glassdoor.com (lookup the company you're applying for), and from this book: http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
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.
This book helped me: Cracking the Coding Interview: 150 Programming Questions and Solutions https://www.amazon.com/dp/098478280X/ref=cm_sw_r_cp_apa_rtPIzbM5ZMZXD
It goes over data structures and algorithms as well as many other common questions.
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:
How to interview:
What's next:
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.
> 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:
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.
Algorithms, Design Patterns, VCS, being familiar with typical CS interviews questions and something that will be really needed
Some Books:
For Algorithms:
http://www.amazon.co.uk/Algorithms-Sanjoy-Dasgupta-ebook/dp/B006Z0QR3I/
http://www.amazon.co.uk/Algorithm-Design-Edition-published-Springer/dp/B00E28CR4I/
http://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844/
Design Patterns:
http://www.amazon.com/Design-Patterns-Explained-Perspective-Object-Oriented/dp/0321247140/
http://www.amazon.com/First-Design-Patterns-Elisabeth-Freeman/dp/0596007124/
http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612/
http://www.amazon.com/Design-Patterns-Dummies-Steve-Holzner/dp/0471798541/
Interviews:
http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
http://www.amazon.com/Programming-Interviews-Exposed-Secrets-Landing/dp/1118261364/
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:
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.
I'd recommend buying one (or both) of these books and reading through them:
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.
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.
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:
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.
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.
I went through the Google interview process not too long ago. Here's my recommendations:
Cracking the coding interview for prepping interviews: https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
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.
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:
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!
Disclaimer: I teach at a bootcamp in the midwest.
Here are some things I'm noticing:
I'm going to suggest a couple of things to try before you enroll in a boot camp.
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:
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.
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
I can name you a book, Cracking the Coding Interview.
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:
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.
Going through jobmine, there are exactly two parts to getting a job:
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.
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 http://angel.co and https://www.whitetruffle.com/.
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:
If you're having trouble getting the interviews, your resume might just need some dressing up. Having more projects is a great idea, as you mentioned, but you also might be able to spin some stuff you've already done to fill that need better in the meantime. Post it and we can help!
TL;DR Improve yourself, invest in your future, don't worry about the mistakes...read 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:
Having trouble with Algorithm design/analysis? These are some of the go-to books for that:
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)
System.out.println("FizzBuzz");
else if(x%3==0)
System.out.println("Fizz");
else if(x%5==0)
System.out.println("Buzz");
else
System.out.println(x);
}
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.
http://www.amazon.com/Programming-Interviews-Exposed-Secrets-Landing/dp/1118261364/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1377704276&amp;sr=1-1&amp;keywords=programming+interviews+exposed
http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1377704294&amp;sr=1-1&amp;keywords=cracking+the+coding+interview
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.
I've had about 5 interviews with companies in the Bay Area, and in my experience all of them follow the same general sequence:
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.
> short of a very detailed rehearsal of many different problems
Exactly.
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).
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?
Bonus for programming:
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?
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.
Sorry, not sure if this helps or not!
Good luck!
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.
Code Complete
Big Java Late Objects
The Pragmatic Programmer: From Journeyman to Master
The Mythical Man-Month
Android Programming: The Big Nerd Ranch Guide
cracking the coding Interview
Introduction to Algorithms
Thinking in C++
I can only recommend bootcamps for 2 types of people:
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!
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.
http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
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).
https://oj.leetcode.com/problems/
http://hackerrank.com/
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.
http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html
Cracking the Coding Interview
Some books that could help you practice algorithms and coding challenges are:
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.
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.
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
That's a good start. For more on what "real-world" interview questions are like (and thus the kinds of algorithms you should be familiar with) consult the usual suspects:
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.
Seconding The Pragmatic Programmer and Cracking the Coding Interview. I'd also recommend:
If you let us know which languages you primarily write, I can probably recommend some good language-specific titles, too.
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 Github.com
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.
Cracking the Coding Interview.
> 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).
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.
I've heard good things about these books; Cracking the Coding Interview: 150 Programming Questions and Solutions and Programming Interviews Exposed: Secrets to Landing Your Next Job
This post is incredibly realistic and I found it to be very helpful: http://www.reddit.com/r/cscareerquestions/comments/1z97rx/from_a_googler_the_google_interview_process
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:
Don't. Do not under any circumstances say you would work for them over all other choices. There's a few reasons for this.
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: https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
It's extremely helpful.
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
https://www.amazon.ca/Cracking-Coding-Interview-Programming-Questions/dp/098478280X?ie=UTF8&amp;*Version*=1&amp;*entries*=0
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.
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 code.....so it's easy for nerves to get in the way as well...
Also, get this book:
http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
There are plenty of other books out there as well...
Good luck!
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.
I really like this book for brushing up on concepts for interviews.
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:
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.
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
Permalink: http://amzn.com/098478280X
All the best for interviews.
I just picked up this book and it has some nice insight into the process, along with a ton of good programming problems.
The only way to become good at programming interview questions is to practice questions.
Some good resources:
http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
www.careercup.com (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.
> 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?
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: http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X. The way the author thinks through the problems has been really helpful for me, even in non-coding interviews.
Good luck!
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.
Cracking the Coding Interview: 150 Programming Questions and Solutions https://www.amazon.com/dp/098478280X/ref=cm_sw_r_awd_rMtJub1AZ0C4F great book. Has examples too
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.
https://www.amazon.ca/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
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 :)
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.
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.
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.
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.
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.
>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 http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X 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.
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.
http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X to get the gist of things, and (surprisingly) Wikipedia to go into detail.
If it's for interviews, I highly recommend reading Cracking The Coding Interview.
http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1347642233&amp;sr=1-1&amp;keywords=cracking+the+coding
I usually don't recommend books for this kind of thing, but that book is exceptional for refreshing your knowledge and anticipating questions.
Khan has a great primer in CS: https://www.khanacademy.org/science/computer-science
Also, there is a book about programming interview questions that can be useful in going over some common CS problems: http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
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.
https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
Some of this kind of stuff is just practice.
Quote from the book: https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
"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"
&#x200B;
+ UI in Flutter
I think you already have a good outline. Look at this book: http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X.
I'm sure you can find a pdf of it somewhere. ;)
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.
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.
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:
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.
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.
> cracking the coding interview
First hit on google.
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.
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.
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.
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.
This book is often recommended. It covers a lot of the whiteboard type stuff. https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
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.
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:
https://www.amazon.ca/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
Buy it or find a PDF and get cracking :)
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.
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.
Check out Cracking the Coding Interview , it has tons of practice interview questions that cover common data structure/algorithm questions.
> 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.
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.
http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
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.
> 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.
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).
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.
It's going to be tougher switching to a larger, HR-heavy company, so my answer is focused on smaller companies.
It's got five stars and 180-something reviews for a reason.
Good luck.
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: http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X/ref=sr_1_1?ie=UTF8&amp;qid=1396631167&amp;sr=8-1&amp;keywords=cracking+the+coding+interview IMO that same advice applies to your first full-time job.
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.
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:
https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
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:
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/calendar/
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 :)
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:
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.
http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
http://www.amazon.com/Programming-Interviews-Exposed-Secrets-Landing/dp/1118261364
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.
Make sure you can whiteboard all the easiest questions from this book: http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
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.
no worries, happy to help.
This book is pretty well regarded for tech interview practice.
https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
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).
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.
You could try problems at online interview question sites like http://www.careercup.com/page .
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: http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/product-reviews/098478280X/ref=cm_cr_pr_hist_4?ie=UTF8&amp;filterBy=addFourStar&amp;showViewpoints=0
It is a pretty inexpensive book.
Cracking the Coding Interview
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 :)
http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
Cracking the Coding Interview: 150 Programming Questions and Solutions
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. codewars.com.
From what I’ve learned on this sub, these will be far better investments of your time:
https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836
https://www.leetcode.com
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.
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
Read This
Was this your first technical interview?
Cracking the Coding Interview http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X/
Here is a book that will help you with those tech questions during interviews: http://www.amazon.ca/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
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).
Cracking the Coding Interview
http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
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: http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X/ref=sr_1_1?ie=UTF8&amp;qid=1420949854&amp;sr=8-1&amp;keywords=cracking+the+coding+interview
http://www.amazon.ca/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
Check out a book called Cracking the Coding Interview
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: http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X.
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.
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.
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 https://www.hackerrank.com/ and https://coderbyte.com/. 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 https://egghead.io or https://doyen.app.
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!
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.
Cracking the Coding Interview, Career Cup, and Glassdoor
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!
Well, I would say you should try to work your way through this: http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
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!
https://github.com/jwasham/coding-interview-university
https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
&#x200B;
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.
&#x200B;
Good luck :)
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. http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
And practice your tech interview skills, since you need a good interview to get to that internship.
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: http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
"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"
https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
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.
É 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.
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: http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
Read this book backwards and forwards, multiple times. The tech interview process is a game that can be mastered.
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.
Here you go
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)
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:
http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X/ref=sr_1_1?ie=UTF8&amp;qid=1395274746&amp;sr=8-1&amp;keywords=cracking+the+coding+interview
http://www.amazon.com/Programming-Interviews-Exposed-Secrets-Landing/dp/1118261364/ref=sr_1_1?ie=UTF8&amp;qid=1395274783&amp;sr=8-1&amp;keywords=programming+interviews+exposed
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.
From what I've see lurking around here, this books seems pretty useful
http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
If you don't wanna spend the money, I'm sure there are pdf downloads avaliable online
just get that book: http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X/ref=sr_1_1?ie=UTF8&amp;qid=1396318223&amp;sr=8-1&amp;keywords=interview+programming
do not deviate from resume, get a designer or someone with good eye to look it over
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!
Cracking the Coding Interview
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!
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.
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.
tldr; You're not screwed, and learning the CS essentials well enough for NotGoogle-level interviews can be done with a few weeks of effort.
https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
Resolve estos problemas
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.
I have been interviewing the past few weeks. The 2 things that have helped me prep:
Check out this book Cracking the Coding Interview . It’s definitely worth it.
https://www.amazon.co.uk/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
https://en.wikipedia.org/wiki/Java_(programming_language)
https://www.amazon.it/Cracking-Coding-Interview-Programming-Questions/dp/098478280X ?
Here are some links for the product in the above comment for different countries:
Link: Cracking The Coding Interview
|Country|Link|
|:-----------|:------------|
|UK|amazon.co.uk|
|Spain|amazon.es|
|France|amazon.fr|
|Germany|amazon.de|
|Japan|amazon.co.jp|
|Canada|amazon.ca|
|Italy|amazon.it|
|China|amazon.cn|
This bot is currently in testing so let me know what you think by voting (or commenting).