DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
  1. DZone
  2. Culture and Methodologies
  3. Career Development
  4. How Do I Prepare for a Software Engineering Job Interview?

How Do I Prepare for a Software Engineering Job Interview?

Check out these quick and fast tips for preparing and performing well in a software job interview. Best of luck!

Anshuman Singh user avatar by
Anshuman Singh
·
Jun. 30, 18 · Opinion
Like (3)
Save
Tweet
Share
5.79K Views

Join the DZone community and get the full member experience.

Join For Free

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:

  • Avoiding misunderstandings: A lot of candidates do badly in a programming interview because they start solving a problem different than the intended one. Make sure you spend 2-5 minutes asking the interviewer about corner cases on the problem. This will ensure that you have understood the problem correctly, and you understand corner cases to take care of in your solution.
  • Code structure: This is not just applicable to interviews. Spending some time to think about how you would structure the code can save you coding and debugging time.
  • Communicate: You should be able to communicate your thoughts to the interviewer. The interviewing process (especially the system design round) is mostly bouncing around ideas, and explaining to them your thought process.
  • Company fit: Make sure you do your research about the company prior to applying for a job there. Most companies would want to hire candidates who feel passionately about the work the company is doing. Avoid asking questions which you could easily find on Google. Think about exciting additions you could make to the company product/service if you had your way at the company.

The above-mentioned process might be time-consuming. However, it would increase your chances multifold if followed correctly. All the best!

Software engineering Interview (journalism) career

Published at DZone with permission of Anshuman Singh. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Top Authentication Trends to Watch Out for in 2023
  • SAST: How Code Analysis Tools Look for Security Flaws
  • A Simple Union Between .NET Core and Python
  • Understanding gRPC Concepts, Use Cases, and Best Practices

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: