Skip to main content

Top 5 Books for Language-Specific Interview Questions

Shrunk and White of Programming

When you put down that you know a certain programming language or languages on your resume, you are setting certain expectations for the interviewer. I would strongly caution against putting down "expert" in a language unless you invented or are one of the language's maintainers. You are giving your interviewer the license to quiz you on programming language lore. There are a handful of concepts that are considered "standard" knowledge for each language which go broadly beyond syntax and general semantics. These concepts commonly involve major pitfalls in a given language and the idiomatic technique for negotiating these pitfalls and writing efficient and maintainable code. Note, although the concepts are considered idiomatic, you can seldom infer them from knowledge of syntax and semantics alone. The tricky part here is that most courses that teach a particular programming language do not cover these idiomatic techniques and even when they do, they do so only in passing. So, it is quite possible that you've taken a course or even multiple courses in a programming language but haven't been truly exposed to these idiomatic techniques that have become the practicing lore in industry. The goal for these books is not to introduce the language to a beginner but rather to inculcate the lore from practitioners on how to write maintainable code that avoids language-specific pitfalls and to be productive in the given language. In other words, these are the concepts interviewers use to distinguishes people who just put down a language on their resume but don't really know the language from those who do. These are also the books that have a good amount of reference value so even after 10 years of active programming, you may still find yourself revisiting and reviewing these books. In this sense, they are the Shrunk and White of the particular programming languages each addresses.

Effective C++

Effective C++: 55 Specific Ways to Improve Your Programs and Designs by Scott Meyers is a classic yet it remains relevant for any C++ programmer or person who is preparing for a C++ interview. The book is organized into 55 items, where each item is a specific concept that addresses a common pitfall in C++ and how to best negotiate that pitfall. Concepts and C++ patterns that Meyers outline such as RAII (Resource Acquisition is Initialization), PIMPL (Pointer to Implementation), and others are standard fare for good C++ programming. Meyers underscores the need to watch out for exception-safety and thread-safety since C++'s rich feature set makes this particularly tricky. A bonus is that this book is quite succinct while carrying along a good number of helpful illustrative examples of each of the specific 55 items. One Uber engineer I know said if she had to recommend one book to prepare for tech interviews, this would be it. Of course, this would refer mainly to companies which use C++. I find myself revisiting this book every now and then just to refresh myself. Meyers now has a sequel to this book called Effective Modern C++, which covers C++11 and C++14 pitfalls, but that book in no way replaces the classic Effective C++. Effective Modern C++ is alright too, but I don't think it is covered as heavily as Effective C++.

Effective Java

Effective Java follows the style of Effective C++ by organizing by items of which there are 78 here. The items are grouped into 11 chapters covering everything from items related to construction and destruction of objects to serialization. Definitely don't put down that you are an expert in Java before you have these concepts down cold.

Fluent Python

For Python, Fluent Python is the best book to dive into to get a feel for what experienced practitioners pay attention to. Again, this book isn't for the beginner, but it is for someone who put down that they are proficient or even advanced in Python. This book covers how Python works under the hood and advanced features of Python such as Python metaprogramming with decorators, dynamic attributes, and descriptors. If you want to know how Python arrays, dictionaries, and classes work underneath the hood to prove that you are proficient and actually understand Python, this book will help you get there.

JavaScript: The Good Parts

JavaScript: The Good Parts is the go to tome for JavaScript. This book is a little different from the other books. Although it is clearly meant for practitioners and not beginners, it is also a bit more exhaustive than the others in that it covers language esoterica that arguably aren't something one would frequently encounter in practice. However, it does rigorously cover those elements I would consider critical to demonstrate knowledge of the language, thus it has a place here.

Eloquent Ruby

Eloquent Ruby is the book for Ruby.

Disclosure: Yes, those are Amazon affiliate links.

Comments

  1. Pretty blog, so many ideas in a single site, thanks for the informative article, keep update more article.
    software testing course in Chennai

    ReplyDelete
  2. Thanks a lot very much for the high quality and results-oriented help. I won’t think twice to endorse your blog post to anybody who wants and needs support about this area.
    Python Training in Bangalore

    ReplyDelete
  3. On the off chance that you are working in the apprentice mode at that point go to the mission statement for grant test to give a lift to your thought and this www.bestghostwriters.net/professional-ghost-writers-for-hire website share unique stuff.

    ReplyDelete
  4. O wao I did not know all these trick while preparing for interview.I think you missed adding http://www.scriptwriting.biz/our-script-writing-services/service-for-writing-a-play-script/ text in your article but still its so fruitful for my professional career.Thanks.

    ReplyDelete
  5. Programming is my passion.I loved your post.Its helpful but yeah in normal interviews mostly questions are from OOP, Data Structure etc but yes guys for details check it here.Thanks.

    ReplyDelete
  6. I wish to indicate because of you only to bail me out of this specific trouble. As a consequence of checking through the net and meeting systems that were not beneficial, I thought my life was finished.fire and industrial safety course in chennai

    ReplyDelete
  7. Marvelous and fascinating article. Incredible things you've generally imparted to us. Much obliged. Simply keep making this kind out of the post.
    C plus plus Courses in Chennai

    ReplyDelete
  8. Interesting information for IT students. Through this site, they can learn about Programming, java script, python and C++. I would say that these kind of information is needed when we go for interviews. Well, Our professionals are working on online ghostwriting . Here is our link https://www.bestghostwriters.net/medical-ghostwriting/

    ReplyDelete
  9. I never know that these books are so important for the language specific side as it could help you get out of the barier. click to explore to find out more helpful tips on writing.

    ReplyDelete
  10. Nice Post! Thanks for sharing this post. This post is really helpful for all students those who learning the programming language like Phython, Java, etc. I would like to share with my friends. I am also a Software Engineer for more info visit here - Ashvin Ranpariya

    ReplyDelete
  11. writing is one of the hard and creative work in modern time . of you want to be a good writer than at first you should read more and more and rewrite your reading . more you write than your skill will improve click here for the students that is very helpful for the writing services.

    ReplyDelete
  12. The post is very much informative. Pls do update more. You can also visit our website Java Training in Chennai | Best Java Training Institute in Chennai | Java Classes in Chennai for more information.

    ReplyDelete
  13. The blog which you have shared is very useful for us to know how much the software testing is important in Corporate companies. Thanks for your information.
    Software testing Institutes
    Software testing Training and Placement
    Software testing Certification
    Software testing Institute
    Software testing Class

    ReplyDelete

Post a Comment

Popular posts from this blog

Interview Gotchas

It's a challenge to outperform all the other candidates in a competitive tech job only, but there is hope. You can improve your performance with practice and watching out for these gotchas: Make absolutely sure you are solving the right problem: I ran into this the other day. It is entirely a communication issue. When doing an initial screen over the phone, this problem is compounded. For example, maybe an interviewee is hacking out a function that returns the k highest priced products when the interviewer is expecting the kth highest priced product. One can squander a lot of time due to these misunderstandings. A good interviewer will try to guide you back to the right path, but you can't expect this. Be sure to ask questions. Confirm that the input and output are exactly what you expect. Use examples.Don't ever give an interviewer the impression that you are avoiding writing real code. This is an impression thing. This is a coding interview so you should be expecting to…

Complexity Analysis for Interviews, Part 1

This is part 1 of a two part series. Skip over to part 2 you'd like . For coding interviews, we are interested in gauging the asymptotic efficiency of algorithms both in terms of running time and space. The formal study of analysis of algorithms is called complexity theory, a rich field with fascinating and complicated math. For interviews, we only need a few basic concepts. Asymptotic efficiency is concerned with how the running time or memory requirements of an algorithm grows with the input size, so it is intimately concerned with how well algorithms scale to larger inputs. This is important in Computer Science and in practice because whereas some algorithms work well enough for small inputs of say < 10 inputs, the running time and space grows far faster than the input size and thus large inputs of say 10s to millions of inputs becomes impractical (usually meaning taking hours or even years of execution time). Consider sorting. Say for the sake of argument that sorting alg…