I'm applying for my first c++ job and have a interview; they say most people fail at "algorithms" and "data structures". Having essentially self-taught myself C++ and not taken a computer science degree, I don't really know what to expect. So, are there any computerscience majors who can tell me what to revise?
So far, I have covered : -bubble, insertion, selection, shell, heap, binary, merge and quick sorts; -searches based on traversals of trees, A*, B*; -max, binomial, fibbonachi heaps; -binary trees, red-black, AVL, splay; -tries; -B-trees, B*trees; -linked lists, doubly linked lists, skip lists; -cyclic list indentification algorithms; -random number generation; -hash tables.
hm, im no computer science major yet, but as far as i know you have listed all the basics.
i've posted this in another c++ blog, but i will say it again, learn design patterns. I guess they will ask you how the Singleton pattern works, what in the hell is the Observer pattern and so on. And, even if they dont ask it, you will be amazed with the ease it will bring you for coding your systems in the future.
just an important note: im still very unexperencied with the real world jobs, so dont take my 'advice' as basis.
My advice to you is just to make sure you can explain things like linked lists and heaps in 'kid language.' Companies will definitely ask you simple stuff like that before asking you for on the spot algorithms. A lot of people might know how a linked list or hash table works, but they have trouble articulating what they know. As for being prepared for the algorithmic tests they may give you, i think you just gotta be able to think fast and come up with efficient code and a solid concept behind your thinking process.
awesome! I was completely unaware of design patterns (although i might have been loosely following one without knowing) so, I'll get those in my arsenal. although it doesn't fit into algorithms and data structures, I've also been looking at development methodologies such as extreeme and agile, which seem quite useful. Thanks!
edit: cheers, fluffy! makes me feel a bit more confident.
Unfortunately, you might be interviewed by someone who DOES have a degree in computer science. So regardless of the functionalities of these things in practice, you should always send as much time as you can learning them.
TBH, it looks like you're already pretty much set. You know *way* more algorithms than will come up on an interview. B*? Are you kidding me? I bet your boss will scarcely have heard of it.
Design pattern stuff is nice though. Singletons, visitors, observers, et cetera come up fairly often. It's mostly common sense stuff that you probably "invented" yourself and have been using forever if you taught yourself, but it's nice to formalize and learn the names.
No sweat though brah. Just remember, 99% of your competition is terribads.
I'm currently majoring in Computer Science and just took a Data Structures and Algorithms class last semester. I think the algorithms you've covered are most of the important ones. The Data Structures that we covered were: -Lists (Ordered and Unordered) (Array based, singly linked and doubly linked) -Stacks (Array and linked) -Trees (Binary Search) -Hash Tables (You should understand how hash functions work or at least what the point of one is) -Heaps -Graphs (Weighted graphs can be useful)
We also did some more simple things like making our own string class and managing our own memory using dynamic allocation and the memcpy function. You should also understand template classes very well as all of these data structures can benefit from them.
If you have any questions on these things let me know. (I still have all the code for these on my computer)
At first you will look at the pages with lots of drawing and figures and will think 'wtf? this is a childrens book...', but dont be fooled, this is a great book.
I'm surprised someone can learn C++ by himself and reach a level that would get him a job interview without having any degree, I always assumed this kind of approach had it's limit.
That said, I don't know anything about programming, so good luck,