Linux Based C++ Programming

Joined
Jun 19, 2005
Messages
2,200
Hey guys, I have an interview for an internship on Thursday for a company that uses C++ and Linux. When I spoke to the recruiter at the job fair, I was honest and told them that I didn't have much experience with the Linux OS. Since then, I have downloaded Ubuntu and fooled around with it, but nothing in terms of programming.

So my question is, what are the important things I need to know? Which IDE is most likely to be used in a corporation running Linux? What commands do I need to memorize?

Basically I think I need a crash course in writing/compiling C++ programs under Linux, so that I am somewhat knowledgeable during this interview.

Pointers/advice greatly appreciated! Thanks guys. :D
 
So my question is, what are the important things I need to know? Which IDE is most likely to be used in a corporation running Linux?
That depends on what you're going to do on the job and the second question might have been a good thing to ask during the interview. :p All IDEs are not the same, but they share many of the same tasks. If you feel comfortable in one, you should be able to pick up another. Eclipse might not be a bad guess, but it could be any other OSS or commercial IDE.

Basically I think I need a crash course in writing/compiling C++ programs under Linux, so that I am somewhat knowledgeable during this interview.
There are online free tutorials, and of course books. It's kind of hard to make any recommendations since you haven't said what you'll be working on in C++ under Linux.
 
The essentials are:
-knowing how to use gcc/g++
-knowing how to write makefiles
-knowing how to make
 
If you're doing linux/unix development it's almost a certainty that you as the developer decides on editor/IDE, unless maybe they're doing pair-programming. 99% of the time this comes down to vim vs emacs. Pick an editor and learn it well. There's nothing more humbling than being asked to write some code and not knowing how to save or copy and paste!

They're almost certainly using GNU make for builds and GCC as the compiler suite.

Manually compile and link some simple programs you write, then dabble with Make while reading a tutorial.

You'd be expected to know how to find files (man find), search in files (man grep), globbing, regular expressions, using to standard unix tool chain (less, head, tail, cut, sed, wc, cat, sort) and how to combine them using pipes and redirection to extract and massage data.
 
the last poster gave the best reply so far. very informative and very concise.

while there certainly are more IDE's than vi/emacs (is vi technically an IDE?), i think you'll find that these are the most commonly used still.

i would add that if you're going to be doing c++ programming, a tool called electric fence and be invaluable at times. additionally, and good linux c/c++ guy is going to be well-versed in GDB.

honestly, there's no possible way you can expect to become familiar with all of these tools in less than a week... if i were you, i would spend my time brushing up on my C++ (C++ OOP, the STL, memory management, scope rules, pointers) and learning the basics of interprocess communication. these are the two big things the internship will likely require. the rest are simply tools that you learn by using. if i was hiring an intern, i would be much more impressed that they can do the tasks i just mentioned that tell me the in's and out's of the make functionality.
 
Aren't algorithms and debugging skills more important than the tools?
 
I agree with the previous two posters. Having tools might make you a more efficient programmer in terms of getting a task done, but it won't necessarily make you a better programmer. Focusing on the language fundamentals and even non-language things like algorithms, as mikeblas said, will make you better off. Learning to use tools is something you can pick up with on the job experience.
 
> Aren't algorithms and debugging skills more important than the tools?

You think? :-\

In my answer I assume the OP feels confident in his programming skills, since he only expressed unfamiliarity with programming under linux, not with programming in general. Yes, you learn the tools as you go, but if you want an edge, those are the things I'd look at.

With five days to go it's a bit late to start worrying about general problem solving skills and algorithms if you ask me.
 
With five days to go it's a bit late to start worrying about general problem solving skills and algorithms if you ask me.

I disagree. I wouldn't expect an intern to know tool X. I WOULD expect them to know enough theory, implementation concepts, and general problem solving skills to begin on a job the first day or two there.

It's too late to begin a study of either one... at this point, you pretty much have all that you're going into the interview with... but if i had to choose how i'd spend my time for an interview at a linux shop, i'd study the language, interprocess communication, and the basic solutions to the types of problems that the organization attempts to solve.

if you have memorized every meta key in emacs, know every GDB command, and can write makefiles like no other intern could ever hope to, and have a good understanding of how to program but know little about design, how to decompose very complex problems into smaller problems, and also know little about the foundational data structures and algorithms to solve the problems i worked with, as an interviewer i would pass you up in favor of someone who has no experience with these tools but who can demonstrate to me that they know the basic solutions to the problems the team faces. they should also know the advantages and disadvantages of using these data structures and algorithms. if they can think of improvements, then that is all the better... AFTER these questions, i start asking about tools.
 
With five days to go it's a bit late to start worrying about general problem solving skills and algorithms if you ask me.

I am confident with my programming skills. I learned from the ground up two different times, once with C++, and once with Java. I pretty much went through two different Computer Science curriculums, one in a school that was all C++, and another that was all Java. I did however go much further with Java, since the C++ school was a two year curriculum. I ended the C++ curriculum with data structures, but the Java curriculum provided experience with larger scale applications such as the game of Risk and various internet/database apps (student registration system and an ebay replica). Granted, none of those are relevant to this position I suppose, but the theory behind them and the knowledge I gained from them is what counts.
 
Back
Top