Cracking the Coding Interview: 189 Programming Questions and Solutions

share ›
‹ links

Below are the top discussions from Reddit that mention this Amazon book.

Books Computers & Technology Programming

Info from Amazon Listing

I am not a recruiter. I am a software engineer. And as such, I know what it's like to be asked to whip up brilliant algorithms on the spot and then write flawless code on a whiteboard. I've been through this as a candidate and as an interviewer. Cracking the Coding Interview, 6th Edition is here to help you through this process, teaching you what you need to know and enabling you to perform at your very best. I've coached and interviewed hundreds of software engineers. The result is this book. Learn how to uncover the hints and hidden details in a question, discover how to break down a problem into manageable chunks, develop techniques to unstick yourself when stuck, learn (or re-learn) core computer science concepts, and practice on 189 interview questions and solutions. These interview questions are real; they are not pulled out of computer science textbooks. They reflect what's truly being asked at the top companies, so that you can be as prepared as possible. WHAT'S INSIDE? 189 programming interview questions, ranging from the basics to the trickiest algorithm problems. A walk-through of how to derive each solution, so that you can learn how to get there yourself. Hints on how to solve each of the 189 questions, just like what you would get in a real interview. Five proven strategies to tackle algorithm questions, so that you can solve questions you haven't seen. Extensive coverage of essential topics, such as big O time, data structures, and core algorithms. A behind the scenes look at how top companies like Google and Facebook hire developers. Techniques to prepare for and ace the soft side of the interview: behavioral questions. For interviewers and companies: details on what makes a good interview question and hiring process. Illustrations note Illustrations : Illustrations, black and white

Reddazon may receive an affiliate commission if you make purchases on Amazon.com through this site. Thank you for using these links to support Reddazon.

Gayle Laakmann McDowell

Reddit Posts and Comments

0 posts • 40 mentions • top 39 shown below

r/UWMadison • comment
3 points • Gibborim

>most important so far as you have probably gone through internships and job interviews.

Algorithms is non-negotiable. You are going to tank interviews badly if they are the first place you see basic algorithm based problems.

This is a great coding interview prep book.

r/findapath • comment
3 points • GreekPotato

https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/ref=mp_s_a_1_2?keywords=cracking+the+coding+interview&qid=1580423183&sprefix=crack&sr=8-2

This is the book if you want to be hired. You need to be able to answer most if not all the interview questions in this thing.

Know your shit, create personal projects that are functional and show that you understand the language you are programming in and API's, and keep trying. I literally applied to 100 jobs before I landed one. The first one is the hardest, and it absolutely sucks ass that you need someone to take a chance on you when you don't have experience in the field. Unfortunately, it's how the world works, so you have to play the game.

You got this. Don't give up.

r/learnjava • comment
2 points • Nephyst

Not sure exactly where your skills are at, but if you have a decent understanding of the basics I would suggest looking into Data Structures and Runtime Complexity.

Data structures are pretty fundamental. Arrays, Maps, Lists, Queues, Stacks, Heaps, Trees. One of the best resources for this might be "Cracking the Coding Interview". It has like 200 interview questions that revolve around the use of these data structures, and it has detailed explanations on the answers. Even if you aren't prepping for an interview, the knowledge will be invaluable. (https://www.amazon.com/dp/0984782850)

You don't need a super in-depth understanding of Runtime complexity, but knowing what it means for quick sort to be O(n log n) and bubble sort to be O(n^2) is helpful.

On top of that, if you are interested in building websites I would suggest learning the Spring Framework and Spring Boot. It's fairly ubiquitous, and pretty much every company that is doing java web development is using Spring at this point. There's a ton of tutorials on this, and spring has great documentation.

r/NJTech • comment
5 points • meattbone

Adding on - those sites are great to learn the concepts. If you like books:

Cracking the Coding Interview

Algorithms

Also for practice problems, leetcode.com and hackerrank.com

r/learnprogramming • comment
2 points • HealyUnit

So this is actually one of many reasons I strongly dislike sites like LeetCode, Hackerrank, etc., and moreover that so many companies seem to immediately gravitate towards them as tests for new programmers. I can get why a big FAANG (Facebook, Apple, Amazon, Netflix, Google) company might want to test you on complex algorithms, since Google engineers (for example) will need to be the best of the best - you don't hire Bob the lazy car mechanic who's usually drunk on the job to design your NASA spacecraft - but for a large majority of companies, it just simply isn't worth it.

Sites like leetcode:

Prioritize runtime complexity and/or code brevity over code readability:

Sure, if you're Google, and need to perform a bazillion searches in t seconds, you're gonna need to worry about that kind of stuff. However, again, if you're a majority of companies, something like this:

const flattenCurve = a=>(m=a.length && Number((a.reduce((t,v)=>t+v)/m).toFixed(1)),a.map(q=>m));

may be much less preferable to something like this:

function flattenCurve(arr){
    let avg = arr.reduce(function(accumulator,currentVal){
        return accumulator+currentVal;
    })/arr.length;
    return new Array(arr.length).fill(avg)
}

Sure, the fact that the first one can be done on one line is "neat", but it's hard to read (and probably harder to bug fix!).

Arbitrarily encourage code "competition" as opposed to cooperation:

Most of these sites either flat-out prevent or penalize you if you attempt to view other user's answers before submitting your own, working version. If it's one of those sites that shows your answers to problems, and you have often no ability to go back and "update" your answer upon learning some new information, then your answer will forever be displayed on that site as the "not as good" answer to employers.

Take a look at this (modified!) example from Cracking the Coding Interview, where we're asked to find out if a number is prime. The definition of a prime number, in case you forget, is that it's only divisible by 1 and itself. A naive, beginner approach:

function isPrime(num){
    var problyPrime=true;
    for(var i=2;i<num;i++){
        var divd = num/i;
        if(divd.toString().indexOf('.')==-1){
            problyPrime=false;
        }
    }
    return problyPrime;
}

While this code works - it correctly identifies numbers as prime or not prime - it's inefficient, uses old coding styles (var instead of let), and shows an unfortunately low level of mastery of the language:

  • As mentioned, it uses var instead of let. In modern JavaScript, there are very few reasons why you'd need to use var, and doing so more often than not shows that you haven't "updated" your knowledge in the past half-decade.
  • The variable problyPrime is completely unnecessary. Instead, we can simply return false the moment we encounter a number that "breaks" our prime rule. Remember, if we find any number other than the number itself and 1 that evenly divides into the number, we're done: the number's not prime.
  • We check far too many numbers. Firstly, a number is never going to be evenly divisible by anything greater than half of that number (num/2). But we can actually do better. In fact, we can prove that we only need to test numbers up to the square root of the number. So we can rewrite our for loop as: for(let i=2;i*i<num;i++){...
  • Finally, our original coder seems to be unaware of the modulus operator (%). They could easily replace that if statement with if(num%i==0) return false;

Our final, cleaned-up code:

function isPrime(num){
    for(let i=2;i*i<num;i++){
       if(num%i===0) return false
    }
    return true;
}

But, again, here's the thing. If you're just a beginner, how would you know that without looking stuff up? I get that big companies wanna hire the best of the best, but I'd argue that the best of the best is someone that knows how to look up stuff.

As /u/insertAlias says, there is a difference between saying, "crap, I forgot whether Array.splice() modifies the original array; lemme look that up" and "I have absolutely no idea how to begin to code this; lemme just look up an entire coded product".

I personally like Edabit a lot; their problems are varied, aren't just all "attempt this arbitrary algorithm assignment", and they usually give you a pretty easily-readable list of the tests they're gonna put your code through before you actually run the code. Hackerrank, on the other hand, hides some of the tests. Why? If you were an interviewer, wouldn't you appreciate your candidate asking to clarify edge cases and specific inputs formats? It'd show they're thinking/communicating (a valuable job skill!), and not just robotically spitting out data.

r/cscareerquestions • comment
1 points • MrEllis

If you don't own CTCI it's literally the best $20 anyone can spend when getting started into software. It's not a bible, or the only source of truth, but it's well sourced from many experienced interviewers at big west coast tech companies and really helps break down how to prep for behavior questions like the ones I asked above.

r/cscareerquestions • comment
1 points • LadylikeLandmass

I work at one of the FANG companies in Seattle and am a trained interviewer for them. Big tech companies hire year round, especially for dev talent. I was even hired over Christmas time. Smaller companies will be more Jan/Feb - July when everyone has budget and then September and October have a little blip it feels like but dont quote me on it. My husband and I are both in tech and relocated recently to the west coast for jobs. Feel free to ping me if you want more interview advice!

FYI: FANG = Facebook, Amazon, Netflix, and Google - the big ones.

Funny story: this last time I was looking i interviewed with a killer startup that was doing some amazing things with data (my thing). They were so excited and begged me to just let them know if any other offers came before they could present theirs so they could expedite. Well, a week later they went totally cold so I moved forward with a position with a FANG. Turns out that startup had been acquired and they froze all hiring during negotiations. Just a word of caution that not every rejection has anything to do with you and I would encourage you to be diligent about applying. At the big tech companies, apply a few times and if no one bites, work on your resume and apply again in a few months to a few other positions.

Also, read up! There are tons of books on how to write a resume and interview for a dev role but my husband really liked the below book. I used one by the same author that was focused on PMs that I recommend to everyone as well if that is what they want to do.

Cracking the Coding Interview: 189 Programming Questions and Solutions https://www.amazon.com/dp/0984782850/ref=cm_sw_r_fm_apa_i_tCprEb261319A

Good luck and good for you for getting out there! This is the hardest hurdle, that first job. A lot of companies hire paid interns and then will offer permanent placement if you do well. I would just advise you do whatever you can to get your foot in the door and hold the position for a year or more.

r/C_Programming • comment
1 points • StateVsProps

You can try to do the same problem again from complete scratch (blank notepad) the next day. Are you still able to do it? If not, you're not there yet where you need more problems.

Otherwise, look into that: Cracking the Coding Interview: 189 Programming Questions and Solutions https://www.amazon.com/dp/0984782850/ref=cm_sw_r_sms_apa_i_cwHJEbC8V3PCH

Or sites like leetcode but you need to find one with C#.

r/learnpython • comment
1 points • uberdavis

This book has it all. The most efficient algorithms. Sorting, data structures, graphs, Big O and how to put it all into practice.

https://www.amazon.com/dp/0984782850/ref=cm_sw_r_cp_api_i_mQrIEbQMBSDG5

It’s not Python specific, but Python is the perfect language to crack the problems with.

r/UVA • comment
1 points • jmjmw

Make a kickass resume. Make a personal project (personal portfolio website is an easy one to start with). Then if you get interviews practice leetcode.

Also checkout this book called cracking the coding interview. If you make a project or two over winter break and also read this book, not only will you be prepared for some technical interviews but also be prepared for CS 2150.

Just apply to as many places as you can for the time being.

r/webdev • comment
1 points • de1pher

I think many would agree that those recruitment coding tests are poor indicators of your skills, so don't worry about it too much. I also had a few humiliating experiences. To avoid this in the future, I can recommend this book: Cracking the Coding Interview. Like I said earlier, it won't make you a better developer, but it will help you pass these tests in the future. Even after landing a job, I'm continuing to work through this book to prepare myself for the future.

r/cscareerquestions • comment
1 points • deltaIncrement

Have you tried cracking the coding interview??

https://www.amazon.com/gp/aw/d/0984782850/ref=dbs_a_w_dp_0984782850

r/cscareers • comment
1 points • mirgee

As alredy said, focus on learning how to solve problems. As for concrete exercise list, Leetcode is great, but I would prefer buying Cracking the Coding Interview to start with and go to Leetcode when I run of exercises there (but at that tham, I am probably more than prepared for any interview). The exercises are well curated, and the book includes deep explanation of solutions with hints, and talks in detail about the most important strategies.

r/learnprogramming • comment
1 points • AnotherTimJones

When I was prepping for coding interviews, I read Cracking the Coding Interview and worked on as many of their interview questions as I could.

It's important to not only know how to solve them, but to be able to talk out loud and explain your thought process while doing it. I would go to a private room with a whiteboard on campus and talk out loud while solving problem, as though I was in an interview. Then when the interviews came, it felt natural.

When you do enough of the above, interviews will get much easier.

But that won't necessarily get you the interview. For that, personal projects would definitely be helpful. If you know Python, maybe build a simple web app using Django that scratches your own itch. Or even just a web scraper that does something useful for yourself.

r/ProgrammingBuddies • comment
1 points • ACommonDay

I fell into the same trap long ago. Algorithmic problems, like on these sites, aren't what the majority of us get to work with out in the real world. I suggest you get a hold of and read this book: Cracking the Coding Interview.

r/cscareerquestions • comment
1 points • ThorOdinsonThundrGod

I haven't seen it referenced yet, but cracking thr coding interview can definitely help with these problems. The book itself has a bunch of great information, including practice problems with explanations for the solutions. https://www.amazon.com/dp/0984782850/ref=cm_sw_r_other_apa_i_VPKyEb4ZK7G5R

In the case of your current question, I'd probably do this with a linked list as the removal of nodes would be constant as you just have to change the pointers of the nodes around the node to be removed

r/learnprogramming • comment
1 points • B1tF8er

This book cracking the coding interview may help you

r/learnpython • comment
1 points • goodDayM

"The" programming interview preparation book you should borrow or buy is written by someone who worked at Microsoft, Google, and Apple: Cracking the Coding Interview: 189 Programming Questions and Solutions. That helped me and friends quite a bit - and we all work in tech now.

r/OMSCS • comment
3 points • world_is_a_throwAway

Hey. You’ve already got the clout. Save the money and pick up and work these books.

Introduction to Algorithms, 3rd Edition (The MIT Press) https://www.amazon.com/dp/0262033844/ref=cm_sw_r_cp_api_i_MV5LEbRA1WAJP

Clean Code: A Handbook of Agile Software Craftsmanship https://www.amazon.com/dp/0132350882/ref=cm_sw_r_cp_api_i_G05LEb5YGX6Q4

Cracking the Coding Interview: 189 Programming Questions and Solutions https://www.amazon.com/dp/0984782850/ref=cm_sw_r_cp_api_i_t75LEbBBKXWJV

And maybe something on discrete mathematical structures if you don’t already have that.

Whatever you do, don’t get a fucking IT degree if you truly want to work in computer science. Pardon my French notation.

r/ProductMgmt • comment
1 points • raizaPM

Hi! Good luck on your APM interviews. First - we don't really ask coding questions anymore, but here are some good technical resources: - Cracking the Coding Interview: https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850 - Not as technical, but good primer on talking about technology (Swipe to Unlock): https://www.amazon.com/Swipe-Unlock-Technology-Business-Strategy-ebook/dp/B0756MTX6K

Hope that helps!

r/TurkeyJerky • comment
1 points • Fast_Yesterday_3420

Suc kesinlikle teknolojji firmalarina vergi indirimi yapip Irlanda gibi avrupanin teknolojji baskenti olmak yerine onlara sacma sapan cezalar kesip, yasaklayan hukumette, o konuda haklisin. Ben harika self-taught developerlarla calistim, inanilmaz yetenekli yazilimcilar da cikariyoruz, ancak "yazilimda para varmis ehehe" diyip 2 satir kod yazan adam avrupada islere baslayinca olay herkes icin bitiyor, zamaninda bi yazilimci cv'si gelince recruiterlar Hintli oldugunu gorur, adam hakikaten yetenekli olsa bile elerlerdi, olay Turkiye icin ona donuyor, ulkeden kacmaya calisan inanilmaz bir kitle var, bbuyuk bir sirketin recruiteri oldugunu dusun, onune gelen 200 cv'nin 150'si Turkiyeden ve bunlarin da %90'i cöp, sen ne yapardin?

olay su an yazilimci olarak calisanlar icin de sikintili olmaya basladi, Hollanda yada Almanya gibi ulkeler yazilimci maaslarini dusurmeye basladi cunku onlar icin kisa vadede clean coding, design patterns, architecture falan onemli degil, herhangi bir coding bootcamp'ten cikan adam 20k daha az maasa ise girip kodu pic ettikten sonra hayatina devam edebiliyor. Bu yuzden orta halli yada buyuk firmalar insanlik disi interview processler gelistirdi. 2 phone screening, 1 tech screening, 1 take home assignment, 1 system design+white board coding, 1 soft-skill interview. Sadece 1 isyeri icin bu kadar mulakata girdigini dusun..

Cracking the coding gibi sikik bir kitabin amazon'da en cok satanlarda olmasi da iste bu yuzden. Suradaki Tim denilen kisi cok guzel ozetlemis https://www.amazon.com/product-reviews/0984782850/ref=acr_dp_hist_2?ie=UTF8&filterByStar=two_star&reviewerType=all_reviews#reviews-filter-bar

r/ExperiencedDevs • comment
1 points • neuronexmachina

Have you gone through either Educative's Grokking the Coding Interview course or Gayle Laakman's Cracking the Coding Interview? I found both to be quite helpful for understanding the basic patterns to solving algo questions.

r/ExperiencedDevs • comment
1 points • CharitableLinkBot

Try amazon smile to donate to a charity of your choice automatically at no cost to you!
https://amazon.com/dp/0984782850/
^^^I'm ^^^a ^^^bot ^^^and ^^^this ^^^action ^^^was ^^^performed ^^^automatically.

r/cscareerquestions • comment
1 points • jimbo831

> That internship was not paid and it was with a startup (I don't know if either are looked down on)

Any internship experience is a positive thing and nobody will know that it was unpaid (you don't put your pay on your resume and they won't ask because they don't care).

> While I'm doing that currently, I'd appreciate any quick strategies that could best optimize my Leetcode usage.

There aren't really any quick strategies. You will just get better as you practice more. Keep doing Leetcode. If you have a few bucks to spend, also consider buying Cracking the Coding Interview. I like the explanations on how to approach these problems and found this book to be well worth the money.

Still, this won't be quick. You just have to practice a lot of problems and you will slowly get better over time.

> I just wanted to know if either fact will hurt me on the job search

Your internship will help, not hurt you. Sucking at coding will absolutely hurt you, so keep practicing that. That said, there are a ton of jobs out there that don't ask you to do Leetcode-style algorithm questions.

When you say you suck at coding, do you mean you suck at Leetcode? Could you easily solve Fizz Buzz? A lot of companies might not ask you any coding questions or much simpler examples like this.

> is there anything I can do to improve the stuff on my resume

You should definitely take advantage of the resume thread on this sub. There are almost definitely improvements you can make to your resume. Remove personal details and post it there. It's also possible that your school's career services office will help fine tune your resume. Some schools will do this longer after you graduate than others. Reach out to them to find out.

> I just can't stop worrying, however, and I'd like to know if my fears of my chances are valid or if they're an overblown case of nerves.

Your fears are definitely valid. Graduating and finding that first job is difficult and stressful in many cases. It's just important to keep in mind how you deal with that fear. Channel that into being productive and doing what you can control to solve the problem. Good luck.

r/AskProgramming • comment
1 points • programmingfriend

Read cracking the coding interview

https://www.google.com/url?sa=t&source=web&rct=j&url=https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850&ved=2ahUKEwjHntjUyqvnAhV7CjQIHYVyCmAQFjANegQIAxAB&usg=AOvVaw1nvVQ0zYYmxeKsprnRL7mz

Amazon, non-afilliate link.

I have been told that it is a very good approach to learning how to solve these kinds of problems

r/math • comment
1 points • CalTowhee

What "proficiency" means, exactly, depends a lot on the particular position and on the particular company. Sometimes a "data analyst" position is more like a "software engineer" position in disguise, and you'll be expected to have very good coding skills. Other times they'll be satisfied if you just know how to call common data science libraries in python to do basic tasks (e.g. using libraries like Pandas and NumPy). Sometimes a company just wants to know that you can correctly use data structures and algorithms to solve abstract problems, in any programming language. Other times a company will expect you to have experience using a very narrow and specific set of software libraries. There isn't necessarily a lot of standardization in job titles, and their precise meaning and expectations can vary a lot depending on the industry.

Proficiency at coding is often determined in interviews by having applicants work through a coding problem and discussing it with them as they solve it. This is an easy, generic example of such a coding problem. Leetcode has many examples of coding problems, and they are ranked by difficulty, so that can help you get a sense of what you're in for. The coding problems you'll see for data science positions or data analyst positions might test you more on your data science knowledge than on your computer science knowledge, and ask you to solve problems involving probability or statistics. Many companies will have multiple interviews, with one of the interviews being focused on showing that you can write code, and most of the other interviews showing that you know the mathy and/or the practical side of doing data stuff.

With a generic (i.e. not data-focused) coding question like the one I linked to above, the interviewer is looking for you to be able to identify an efficient algorithm that will solve the problem, correctly identify its asymptotic runtime as a function of input size (e.g. O(n), O(n\^2), etc.), write code that implements the algorithm, and then identify and evaluate input test cases that will show that the code does, or does not, work correctly in all situations. Being able to solve the problem perfectly on the first try, and/or writing perfect code, will obviously look very good in such an interview, but it's okay to make mistakes too; what is more important is showing that you understand the process of solving the problem, identifying your mistakes, and correcting them. If you make a code mistake, but then you discover that mistake by using a good test case and you successfully correct it, then that will look very good to an interviewer.

A commonly-recommended resource for coding interviews is"cracking the coding interview". It's mostly focused on coding interviews for software engineering positions (rather than data science), so it may not be directly pertinent to the positions that you're looking at, but it's a good place to start if you're wondering what generic coding interviews are like.

r/cscareerquestions • comment
1 points • Ok-Whereas-3346
r/jobs • comment
1 points • EricExplains

That's a bummer OP. I was recently job searching too and definitely struggled through some low points. A few things that helped me:

  • Passing interviews:
  • Identify your top 5 achievements, package them into concise Situation, Action, Result stories, and practice until you can deliver concisely to show the impact you've had.
  • Read books focused on acing tech interviews, like this one for coding or this one for product management.
  • Motivation:
  • Track and focus on the process not the outcomes. The right process steps are things like applying to 2-3 jobs per day or learning something new each day. It's like exercise, doing the right things each day will lead to results given time...though it can definitely be discouraging now.
  • Make progress in other areas you can control like exercising, learning a new skill, etc. Making progress in things that are in your control can be encouraging and energizing for your job search, while making the job search more sustainable.

It's definitely a rough time right now, but you've got this. Good luck!

r/learnprogramming • comment
1 points • EMCoupling

If you're looking for literature, one of the most common recommendations is CLRS. You can find a used copy somewhere if you don't want to pay full price.

CTCI also does a decent job of skimming over the algorithms if you're already familiar with them but just need a refresher. EPI has way more examples than CTCI but is a little lighter on the explanation of the algorithms themselves.

As for these not being free... well, as they say, you get what you pay for.

r/cscareerquestions • comment
1 points • nomonkeyjunk

I understand that reasoning. I did CompE instead of CS for a similar reason, hoping for the foundations of hardware to help inform my software pursuits later, but it somewhat backfired.

If you already have experience with IoT devices and LeetCode, then your degree should have little effect on your job pursuit. If anything, it will demonstrate your intelligence and ability to learn complex things. For reference, I work on a team composed almost entirely of MEs making a software platform. Their knowledge of aerodynamics, manufacturing, and 3D geometry directly informs the software that they write, and the end users really appreciate that insight. Your background should be considered a strength, rather than a burden.

If you feel confident about your fundamentals already, then you can probably just jump into LeetCode and CTCI, preparing for the interview process, while building a project that demonstrates your skill. If you need a refresh, I also recommend just going through the Data Structures and Algorithms again. In addition to the material in CTCI, Harvard and MIT can help in this area, for free. It's worth it, if you haven't looked at these since college.

Hope it helps, it's been helping me.

r/cscareerquestions • comment
1 points • extraterrestrialocto

Not sure but here's some ideas:

check out the book How to think like a programmer

take an algo course to brush up, maybe this free one from Khan Academy

Read the book cracking the coding interview

keep practicing leetcode

r/cscareerquestions • comment
1 points • ShadowWebDeveloper

Algorithms and data structures 101. Basic SWE interviews don't go much beyond that, especially at the new grad level. But you should know them really well, and be able to apply them in less than straightforward situations.

If you haven't taken a DS & A course, you can watch MIT OCW 6.006 Introduction to Algorithms to get the same basic knowledge.

Beyond that, all the standard advice applies. Cracking the Coding Interview, Leetcode easy and medium questions until you feel comfortable. Get an unseen question from one of those sources and practice writing up a solution on a whiteboard, timed. Do that a bunch of times until you're comfortable with that too. Interviewing.io (referral link) helped me in my last slate (after which I got hired); you can do anonymous phone screen interviews (using Coderpad) with folks at startups and Big N companies and get full feedback on your performance, including what to improve. (Keep in mind that they're also a recruiter and they're generally looking for senior folks, so you might not actually get in even with the referral link.)

r/cscareerquestions • comment
1 points • rslashyan

  • Get a solid foundation. Focus especially on your Data Structures and Algorithms course(s) - this is where most interview content will come from. Unless you intend to specialize in a certain area of CS (and maybe even then), these will be the most important courses for you to be successful as a new grad SWE.
  • Start interview prep early - you'll thank yourself when interview time rolls around. Grab a copy of Cracking the Coding Interview and work it front to back.
  • If you can, buy a whiteboard or reserve a private room with one in your university's library. Work problems out loud. You will feel weird talking to yourself, but trust me - this is the best way to practice for the real thing.
  • Do at least a few independent projects.
  • Build something you are genuinely interested in, and make sure you can explain what you did to an interviewer.
    • What roadblocks did you encounter? How did you go about solving them?
    • What was the outcome/impact? What's the significance - how can your solution to this problem be applied in real-world scenarios?
    • Don't be too intimidated by these questions - you don't need to have built something revolutionary. Just something that shows your technical and problem-solving abilities.
  • Involve yourself with clubs or research in your university's CS department.
  • Often, clubs will give you the opportunity to build your resume through projects and learn how to collaborate with other people.
  • Start an interview prep group with some friends/classmates. Schedule a recurring meeting time where you can practice interview questions and challenge each other. Get comfortable walking through your solution to the group.
  • If you don't get an internship for a summer, you must have a back-up plan. This might include collaborating on research with one of your professors, or working on a large project over the summer. Don't let your resume suffer from an empty summer.
  • Go to office hours. Get to know your professors - you may find that you're especially interested in one of their research areas, and they will likely have connections to help you get your foot in the door at companies or grad schools for that area.
  • Attend conferences
  • If you can, attend GHC. Bring copies of your resume - there are recruiters and onsite interviews galore! When the job fair opens, go straight to the companies that you're most interested in. Sometimes they have a set amount of first-come-first-serve interview slots.
  • GHC can be pricey, so find and apply to their travel scholarships. Several companies also have their own scholarships for GHC that you can apply for as well.
  • When you apply...
  • Make a list of companies you're interested in/have applied to. When I was applying to internships, I had a spreadsheet of company names, application status links, deadlines, etc.. - it was incredibly helpful to keep everything organized and to prevent missing application deadlines.
  • Even if you think you have no chance, APPLY ANYWAY. I went to a small university that doesn't even rank in the top 175 CS programs in the nation. I thought I had no chance of getting into FAANG - I was wrong!
  • Use job posting sites to identify opportunities, but if you can, apply directly on their site. May just be my experience, but I was ghosted by nearly every company I applied to through those posting sites.
  • If you know someone at the company, reach out. Ask questions about their work, express your interest, ask if they'd be willing to give you a referral. In some cases, this might get you past basic resume screening or even an initial coding test. Worst case, they say no.
  • Most importantly - grinding Leetcode may help you "hack" interviews, but it will not make you a great SWE and it certainly doesn't guarantee success post-interview.
  • Invest time into learning, developing your skills, and actual project work. Other great books I'd recommend:

r/math • comment
1 points • cavalryyy

Sorry in advance, this became a novel

Sorry, I think that I may have poorly communicated my point. I don't mean to say that learning the foundational skills is a hindrance, but rather that they don't take you from a beginner to ready to contribute as a professional. In particular, I think the disconnect comes in when you say

> a hindrance when it comes to learning a new language and getting good enough to work with it

There's a huge gap between

1) Learning a language

2) Being good enough to get a job with it

3) Being good enough to use it, at scale, at that job

Realistically, even after you've gotten to stage 2, getting to stage 3 doesn't actually really happen until you've gotten a joba nd worked professionally with a language. There is just too much stuff that one can't expect to learn through self study and personal projects alone, is all.

I also don't mean to discourage you from learning python or any other skill as a means to be more competitive for a job. Rather, I just think that it's important to "know how much you don't know" if that makes sense. Specifically, this is something that I've struggled with in the past, which is why I wanted to point it out here.

As a concrete example, I met with a recruiter for a well known company at a career fair at my school, and on my resume I stated that I had knowledge of a particular programming framework (and it's true, I had taken a class that focused largely on using that framework. I had used it in projects, I could answer some questions about it, etc.) Because I put it out there that I was "skilled" in this framework (and agreed that I knew it when the recruiter pointed out that it was on my resume), the recruiter asked me questions about it as it was highly relevant to the job. Of course, taking a class that uses a framework and being able to understand its ins and outs at the level required to be a software engineer at a major software company are not necessarily equivalent, and by overstating my skill with that framework. Ultimately I put my foot in my mouth and appeared more incompetent by floundering on questions that some may have considered "simple" but I hadn't encountered because I simply hadn't used the framework in a production setting.

I hope my point was intelligible, it got a bit rambly there haha. Anyway, that was why I wanted to respond to your stating that you wanted to learn how to "properly use python". Because if a recruiter says "so, you've graduated with a math degree and don't have much work experience in software engineering. How would you rate your python skills?" and you say something along the lines of "I've been using it for the last few months and consider myself very familiar with it", you run the risk of getting questions related to using the language professionally, when you won't necessarily have the background to answer them, even if you can solve technical problems with the language.

So, what is the proper way forward in that situation? Well, it's certainly hairy. And I will be upfront, I'm still an undergrad so I am far from any sort of expert in the job market. But I'm also a math student who has experience with software engineering and managed to get internships that usually prioritize CS majors, as well as experience with quant trader interviews and recruiting, so hopefully I have some advice that can be helpful.

The first big hurdle you will (or have, depending how far along you are in the job search) come across is actually getting callbacks on your resume. This is incredibly difficult without experience, and knowing enough python to put it on your resume is not going to be the tipping point between getting and not getting an interview (usually). So how do you clear this? In my opinion and experience, the biggest way is networking. You just graduated, presumably you have classmates or friends who have gone on to jobs. Reach out to them and ask them questions about their companies--don't ask for referrals if you're not personal friends with them, but tell them that you're branching into {quant trading, software engineering, data science, etc} and were hoping they could give you some pointers for how you can make yourself competitive for comapnies like theirs. Also use things like linkedin liberally. This may be a bit harder during pandemic time--the whole process is, in fact--but consider also going to meetups on topics that interest you, so you can network in person with people in fields like trading or SWE.

The next big hurdle will be passing interviews. This will probably be easier for you in quant trading than SWE if you have minimal experience, as in my experience quant interviews tend to focus a lot more on probability and math than SWE interviews, which are generally just straight up leetcode. But quant interviews may have an aspect of programming as well, so be ready for that too. If python is your language of choice, get comfortable with syntax then consider getting a book like cracking the coding interview to prepare for coding style interview questions. These generally entail datastructure and algorithms. These tests, frankly, do not reflect real software engineering. However, this may actually work in your favor when you lack experience. You've graduated from a math program, so I'm sure you're a smart guy, and solving DS&A problems isn't that different from doing proofs (besides the presence of coding bugs) from a logical reasoning perspective, so I find that can actually be a legup in the process.

If you can get interviews, and pass first round screening tests, you'll usually get a phone call with some sort of technical person. This will usually involve more technical questions, sometimes programming with them via a platform like coderpad. For quant roles you may also be asked more questions on probability or betting. These can be stressful, but interviewers want to understand your thought process. Of course, work on getting questions answered correctly, but also show how you think. Use that logical reasoning you spent the last 4+ years honing as you grokked your way through arduous proofs.

At this point, things diverge a bit based on companies. For some comapnies, this is the whole process (especially during covid times). For other places, you'll have extensive on-site interviews. And for some companies they won't even have all of these stages. But this is the general structure in my experience.

Another thing that I think is worth pointing out is that smaller companies and being willing to relocate are your friend. Sure, shoot your shot at all the major tech companies and trading firms when you feel like you can get and pass interviews, but reaching out to recruiters at small shops and saying "Hey my name is --name--, I was reading --blogpost-- and came across your firm. I found --thing-- fascinating. I recently graduated from --school-- with a degree in mathematics, and am looking to branch into --field--. Would you have any advice for making myself competitive for a role at --company--?"

This got a bit unwieldy as a comment, sorry about that. I hope that this clarifies the point I was trying to convey a bit, and while I'm far from an expert in the job application realm, I also help the avice I've laid out here can be a bit useful. I know the process sucks right now, but just remember that it will work out in the end!

r/tuesday • comment
1 points • blue_skies_above

Here is the book I recommend to all interns and juniors that I mentor.
https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670

More of a reference manual, but it's fantastic when diving in to older established code bases. The code in it is just reference, it's the concepts and methodologies that are important. About the *act* of software construction.

For interviewing https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850 is great. I'm senior+ dev and I still go back through this book before interviews just because I'm not writing tree-traversing code on a daily basis etc.

I haven't actually read this one, but a buddy of mine with no CS degree loved this one: https://bigmachine.io/products/the-imposters-handbook/?variant=29234251143

If you are coming in as a Junior, don't sweat it. It's their job to mentor you up, you just need those foundational skills.

  • If the company does not have a formal code-review policy, ask for code reviews by more senior people.
  • Soft-skills are EXTREMELY important. I'll take a "mediocre" dev that I can work with and approaches things in a good-faith perspective over some "rockstar" dev who is an a-hole EVERY. TIME.
  • As your skills get better, it's domain knowledge and business knowledge that matters. Sorting algorithms etc. is great foundational knowledge but understanding how large systems are built and work together is what you need to be learning.
  • Debugging and diagnosing are skills to focus on. Again anyone can come in and write some loops and put some data in the db. But taking a customer issue, diving in to log files, writing it up in to an RCA doc, fixing the bug, and covering it with tests is so important, and only 1 part of that process is "writing code".
  • Ask questions. All the above stuff comes down to learning, you can't learn by staring at the screen for 8 hours and accomplishing nothing because you are nervous to ask the greybeard next to you some questions. If you feel like you are bothering people, schedule 30 min on their calendar and go through step by step what you've tried and where you are stuck. Knowledge sharing is the only way large companies work. They may be able to answer in 10 seconds with an "oh right, yeah you gotta look out for that, here check out this file" that you could spend literal days trying to figure out and get stuck.

r/chicago • comment
1 points • ericesn

This started small and turned into a wall of text. I'm sorry, but I do not feel like making a TLDR.

Unfortunately I don't have any leads, but I've done a ton of interviews over the years so maybe I can offer some tips though they may not be particularly helpful. FWIW I only have five years of professional fullstack web development experience in addition to a CS degree so there are probably a lot of other people who can offer you better advice. Be incredibly skeptical of what I am saying and be sure to get second opinions.

Since you are self taught managers are going to want to see something that demonstrates your knowledge of the technology stack you listed. If you don't already have a portfolio of projects, even small ones, I'd start by making a personal blog about the technology you are exploring with what you have listed. This is kind of cliche, but I think it will help. Be sure to use GIT so you can show the source code and demonstrate your knowledge of VCS. Also, try to deploy this to a server without having something automate the process. It will probably be a bit difficult, but in my experience smaller companies, which I think you will have more success applying to, often want their developers to have strong networking and IT skills in addition to development skills. The entries for your blog will be your chance to talk about what technology you are learning and demonstrates your written communication skills.

After you have completed your blog a good second project, at least in my opinion, is something interactive like a board game of some sort. With your knowledge of react this is a great opportunity to show off something visual and you can potentially talk up the advantages (or disadvantages) of using react for the situation. I'd recommend starting with something like tic-tac-toe to get used to the objects you might need, but then you can move on to something like checkers or chess (or really whatever, these are just well defined problems). While you work on this practice Test Driven Development (TDD) or at the very least practice testing your code. This is something that is crucial in the web development world so you will want to have experience before you land a position. While you are doing this make sure you keep blogging and talking about what you are learning and the problems you are overcoming. It will give you a chance to reflect on your own growth if nothing else, but it will also fill up your blog with content.

All of the above is meant to be a sort of stand in for work experience, but the most it can really do is get your foot in the door. Typically programming interviews want you to solve some sort of problem as well either on a whiteboard or with live coding. I personally like Code Wars for this kind of practice, but Leetcode is also very popular. If you like working with pen and paper Cracking the Coding Interview might be more your style. I can't stress this enough, you need to absolutely crush this aspect of a technical interview. I've had many interviews end at this stage even when I was able to solve the problems presented. You will likely be competing with a lot of people so it's got to be great.

Some other things you might want to consider... - Do you want to be a frontend or backend focused developer? This is a massive list of tech you may want to explore based on your answer. It's kind of overwhelming so if you're not sure what you like more it's probably not a big deal. - Think about what kind of companies you are applying to and where you are most likely to be competitive. Applying to Google or a competitive startup is probably not going to get you much (still do it though!). I'm not sure what the best places to apply to are, but in my experience small companies or "boring" (for lack of better words) industries like accounting tend to be a little easier to break into.
- You may want to learn a more modern scripting language like Python or even Ruby instead of working in PHP. This is not to say you can't find jobs that use PHP, hell you might even have better luck looking for those jobs, but Python is becoming hugely popular and has some great web frameworks you can use. - Whatever language you end up using it's always good to be familiar with / have an opinion on popular third party libraries or popular frameworks. - There is a wealth of information in the CS Career Question subreddit and you should make a point of checking it when you are browsing on here. - You may want to network on the Chicago Tech slack channel. I don't personally use this anymore, but it's good to cast a wide net while searching for opportunities.

I wish you the best of luck with this. It's a great field to work in, but it's definitely tough to get in the door. Please feel free to PM me if you have questions you think I can help with. Also, as I said at the top, you need to seek other opinions on this stuff. This is just my personal take on things.

r/ProgrammingAndTech • comment
1 points • peter-s

How to write good code:

Working in the software industry:

For a fundamental understanding of how computers actually work (highly recommended):

r/CoronavirusColorado • comment
1 points • jack_the_ninja

sure! All of these have different variations of 'entry level', and require some amount of knowledge of the area, without knowing more it's hard to say, but not bad targets.

​

  1. https://boards.greenhouse.io/twilio/jobs/2032566 <-- this one has a type halfway down saying it's for Senior Software engineer, I think this is entry level
  2. https://www.indeed.com/viewjob?jk=1411c88c2adb3005&q=Remote+Software+Engineer&l=Denver%2C+CO&tk=1e3pspqatnvgg800&from=web&vjs=3 <-- this one puts 'preferred 2-4 years', so it could probably be talked down to entry level. Many jobs list 'ideal requirements', but whatever, can't hurt to apply!

  3. https://www.indeed.com/viewjob?jk=944e5125f8e87d25&q=Entry+Level+Tech&l=Denver%2C+CO&tk=1e3psstf1nvgg800&from=web&vjs=3 <-- this one is truly entry level into 'the field of IT' in general if you have no experience at all. Trimble is a cool company, and with the ongoing coronavirus, I'd be shocked if they don't have any remote interviews/work availability. That being said, don't have first hand knowledge of this one.

  4. https://jobs.centurylink.com/job/BROOMFIELD-Associate-Engineer-Broomfield%2C-Denver%2C-CO-%28Ops-Academy%29-CO-80021/633909100/ <-- If you don't hate telecom, this could be solid entry level choice as well.

&#x200B;

Lots of random stuff around, but regardless, good luck! Be persistent, and diligent in learning new things, and you'll find stuff eventually.

check out Hacker Rank or Project Euler if you want software engineering-esque coding challenges to learn on, or pluralsight is a great online learning community as well for instructional videos, etc. Most job interviews for tech jobs in software engineering mention the book 'Cracking the Code Interview' as interview prep. It's big, but thorough (you don't need to know everything in it, but you could be asked anything in it type dealio). https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850