- Does the project that I'm doing in my final year need to be excellent? If so, what kind of project to do? And how do you say that the project is excellent or not?
The most important thing is the overall mark you get on your degree but within that the project is probably the most significant piece of work. This is because it's usually the largest individual thing you'll do at university and because it usually comes at the end of the course so should represent everything you've learned during your time at university.
In terms of what sort of thing you should do, think about the following things:
(1) What sort of project are you going to get the best grade for? It's harsh but that's probably the main thing.
(2) What's most relevant to the sort of job you want to get? If you want to be a web programmer there's no point in doing an embedded systems project. If you want to work on enterprise systems in your job, pick something that uses relevant technologies.
(3) Pick something you're interested in. It's going to be a lot of work so you might need that interest to keep you going.
- Writing the code is very fun and serious at times. But the code should have a good algorithm?
As an interviewer conversations often don't go to a detailed algorithmic level. What I want is that you have a really clear understanding of what you've done and why you did it that way and, most importantly, that you actually delivered something at the end.
Software in a commercial environment is about solving problems and delivering solutions - that's what you need to be able to demonstrate.
- And mostly in any software companies interview, what kind of question they ask?
At a graduate level it will vary massively based on what you've studied. My basic rule is if you claim to have studied it, you'd better be able to answer questions on it and display some knowledge of it. Claim to have taken a Java course? Great but don't then claim that you didn't really do much Java when you start getting asked how you'd do something in Java
What I'm looking for overall is intelligence, that you had some genuine interest in your courses and learned something from them, and that you've got some level of self awareness (if you claim to know everything I immediately turn off, it's a sign that you really don't know what you're talking about because as a graduate you know very little).
- Not but not the least, mastering in any particular language speaks in interviews?
Do you mean programming languages or spoken languages?
In terms of programming languages, obviously that will depend on the job. Generally I'd say have a solid understanding of either Java or C# is probably a good start but if you want to be an embedded programmer that will obviously be less relevant. As I said above, for me the main thing is if you claim you've studied it or know it, then you need to be able to demonstrate that and not start making excuses that it was just one short course and so on when you're asked about it.
In terms of spoken languages - you need to be fluent in the language that company uses. Programmers must be able to communicate, it's perhaps the most important skill. Give me an average programmer with good communication skills over a great programmer with poor communication skills every time.
If that language isn't English then knowing English as well as that language is never going to hurt.