Saturday, June 30, 2018

How Do I Prepare for a Software Engineering Job Interview?

Let's look at the basic things you must know if you are interviewing for a software engineering position:

  • Programming in a language of your choice: You should have a strong hold on at least one programming language. You should be quickly able to understand a reasonably complex piece of code and mentally dry run them. You should be able to code a complex scenario in the said language.
  • Problem solving/ Algorithms: Algorithms in itself is a huge field. You are expected to know about basic algorithms. You will be at a great advantage if you know about basic problem solving approaches.
  • The above 2 topics make up for 50-75% of a software engineering interview process.
  • System Design: This is extremely important if you are an experienced software engineer. You need to be good at:
    • Understanding the requirements of a system
    • Designing scalable, fault-tolerant systems (Horizontal vs. vertical scaling )
  • Basics of the following:
    • Operating Systems: Threads and Processes, Thread synchronization primitives ( semaphores and mutex), Memory management ( Paging, Swapping )
    • Databases: Querying a Relational DBMS, Indexing, Primary and Foreign Key constraints, Normalisation, Internal storage
    • Networks: Network Layers, TCP, and UDP, TCP packet structure, Packet routing, Subnetting
    • Web: Cookies, Session management, Caching, Http / Https

Where to learn them:

  • Programming in a language of your choice: I will assume you know the basics of programming in at least one language. Then it boils down to a lot of practice.
  • Problem solving/Algorithms: Personally, I feel mycodeschool does a good job of teaching the basics of algorithms required. InterviewBit has topic-wise video tutorials augmented with related historical interview problems to practice on. Leetcode has a great selection of problems to build problem-solving skills. If you feel a bit more adventurous, you can check out http://www.spoj.com and Problemset - Codeforces. However, most of these problems might be too hard to qualify for a technical interview question.
  • System Design: I feel this is a great point to start with. Do try out the most frequently asked questions at System Design Interview Questions - InterviewBit.  Distributed Systems: For Fun and Profit makes for an interesting read.

Final Execution

Now that you are done with the preparation, the following few final tips might help you do well in an actual interview:



from DZone.com Feed https://ift.tt/2ICzjvK

No comments:

Post a Comment