Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I just finished a technical interview yesterday and the interviewer asked about graph theory, data structure, and traversals. This has nothing to do with iOS stuff. So I came un-prepared. This was actually for a social mobile gaming company, is this the reason why they ask these kind of stuff instead of iOS stuff? Now it seems to me that I am just overwhelmed by the materials to review and study for future interviews, I have to review the whole data structure/traversal/searching algorithm and at the same time iOS/objective-C fundamentals as well. Can someone guide me on how to prepare? Is my past experience just a special case as it was a gaming company?

share|improve this question
    
Computer algorithms, data structures, memory and time complexity, etc. are like ABC in Software Engineering. Even though there is a chance you won't use most of them, when you do you should know the basics. Remember the tile is a "Developer" "Software Engineer" then you be specific in Java or C++ or Objective-C or etc. Skim through some books and read "Cracking Codes for Interview" book. They help you to have enough knowledge to answer the questions. –  Maziyar Mar 13 at 10:37
add comment

3 Answers

Oftentimes employers don't really want "iOS developers", "unix developers" or any other sort of potential one-trick-pony. They'll be looking for good all-rounders who have a firm grasp of the basic concepts such as those you were asked about.

Usually, such talented developers have little difficulty turning their hand to any specific technology that comes their way.

share|improve this answer
1  
so how do you prepare without having to stress over information overload? –  EquinoX Oct 12 '11 at 16:43
2  
You get passionate about programming, and learn cause you want to know it, not just for an interview –  normanthesquid Oct 12 '11 at 21:31
add comment

Well, social networking applications use a lot of graph theory. They're dealing with a big graph of "friend" connections, so they've probably got a bunch of algorithms that partition that graph into groups and suggest things to users based on the groups that they're in, who their friends are, etc.

But moreso than that, graph theory, data structures, and algorithms are fundamentals of software development, just as the MVC pattern, message-passing, and memory management are fundamentals of iOS development. Just because you're interviewing based on your specialties doesn't mean you don't need to have a solid grasp of basic Computer Science concepts.

For any interview, I would want to have a solid understanding of:

  • The basics of software development (design patterns, object-oriented design, development methodologies, big-O notation, data structures, graph theory, etc.)
  • Any technologies that are specific to the position (in this case, Objective-C, the iOS SDK, XCode, etc.)
  • Domain-specific concerns in the problem space that the position deals with (in this case, I would at least read the Social Network article on Wikipedia, as well as the Network Theory article, and probably some of the linked sources.)
  • The history of the company I'm interviewing with, existing products that they've created, the backgrounds of their principals, and their main competitors.
share|improve this answer
add comment

You prepare for this type of interview by not just knowing your niche specialty, or any particular subject such as graph theory, but by studying the entire broad field of encompassing software engineering, computer science, general design methodology, problem solving skills and more. This could take years, not just a few days of cramming.

These types of interview questions are usually statistical spot checks of a random sub-topic from the above broader areas to see if you are the type of person who has the intellectual curiosity and who has put in the time to learn, and is not just a niche specialist who may or may not be able to morph with changing technologies and markets.

So, whatever random sub-topic someone crams on is likely to not be part of the next interview question on their general professional knowledge.

The solution? Keep learning.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.