"I want to be a software engineer/programmer, how should I prepare?" - common question asked by folks who are fresh graduate or studying CSE. Top level software companies seek for graduates with good programming skill for such kind of posts. Hence one should start programming at the very beginning of their study in CSE. For this, one should give importance on increasing problem-solving skill with the assistance of popular virtual online judge like UVa, Codeforces, LightOJ. To start with online judge, I’ll recommend to start with the easiest UVa problem no# 10071 titled Back to High School Physics . As because it’s easy to solve, one can easily cope with the online judge environment without getting disappointed.
Whatever, Today’s article is all about the subject and topics that software companies mostly prefer for the recruitment test for ‘Software Engineer/Programmer’ post. For entry and mid-level – Basic Programming, OOP, Data Structure, DBMS, Software Engineering are the most common subjects to touch in. These are the topics that needs a better focus:
Basic Programming: You need good programming and problem-solving skill for basic programming which I mentioned earlier in my writing. As you may be asked to provide output or solve tricky problems which requires good knowledge in programming basics. Besides, you may face tricky code segments to find the output of. This requires basic idea about Data Type, Variables and its Scope, Function, Array, Token, Pointer, Operators. Regular practice of programming will get you the basic idea of these by default. So those who were not in practice of programming in a while need a look over these perfectly.
OOP: Basic concepts of Object Oriented Programming or OOP is needed not only for facing written or viva but also for performing better in the workspace as a Software Engineer/ Programmer. Topics in OOP that requires clear understanding are – Class, Object, Basic OOP Principles*, Public-Private-Protected Function*, Abstract Class*, Static* Class, Method and Variable, Virtual Function, Friend Function, Function Overloading* and Overriding*, Exception Handling etc.
Here * marked topics need a bit more focus for clear understanding so that you can make precise examples to explain properly.
Data Structure: You may find some logical questions from Data Structure. Important topics are – Linked List, Stack, Queue, Tree. In this scope, you may be asked to implement linked list by writing short code. Writing program to implement Stack and Queue is often found besides asking to find the last state of Stack or Queue after a set of Push and Pop operation. Tree terminologies and some mathematical problems regarding trees can be found from Tree.
DBMS: Database Management is another important subject for Software Engineering/ Programmer post. The must-see topics from DBMS are – E-R diagram/model, Key, Relationships, Indexing, Normalization (e.g: 1NF, 2NF…), SQL Query (Joining, Searching, Sorting, Aggregate Functions…). You may be asked to draw an E-R diagram basis of an organization’s financial activity or may be the dependencies or relation with its clients. Besides it’s often asked to write SQL queries based on sample database tables.
Software Engineering: You may find versatile questions from this segment. A most common question from this segment is explanation of steps of SDLC. You also need a better understanding about Design Pattern (e.g: MVC), Software Development Methodology (e.g: Agile, Waterfall…), Software Testing (e.g: Blackbox, Whitebox, Unit Testing…), Software Security (e.g: SQL Injection, CSRF token for web apps).
So, these are the major topics that you need to give priority to experience a better Software Engineer/Programmer interview. Type of questions may vary depending on the company ethics. For example, good software companies focus more into problem solving skill rather than to other facts. On the other hand, you may find some companies that will ask you about your live projects only. I’ll recommend freshers to avoid companies that ask only for live projects to the candidates of an entry level post.
That’s all for today. If you have queries or things you feel to add, feel free to leave a comment. Thanks for reading.