What book should I study before a new job.

O

opistobranchia

I know this gets asked all the time but.....
I am a fresh grad. I have taken a year of java and 1/2 year of C++ and
OO Design and Analysis. I have strong Java skills and I have done
projects in c++. But I am pretty sure that I am getting this job as a
java/C++ software engineer. I want to put out a good impression since
it is with a real good company and a great opportunity for me with
real smart people. What book do you rec. that I study before?

I am currently reading C++ Gotchas: Avoiding Common Problems in Coding
and Design.

Thanks, looking forward to your replies.
 
B

benben

Congret for your job you found! Which company is that if you don't mind
telling us?

For coding and design, I surely learnt a lot from Code Complete 2nd Ed.

For avoiding writing Java in the (More) Effective C++/STL are very helpful
(any a joy to read).

For a lot of random (but valuable) articles get a load of C++ Users Journals
(prolly can be found in local library...).
 
G

Gianni Mariani

opistobranchia said:
I know this gets asked all the time but.....
I am a fresh grad. I have taken a year of java and 1/2 year of C++ and
OO Design and Analysis. I have strong Java skills and I have done
projects in c++. But I am pretty sure that I am getting this job as a
java/C++ software engineer. I want to put out a good impression since
it is with a real good company and a great opportunity for me with
real smart people. What book do you rec. that I study before?

I am currently reading C++ Gotchas: Avoiding Common Problems in Coding
and Design.

When I interview, I look for a solid basic understanding of sofware
development in these areas.

1. Basic computer science
2. Experience with collaboration tools (CVS, subversion)
3. Build experience (make, ant etc)
4. Knowledge of some standard libraries and tools
5. Evidence of "passion" for software development

As for basic computer science, there are a number of very basic things
that very unfortunately, many programmers just don't know.

e.g.
a)
int * p;

what is (p+1) ?

b) ( !a && !b ) == !( a || b )

c) System design issues - reference counted objects and cyclic reference
counts.

d) What is a sufficient condition for susceptability to deadlock.

etc etc
 
O

opistobranchia

When I interview, I look for a solid basic understanding of sofware
development in these areas.

1. Basic computer science They did that
2. Experience with collaboration tools (CVS, subversion)
Got CVS export/import checkout tagging and branching
3. Build experience (make, ant etc)
Both but ant usually done for me by IDE in java. Used make before but
would only know real basic questions. I will review that too before.
4. Knowledge of some standard libraries and tools
I know iterator, list, stack, string, vector sstream off the top. But
will review this as well.
5. Evidence of "passion" for software development
That is me, and I let them know that.
As for basic computer science, there are a number of very basic things
that very unfortunately, many programmers just don't know.

e.g.
a)
int * p;

what is (p+1) ?
This is an error since p does not point to anything, it must point to
something first. However is p pointed to an array int object then it
would now point to the next item in the array.
b) ( !a && !b ) == !( a || b )
This is demorgans law. We can use boolean algebra or a truth table to
show that they are both equal
c) System design issues - reference counted objects and cyclic reference
counts.
Used for garbage collecting. When keep track of the total references
to a object. When the count is zero it is ready to be deleted. Cylic
reference count is the count of a ref b and also b ref a.
d) What is a sufficient condition for susceptability to deadlock.
Threada has a lock on resource1, and is waiting on resource2 before it
releases its lock on resource1. Threadb has a lock on resource2 and
is waiting for threada or is waiting on resource1 before is releases
resource2. =Deadlock since everybody needs the other to finish

Would that be good? Do you have some more interview questions?

Thanks for the tips on the books too. I am liking Effective C++ Third
Edition 55 Specific Ways to Improve Your Programs and Designs. I also
subcribe to C++ users journals so I have the last 2 years laying
around. That is good to know, I will start reading more of the
articles.
 
G

Gianni Mariani

opistobranchia wrote:
....
That is me, and I let them know that.

I'd be looking for evidence: i.e Did you write any open source code ?
Are you a member of an open source project? Have you filed any bugs on
open source projects ? Do you have any pet project you have worked on ?
Have you answered any questions on comp.lang.c++ ? Do you attend ACCU
meetings (or other associations or UGs) ? Which journals do you read ?
This is an error since p does not point to anything, it must point to
something first. However is p pointed to an array int object then it
would now point to the next item in the array.

50% of people I interview (phone screen) do not know that.
This is demorgans law. We can use boolean algebra or a truth table to
show that they are both equal

Sure, I'm still astounded to see lots of code that looks like :

if ( !( !a && !b ) ) .... :-( // some of which I wrote myself :-((
Used for garbage collecting. When keep track of the total references
to a object. When the count is zero it is ready to be deleted. Cylic
reference count is the count of a ref b and also b ref a.

So what happens when there is a cyclic reference using reference counts?
Threada has a lock on resource1, and is waiting on resource2 before it
releases its lock on resource1. Threadb has a lock on resource2 and
is waiting for threada or is waiting on resource1 before is releases
resource2. =Deadlock since everybody needs the other to finish

d) What is the minimum sufficient condition for susceptability to deadlock.

I mis-wrote that - the *minimum* sufficient condition. You wrote a
single condition. Or said in another way: "If I have N resources and T
threads, what do I have to guarentee *not to do* to avoid any
possibility of deadlock."

Would that be good? Do you have some more interview questions?

Not handy. There are plenty of web sites - some of them have very very
poor questions (where some of the questions are plain wrong). Actually,
the FAQ for comp.lang.c++ is excellent.
Thanks for the tips on the books too. I am liking Effective C++ Third
Edition 55 Specific Ways to Improve Your Programs and Designs. I also
subcribe to C++ users journals so I have the last 2 years laying
around. That is good to know, I will start reading more of the
articles.

Good luck !
 
E

Earl Purple

Gianni said:
I'd be looking for evidence: i.e Did you write any open source code ?
Are you a member of an open source project? Have you filed any bugs on
open source projects ? Do you have any pet project you have worked on ?
Have you answered any questions on comp.lang.c++ ? Do you attend ACCU
meetings (or other associations or UGs) ? Which journals do you read ?

You sound like one who is overly strict and would never have given
yourself your first job. It does, of course, depend on the role you are
recruiting for but you seem to expect too much.

By the way, I have never taken part in any formal open-source project
that I have posted code for general use and answered many questions
here and on CodeGuru.

I don't subscribe to any journals.
So what happens when there is a cyclic reference using reference counts?

Then of course your reference counting will never go down to 0 and
you'll get leaks. It's good design that will ensure that does not
happen. Good design does not mean having played with the right CASE
tool for the sufficient amount of time. It means having brains and
using them.
d) What is the minimum sufficient condition for susceptability to deadlock.

I mis-wrote that - the *minimum* sufficient condition. You wrote a
single condition. Or said in another way: "If I have N resources and T
threads, what do I have to guarentee *not to do* to avoid any
possibility of deadlock."

Again, good design. It's easy enough to say you must obtain resource A
before B etc. You can possibly even enforce that. You should implement
RAII properly.

But if the interviewee doesn't know what RAII means then prompt him
because he may have been using it perfectly for years without using its
name. I have failed many interviews for not knowing the flashy names
for techniques I have been using for years (particularly design
patterns).
Not handy. There are plenty of web sites - some of them have very very
poor questions (where some of the questions are plain wrong). Actually,
the FAQ for comp.lang.c++ is excellent.

Yes and I know it very well. Perhaps I should subscribe to the journals
too. Though jobs that require C++ and little else are few and far
beyond.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,013
Latest member
KatriceSwa

Latest Threads

Top