You are on page 1of 6

Interview Preparation Tips

(Software Engineer)

Topics & References


1. C programming
o Basics
o Bitwise operators and Bit manipulation
o Structure of a C program
o Compiler options
o Pointers
o Linker / object code
o Assembler
o Memory Management
o Basic memory sections (stack, heap etc.) in a C program
o Static vs Global vs Local variables
o Volatile keyword
o Data types and modifiers
o Memory allocation – static vs dynamic
o Common mistakes in programming

Books: C Programming Language by Brian W. Kernighan and Dennis M. Ritchie


Let us C by Yashwant Kanetkar
Test Your C Skills by Yashwant Kanetkar

Videos: https://nptel.ac.in/courses/106105151/

Specific topics and references:


 Bit manipulation : https://graphics.stanford.edu/~seander/bithacks.html
 Pointer arithmetic, Significance of Pointer arithmetic in memory addresses.
 Compiler optimization and use of keywords - volatile, register
 Memory representation of floating point numbers; Floating point standards.
 Common pitfalls in dealing with floating point and double variables.
Sections in memory: Stack, Heap, BSS; Dynamic memory allocation

2. Operating Systems
o Inter Process Management
o Mutual Exclusion
o Basics Mutex
o Deadlocks
o semaphore
o processes
o Cache and MMU
o Scheduling
o Threads
o Stacks & Heaps
o Device drivers
o Linux kernel
o Unix / Linux shell

Book: Operating System Concepts by Galvin

Videos: http://nptel.ac.in/courses/106106144/11

Specific topics and references:


 Binary semaphore and mutexes
 Interprocess communication
 Concept of virtual memory; Paging and framing.
3. Data structures and algorithms
o Time and Space complexity
o Searching and Sorting Algorithms
o Linked list, stack, Queue
o Dynamic programming
o Iteration vs recursion
o Graphy theory and related algorithms

References: http://www.geeksforgeeks.org/

Videos:

 https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-
algorithms-sma-5503-fall-2005/video-lectures/
 Coding Made simple: https://www.youtube.com/channel/UCZLJf_R2sWyUtXSKiKlyvAw

4. Embedded Systems
o Assembly programming for ARM or x86 architecture
o Interrupts and exceptions
o Communication Protocols: I2C, SPI , UART
o Memory Management
o RISC vs CISC
o Cache operations
o DMA
o MMU
o Clocking
o SoC architecture – bus topology, interconnects, memory, peripherals
o Timers
o Data transfer protocols : USB, PCI
o Memory map and memory layouts
o Mapping between C program to the memories
o Device boot-up sequence and operation

Ref: https://barrgroup.com/Embedded-Systems/How-To/Articles

Book: -> ARM system development developer's guide by Andrew N Sloss


-> R Gaonkar 8085 microprocessor

Specific topics and references:


 Interrupts: Re-entrant code vs Non Re-entrant code.
 Computer architecture – CISC and RISC; Harvard and Von-Neumann architectures.
 Functions and stacks in RTOS; Stack growth and common pitfalls in handling stacks.
 Reference and case studies:
 https://embeddedgurus.com/state-space/2014/02/are-we-shooting-ourselves-in-the-foot-
with-stack-overflow/
 https://embeddedgurus.com/stack-overflow/2012/12/2012-explained-toyota/

5. Digital Signal Processing


o Basic of image data storage
o Basic operation of images e.g. filtering, rotation, histogram.
o FIR vs IIR filters. Low pass vs high pass filters
o Sampling theory concept.
o Basics 2D, 3D geometry. Equation of line, plane in various co-ordinate system

6. Miscellaneous
o Object Oriented Programming
o Boolean algebra and Digital Electronics (at a very high level)
o Knowledge (Experience, Academic or projects) on Python and Perl is a plus
o Version Control System - Git

Books: -> Thinking in C++ by Bruce Eckel (v ol. 1 and 2)

Websites

o https://www.hackerearth.com/practice/codemonk/
o http://techinterview.org/
o http://www.spoj.com/
o https://www.codechef.com/

CV tips
- Make a position specific CV, highlight the projects, internships and courses done which are related to the
position you are applying for.
- Go beyond internship/project description: Tell about learning experiences from the project and your
impact on the team you worked with. For example, don’t just write, “worked on face recognition”. Specify
something like “used codebook method for background subtraction which increased the accuracy of the
system by 25%”
- Mention relevant papers/publications/ conferences
- Mention subjects of interest to focus the interview on prepared topics
- One should mention a project’s team-size and what were his/her specific contributions in it
- Include any experience in SW/Embedded in activities beyond courses (Electronics clubs etc.)

Personal Interview tips


- Think out loud while solving any question. The Interviewer judges you on the approach and not
the answer
- Pay attention to question and think before proceeding, it is okay to take few seconds before
answering if you are not sure
- If you don’t know the answer tell them directly, if not sure mention that before answering
- There might be questions on areas that you have not worked on. That does not mean you
completely give up and not answer. Try answering the questions based on the hints provided by
the interviewer. The interviewer is trying to see if you would be able to solve a question logically
even though you do not have a background on the topic.
- Practice writing the algorithms on a paper rather than PC. It's very rare that you will be asked to code
actual problem, you will just have to write the pseudo code on a paper during an interview. Don’t
memorize in mind, there’s a lot of gap when it actually comes down to writing it and memorizing it.
- The biggest tip is to say whatever comes to your mind. Don’t be calculative or hesitant. If you
like to do something and TI offers you that opportunity in the field, then say it right there!! You
won’t get a second chance to explain why you want to join TI.
- When doing projects using readymade SW tools, students should be aware of how the tool
works internally, atleast conceptually. For Ex: How does OS do task scheduling, How is
semaphore implemented, How is a specific function implemented in OpenCV etc.
- One shouldn’t waste time in getting the syntax of the code correct, instead exhibit the logic of
the code, which the interviewer is more vigilant on
- If you have hit a roadblock, don’t be afraid to go back to square one and start afresh on a new
path
Interview experiences

Mohammad Faiz Abbas Rizvi, Software Engineer


RVCE, Bangalore

The discussion began with questions about my projects. The interviewers


wanted to get insight into my approach to the problem. It was followed by
programming puzzles, questions about C program execution, debugging
tools and assembly programming. In places where I got stuck, I was
provided hints.

Pratiyush Prakash, Software Engineer


IIT Kharagpur

The interview started with recursion questions and how to solve those
recursion with DP, in Data Structure. Gradually the discussion progressed to
Binary Search tree node traversal, Sorting of the nodes in BST (Binary
Search Tree) etc. The interviewers were helpful and wanted to judge on the
approach I took, rather than the outcome. They also provided hints
directing me to the right direction.

Sachin Purohit, Software Engineer


IIT Kharagpur

The discussion began with questions about my projects. Then they asked
me to write a code in c binary tree node and traversal. It was followed by
questions about compiler, assembly and memory stack etc. The interview
was more like a discussion.
Ritvik Sadana, Software Engineer
NSIT Delhi

The biggest tip is to exhibit that comes to your mind, as the interviewers
are interested to know your approach in solving a problem. Don’t be
calculative or hesitant! There would be ample hints that will be provided
during interviews. If you like to do something and TI offers you that
opportunity in the field, then grab it right there!! Prepare for the concepts
and be confident!

You might also like